Mostrando las entradas con la etiqueta Preguntas. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Preguntas. Mostrar todas las entradas

23 agosto, 2021

Solucionar la excepción: Unrecognized token 'com': was expecting ('true', 'false' or 'null')

Obtienes la siguiente excepción al querer invocar un método de de un servicio rest

Unrecognized token 'com': was expecting ('true', 'false' or 'null')

Talvez la siguiente solución pueda ayudarte a corregirlo.

20 agosto, 2021

¿Cuáles son las especificaciones y sus implementaciones para crear un servicio web en java?

Web Service es una tecnología que permite que las aplicaciones se puedan comunicar entre sí y así poder intercambiar datos en diferentes plataformas y utilizando diferentes lenguajes de programación. La implementación de esta especificación técnica se puede implementar de diferentes formas, mediante el uso del protocolo HTTP basado en XML (SOAP) o usando JSON (REST).

Ahora que sabemos que las dos formas anteriores se pueden usar para la comunicación, entonces necesitamos describir y estandarizar las dos formas anteriores. Y este trabajo estandarizado lo realizó Sun. Por lo tanto, existen dos especificaciones en Java para la creación de servicios web: JAX-WS y JAX-RS.


18 agosto, 2021

Solucionar la excepción: JMSException: Failed to build body from content. Serializable class not available to broker

¿Obtienes la siguiente excepción al querer ejecutar tu clase consumidora JMS?

Exception in thread "main" javax.jms.JMSException: Failed to build body from content. Serializable class not available to broker.

17 agosto, 2021

¿Cuál es la diferencia entre JAX-WS, Axis, Axis2, CXF y Metro?

Cuando empezamos a aprender sobre servicios web de una forma más completa y detallada, al inicio podemos percibir cierta complejidad; y aunque el concepto de Web Service es relativamente simple, esa complejidad existe debido a la gran cantidad de acrónimos para designar la enmarañada de tecnologías que componen el universo de los Web Services, especialmente en el lenguaje de programación Java. 


04 agosto, 2021

Cuál usar, ¿Standar Http Client de Java 11 o Apache HttpClient del proyecto HttpComponents?

Usuario de facebook

¿Buenas tardes, me podría explicar que librería debo importar en este video: https://youtu.be/Vvq7ZiazGws?

Respuesta

Java 11 ya viene con HttpClient incluido (java.net.http). aunque es una versión estándar. El paquete java.net proporciona una funcionalidad básica para acceder a los recursos a través de HTTP.  Por otro lado, Apache HttpCliente del proyecto HttpComponents (org.apache.hc) es una versión extendida y solida. En el video se utilizó el Standar Http Client que viene en Java11. Si va a usar el Apache HttpClient debes descargarla de la página de Apache o desde Maven. La última versión es la 5.1.  https://hc.apache.org/downloads.cgi

Puedes revisar el siguiente enlace para más información: https://www.dariawan.com/tutorials/java/java-11-standard-http-client-vs-apache-httpclient/

24 julio, 2021

Solucionar la excepción: provider com.sun.xml.internal.ws.spi.ProviderImpl not found

Obtienes la siguiente excepción al querer invocar un método de tu servicio WDSL:
 
Exception in thread "main" javax.xml.ws.WebServiceException: Provider com.sun.xml.internal.ws.spi.ProviderImpl not found
at javax.xml.ws.spi.FactoryFinder$1.createException(FactoryFinder.java:34)
at javax.xml.ws.spi.FactoryFinder$1.createException(FactoryFinder.java:30)
at javax.xml.ws.spi.ServiceLoaderUtil.newInstance(ServiceLoaderUtil.java:76)
at javax.xml.ws.spi.FactoryFinder.find(FactoryFinder.java:111)
at javax.xml.ws.spi.Provider.provider(Provider.java:66)
at javax.xml.ws.Service.<init>(Service.java:82)
at edu.aprendec.facilito.ws.server.CalculadoraImplService.<init>(CalculadoraImplService.java:42)
at edu.aprendec.facilito.main.Main.main(Main.java:9)
Caused by: java.lang.ClassNotFoundException: com.sun.xml.internal.ws.spi.ProviderImpl
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:606)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:168)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
at javax.xml.ws.spi.ServiceLoaderUtil.nullSafeLoadClass(ServiceLoaderUtil.java:63)
at javax.xml.ws.spi.ServiceLoaderUtil.safeLoadClass(ServiceLoaderUtil.java:96)
at javax.xml.ws.spi.ServiceLoaderUtil.newInstance(ServiceLoaderUtil.java:74)
... 5 more


Solución:

