2010-03-09 32 views
10

¿Alguien puede recomendar una buena biblioteca de código abierto de Java para construir un cliente de servicio web SOAP simple? Estoy buscando algo con dependencias mínimas y configuración que funcione en un entorno Java 5 SE. La actualización a Java 6 no es realmente una opción en este proyecto y preferiría evitar el uso de un contenedor J2EE completo si puedo evitarlo. No necesito publicar y servicios, solo consumir.Biblioteca de clientes SOAP liviana para Java

Actualmente estoy usando Axis2 pero tengo que extraer unos 15MB de frascos adicionales solo para hacer una simple llamada a un servicio web sin un NoClassDefFoundError y estoy buscando algo con mucha menos hinchazón.

También he mirado a CXF, pero soy reacio a usarlo debido a su acoplamiento estrecho con Spring. Spring no es un factor de ruptura del 100%, pero prefiero evitarlo si es posible.

¿Alguna sugerencia?

+0

¿Es un sistema embebido o por qué está usted preocupado por 15MB, cuando las cosas funcionan? – stacker

+7

Todas las dependencias adicionales aumentan los tiempos de implementación para uno, y lo que es más importante, es perjudicial para la mantenibilidad del sistema a largo plazo. Evitar la hinchazón innecesaria es un principio que trato de cumplir en todos los aspectos del desarrollo de software. No escribo más código de lo necesario para hacer el trabajo, del mismo modo no dependo de las bibliotecas que no son necesarias. –

Respuesta

6

En Spring 3.0 thay han dividido el gran spring.jar en módulos que reducirán el tamaño.

Comprobar Spring Web Services

WS Client Example

El inconveniente sería que usted tiene que manejar las dependencias entre un montón de jarra de esto podría convertirse en complejos si no quieren introducir experto. Esa fue la razón (entre otros, como los problemas de compatibilidad) por qué todavía estoy usando el eje.

+1

Me encantaría presentar a Maven, pero está fuera de mi control ... Suena cada vez más como que Spring va a ser el camino de menor resistencia. –

+0

¿Qué tal un voto positivo si fue útil? BTW http://xfire.codehaus.org/ puede ser otra opción para ti. – stacker

+0

Después de investigar esto por un tiempo, la implementación de la primavera parece ser la única opción real sin tener que recurrir a algo como Axis o CXF. –

1

Después de investigar esto un rato, la API SAAJ sin procesar (https://saaj.dev.java.net/) es lo único que he encontrado que es más racionalizado que la biblioteca de Spring WS que está construida encima. El problema con SAAJ es que es casi inutilizable a menos que esté dispuesto a usar su API extremadamente detallada para construir la carga XML de su mensaje. Hay formas de evitar esto y usar algo como JAXB para generar el contenido real del mensaje, pero no está muy limpio y Spring WS es básicamente eso.

10

Pruebe simple biblioteca soap-ws, es muy fácil de usar.

Una biblioteca de Java ligera y fácil de usar para manejar SOAP en un nivel puramente XML.

Ejemplo de uso

SoapClient client = SoapClient.builder() 
    .endpointUri("http://example.com/endpoint") 
    .build(); 

client.post(envelope); 

Dependencia

<dependency> 
    <groupId>org.reficio</groupId> 
    <artifactId>soap-client</artifactId> 
    <version>1.0.0-SNAPSHOT</version> 
</dependency> 

desde el repositorio

<repository> 
    <id>reficio</id> 
    <url>http://repo.reficio.org/maven/</url> 
</repository> 
+1

Hay un error tipográfico/cambio en el nombre del método: '.endpointUrl' ->' .endpointUri' – loopasam