Tengo un servicio web SOAP muy simple que necesito consumir desde un cliente Java. ¿Cuál es la forma más fácil de lograr esto sin utilizar bibliotecas de terceros? Un requisito es que el host y el puerto se lean desde web.xml antes de cada llamada al ws.Simplemente consumiendo un servicio web en Java
Respuesta
¿Sin usar ninguna biblioteca de terceros? Conozca muy bien el estándar SOAP y aprenda a amar SAX.
Si no puede amar a SAX, entonces laxe su requisito de no-third-party-libs y use StAX (con woodstox) en su lugar.
Este enfoque podría ser el "más fácil" (considerando el requisito de no-third-party-libs) pero no creo que sea fácil.
Si puede relajar su requisito de "no hay bibliotecas de terceros" y tiene un WSDL para el servicio web, Axis lo hace realmente fácil. Simplemente compile el WSDL usando wsdl2java, y puede usar las clases Java generadas para consumir el servicio web.
Dependiendo de la versión de JAVA que esté utilizando, parte de la JAX-WS está incorporada. JDK 6 tiene la implementación estándar JAX-WS de Java y puedes usarlo.
ver lo siguiente:
JAX-WS 2.1 and JAXB 2.1 is available in JDK 6 Update 4 release
Getting Started with JAX-WS Web Services (tutorial para utilizar el JDK incorporado en JAX-WS para implementar y consumir un servicio web)
JAX-WS parece muy fácil de usar, pero ¿cómo se puede utilizar para leer el nombre de host del archivo web.config? – Deano
I puedo recomendar tu biblioteca CXF El uso que usted tendrá varias opciones para llamar servicios web:
Uso dynamic proxy para llamar (no es necesario para hacer talones de Java usando wsdl2java).
DynamicClientFactory dcf = DynamicClientFactory.newInstance(); Client client = dcf.createClient("http://admin:[email protected]:8080"+ "/services/MyService?wsdl"); Object[] a = client.invoke("test", ""); System.out.println(a);
Uso de talón de Java generado a partir de WSDL, utilizando wsdl2java.
Si el servidor se ha creado usando CXF puede volver a utilizar el código de interfaz de forma directa (en lugar de utilizar wsdl2java en el WSDL que fue creado a partir de la interfaz!)
Por tanto # 2 y # 3, el siguiente código ejemplifica el uso de CXF:
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setAddress("http://admin:[email protected]:8080/services/MyService");
factory.setServiceClass(ITest.class);
ITest client = (ITest) factory.create();
client.test();
- 1. ¿Es un servicio web o un servicio web?
- 2. Cómo invocar un servicio web utilizando Java
- 3. Llamar a un servicio web seguro en Java
- 4. Cómo proteger un servicio web REST en Java EE 6
- 5. Enviar objeto Java a un servicio web en reposo
- 6. ¿Es un servicio WCF un servicio web?
- 7. ¿Garantizar un servicio web?
- 8. Servicio web Java ASYnc REST con Jersey?
- 9. Autenticación en un servicio web RESTful
- 10. consumiendo webs de SOAP en el motor de aplicaciones de Google y GWT
- 11. ¿Cómo crear un cliente Java para el servicio web?
- 12. Java servicio web volviendo objeto nulo a un cliente .NET
- 13. Implementar el servicio web java sin usar el servidor web
- 14. Protección de un servicio web
- 15. Hacer un servicio web seguro
- 16. cliente web para servicio web
- 17. ¿Cómo asegurar un servicio web en .net?
- 18. ¿Cómo creo un servicio web en IronPython?
- 19. ¿Cómo se ve un servicio web Node.js?
- 20. ¿Se puede consumir un servicio WCF como si fuera un servicio web ASP.NET?
- 21. ¡Consumiendo JSON en juego! Controlador marco
- 22. Cómo devolver los resultados del servicio web en java
- 23. Servicio web Java, fecha xsd en lugar de dateTime
- 24. Servicio web ficticio
- 25. páginas Web que simplemente páginas demasiada materia
- 26. Aplicación de servicio web
- 27. ¿Cómo puedo sobrecargar el método en el servicio web Java?
- 28. ¿Cómo autenticar los servicios web java basados en Java?
- 29. Servicio web con Lisp
- 30. Servicio web vs aplicación web
No entiendo por qué sería tan difícil? Seguramente todo lo que tiene que hacer es construir la solicitud utilizando un buffer de cadena, abrir una conexión y luego completar la solicitud y esperar una respuesta. ¿O me estoy perdiendo algo aquí? – Deano
Lo que puede faltar es la dificultad/tedio de construir la solicitud usando StringBuffer. Ciertamente es posible, pero no lo recomendaría. Lo mismo aplica para leer la respuesta sin una biblioteca SOAP. –