Descargar  la librería de Apache CXF y configúrala en el eclipse como variable de entorno:

Agregar la librería al build path del proyecto. Podemos agregar todas las librerías manualmente o configurarla como variable de entorno.



23 julio, 2021

Solucionar la excepción: The ServiceClass object does not implement the required method in the following form: OMElement

¿Obtienes el siguiente error al invocar a tu servicio desde el cliente?

Exception in thread "main" org.apache.axis2.AxisFault: The ServiceClass object does not implement the required method in the following form: OMElement suma(OMElement e)

at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:508)

at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:368)

at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:414)

at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:225)

at org.apache.axis2.client.OperationClient.execute(OperationClient.java:150)

at edu.aprendec.facilito.ws.server.CalculadoraImplStub.suma(CalculadoraImplStub.java:178)

at edu.aprendec.facilito.main.Main.main(Main.java:14)


Solución

Dirigirse al archivo service.xml dentro del proyecto que contiene el Web service y actualizar la la siguiente porción de código resaltada en negrita.

<service name="CalculadoraImpl" >
<Description>
Please Type your service description here
</Description>
<messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
<messageReceiver  mep="http://www.w3.org/2004/08/wsdl/in-out"  class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
</messageReceivers>
<parameter name="ServiceClass" locked="false">edu.aprendec.facilito.ws.server.CalculadoraImpl</parameter>
</service>


por

<service name="CalculadoraImpl" >
<Description>
Please Type your service description here
</Description>
<messageReceivers>
<messageReceiver mep="http://www.w3.org/ns/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
<messageReceiver  mep="http://www.w3.org/ns/wsdl/in-out"  class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
</messageReceivers>
<parameter name="ServiceClass" locked="false">edu.aprendec.facilito.ws.server.CalculadoraImpl</parameter>
</service>

Reiniciar el servidor y probar de nuevo el cliente.

09 julio, 2021

Crear Web Service SOAP en eclipse usando JAX-WS/Apache CXF y Apache Tomcat

¡Buen días, coders! Hace unos días, un seguidor me envió una pregunta que quiero compartir con ustedes.

Pregunta de un seguidor:

Buenos días, estoy siguiendo un video tutorial para crear un servicio web soap en eclipse usando JAX-WS, he seguido todos los pasos pero tengo problemas ya que eclipse no reconoce las librerías que se usa en el video. He seguido todos los pasos al pie y nada. Te dejo el tutorial. https://youtu.be/N9yPGy2S3Bo y espero que me puedas ayudar.

Respuesta.

Es porque estás usando Apache Tomcat. Si usas Tomcat, primero se debe descargar las librerías de Apache CXF y luego configurarla al eclipse. Para ello, tienes que ir a Windows/Preferences/Web Service/ CXF 2.x/. Aquí debes añadir el framework de Apache CXF que debes descargarlo de aquí (http://cxf.apache.org/download.html) y descomprimirlo. Entonces, en la ventana de Preferencias de Web Services, se mostrará el Apache CXF agregado como una librería de entorno. Deberás marcarla para que el entorno este preparado para trabajar con JAX-WS. Después, tienes que proceder a agregar la librería a tu Dynamic Web Project, para ello, debes hacer clic derecho sobre la raíz del proyecto / Properties / Java Build Path y dirigirte en la pestaña “Libraries”. Aquí se debe presionar el botón “Add Library…” y seleccionar “CXF 2.x Runtime”, se debe confirmar que la versión de CXF sea la que hemos escogido, y por último, presionamos “Finish”. Con esto ya puedes proceder a crear tu interfaz y tu clase, y eclipse reconocerá los imports que realices. Una vez creado tu interfaz y tu clase que servirá como web service, lo que debes hacer ahora es crear el Web Service utilizando el asistente, para ello, debes ubicarte sobre la clase, le das clic derecho, te pones sobre la opción “Web Services” y finalmente, escoges la opción: “Create Web Service”. Tras escoger esta opción, aparecerá un “Wizard” o “Asistente para creación de Web Services. En esta ventana, es importante cambiar el link que referencia a “Web Service Runtime”, ya que normalmente aparece Apache Axis y nosotros estamos usando Apache CXF, entonces debes cambiar el motor de Web Services. Sigue lo pasos del wizard, él te guiará en la creación del web service; por ultimo, te pedirá iniciar el servidor de Apache Tomcat. En tu directorio de trabajo verás que se ha generado una carpeta con código autogenerado, y lo más importante dentro del WbContent el archivo WSDL que contiende la dirección del servicio. Yo estoy usando Apache Tomcat 9, con Widfly no es necesario realizar todo este proceso, basta con crear la interfaz y la clase que será el servicio y al ejecutar el servidor, este se encargará de crear el servicio (no generará ningún paquete ni clases dentro del proyecto). Lo único que se tendría que hacer en el servidor sería crear el usuario para poder entrar al administrador de consola y ver el proyecto deployado y encontrar el WSDL URL, aunque en la consola de eclipse te lo muestra. 

Saludos y espero que mi respuesta te ayude. Disculpa por NO adjuntar imágenes, talvez realice un post con los pasos a seguir, sin embargo, ahora estoy con poco tiempo. Saludos.

01 julio, 2021

Hacer ping a cualquier puerto usando TCPing.

 Hacer ping a cualquier puerto usando TCPing.

Otra buena opción a telnet eS utilizar TCPing. Esta herramienta se ejecuta a través de la consola de Windows igual que ocurre con el comando ping normal, pero en este caso sí es posible utilizarla para hacer la “llamada” a un puerto determinado y ver si responde o está completamente cerrado. Una herramienta para probar nuestras aplicaciones cliente-servidor.

Activar cliente telnet en windows 10

En Windows 10 el cliente telnet esta desactivado, aunque por motivos de seguridad se recomienda no hacerlo, aún es posible activarlo. Una opción por si queremos probar alguna aplicación cliente-servidor o hacer ping a un puerto especifico para ver que nos responde.

https://www.xataka.com/basics/telnet-que-como-activarlo-windows-10

¿Instalaste un tema epf en eclipse y no sabes como volver a la normalidad?

Revisa el siguiente tutorial:

https://stackoverflow.com/questions/4118632/revert-to-eclipse-default-settings

25 junio, 2021

¿Cuál es la diferencia entre getPath(), getAbsolutePath() y getCanonicalPath) en Java?

Consultar los siguientes posts.

https://www.it-swarm-es.com/es/java/cual-es-la-diferencia-entre-getpath-getabsolutepath-y-getcanonicalpath-en-java/967323336/

https://www.iteramos.com/pregunta/2670/cual-es-la-diferencia-entre-getpath-getabsolutepath-y-getcanonicalpath-en-java

19 abril, 2021

Caused by: java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException | RESUELTO

 ¿Obtienes el siguiente mensaje de error?

Caused by: java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException

Solución

Si estamos usando una versión superior a Java 10 o si al menos el servidor en que se ejecuta la aplicación se está ejecutando en esa versión de java. Debemos agregar la siguiente dependencia.

<dependency>

<groupId>javax.xml.bind</groupId>

<artifactId>jaxb-api</artifactId>

<version>2.3.0</version>

</dependency>

20 febrero, 2021

¿Cuando limpiar el Scanner en Java?

 Hola banda tengo esta duda. en este código:

Scanner input = new Scanner(System.in);
System.out.println("Please enter a number");
int n = input.nextInt();
System.out.println("Please enter a number");
int m = input.nextInt();
System.out.println( n );

Debería poner un input.nextLine() para "limpiar" el contenido del Scanner (eso me han dicho en clase). La cosa es que si lo pongo o no, en este código simple funciona igual. Alguien podría explicarme por qué funciona igualmente y que es lo que hace exactamente? o en este código tan simple no sirve para mucho? en que ocasiones serviría y como? Gracias!

---------------------------

Respuesta

Lo que sucede es lo siguiente. Digamos que cuando estés ingresando un número, luego quieras ingresar un texto. En ese caso particular tendría que limpiar el Scanner, ya que input.nextInt() solo lee el valor int. Entonces, cuando continúes leyendo con input.nextLine(), recibirá la tecla "\n" Enter. Entonces, para omitir esto, debe agregar input.nextLine(). Ejemplo System.out.print("Insert a number: "); int number = input.nextInt(); input.nextLine(); // Esta línea la tienes que agregar (consume el carácter \n) System.out.print("Text1: "); String text1 = input.nextLine(); System.out.print("Text2: "); String text2 = input.nextLine();

Ya que al no agregar la línea input.nextLine(); luego del input.nextInt(); lo que ocurrirá será que después de ingresar el valor numérico, se omitirá el primer input.nextLine() se ejecutará el segundo, por lo que mi salida se ve así:

insert a number: 100
Text1: Text2: Mi texto 2

¿Y el texto 1? Se saltió.

Mas información en: https://stackoverflow.com/questions/13102045/scanner-is-skipping-nextline-after-using-next-or-nextfoo

07 enero, 2021

Solución "Could not write JSON:Infinite recursion"

Could not write JSON:Infinite recursion(StackOverflowError)nested exception is com.fasterxml.jackson.databind.JsonMappingException:Infinite recursion


Solución:

Añadir @JsonIgnore


Entidad Cargo

@OneToMany(mappedBy = "cargo")
@JsonIgnore
private Set<Empleado> empleados;

Entidad Empleado

@ManyToOne
@NotNull
private Cargo cargo;

10 diciembre, 2020

"more" no se reconoce como un comando interno o externo [Resuelto PostgreSQL]

persona=# select * from persona;

"more" no se reconoce como un comando interno o externo, programa o archivo por lotes ejecutable.

persona=#


Digitar el siguiente comando: \pset pager off


persona=# \pset pager off

El paginador no se usará.

persona=# select * from persona;

 id |  apellido   | direccion | nombre  |   telefono

----+-------------+-----------+---------+--------------

  1 | Rodriguez 0 | Cra 1000  | Jordy 0 | 423123131232

  2 | Rodriguez 1 | Cra 1000  | Jordy 1 | 423123131232

  3 | Rodriguez 2 | Cra 1000  | Jordy 2 | 423123131232

  4 | Rodriguez 3 | Cra 1000  | Jordy 3 | 423123131232

  5 | Rodriguez 4 | Cra 1000  | Jordy 4 | 423123131232

  6 | Rodriguez 5 | Cra 1000  | Jordy 5 | 423123131232

  7 | Rodriguez 6 | Cra 1000  | Jordy 6 | 423123131232

  8 | Rodriguez 7 | Cra 1000  | Jordy 7 | 423123131232

  9 | Rodriguez 8 | Cra 1000  | Jordy 8 | 423123131232

 10 | Rodriguez 9 | Cra 1000  | Jordy 9 | 423123131232

(10 filas)


persona=#


20 noviembre, 2020

¿Cómo evitar el acceso a las páginas en JSF si el usuario no ha iniciado sesión?

Aquí algunos post que les pueden servir.


Evitar acesso via url a las páginas restringuidas en JSF

https://www.guj.com.br/t/evitar-acesso-via-url-a-paginas-restritas-em-jsf/181132/2

https://www.guj.com.br/t/sessao-jsf/168670/5

JSF Seguridad Acceso Páginas Recursos con PhaseListener y Filter

https://www.youtube.com/watch?v=YTSnnbO1Ng0

23 octubre, 2020

Grid CSS de Primefaces no se adapta a dispositivos móviles

Pregunta enviada por un seguidor

Hola, estoy desarrollando una aplicación con JSF 2.3 + Primefaces 7. La cuestión es la siguiente, estoy usando el Grid CSS de Primefaces para hacer la aplicación responsive. Cuando voy cambiando el ancho del Browser se ven reflejado los cambios y la aplicación se va adaptando, pero cuando pongo F12 y le doy clic en el toggle device toolbar de Google Chrome para hacer una simulación en dispositivos móviles, este no cambia nada y solo se va haciendo -zoom y +zoom sin reflejar el diseño responsive. ¿Por qué? Estoy usando el Grid CSS de Primefaces y siguiendo la documentación. ¿Faltará alguna configuración adicional o activar algo? Como les digo, funciona cuando cambio la pantalla del browser, pero cuando quiero simular con F12 (toggle device toolbar) no pasa nada y también ya lo probé desde un celular y lo mismo. ¿O es que así de simple no es y hay que hacer otra cosa? Muchas gracias.

https://www.primefaces.org/showcase/ui/panel/grid.xhtml

https://www.primefaces.org/showcase/ui/misc/responsive.xhtml

<div class="ui-g">

<div class="ui-g-4">4</div>

<div class="ui-g-4">4</div>

<div class="ui-g-4">4</div>

</div>

Post publicado en el grupo

https://www.facebook.com/photo?fbid=153021783151903&set=gm.1510865319301186


Capturas de pantalla





Solución

Se debe agregar el siguiente meta a la plantilla principal de la aplicación: 

<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />

De esta manera, el Grid CSS funcionará en cualquier dispositivo (computador, tablet, móvil)

22 octubre, 2020

Acceder a mi aplicación web desde otro dispositivo (computador, celular, tablet) conectada a mi red

Cómo puedo hacer para acceder a mi aplicación web desde otro dispositivo (computador, celular, tablet) conectada a mi red local. Tengo Apache Tomcat.

Calcular automáticamente la suma total de una columna con datos numéricos en el pie de página de un DataTable (JSF)

Cuando los datos numéricos se enumeran en un <p:dataTable> (o <h:dataTable>), ¿hay alguna forma de obtener la suma total en la fila de resumen en el pie de página de la tabla sin calcularla en el Managed Bean y proporcionarla nuevamente como otra propiedad de bean?