example java web-services cxf spring-ws

java - example - ¿Qué marco es mejor CXF o Spring-WS?



apache cxf web service (7)

Acerca de Apache CXF:

  • CXF admite varios estándares, incluidos SOAP, el perfil básico de WSI, WSDL, WS-Addressing, WS-Policy, WS-ReliableMessaging, WS-Security, WS-SecurityPolicy y WS-SecureConversation.
  • Apache CXF ofrece los enfoques contract-last (comenzando con Java) y contract-first (comenzando con WSDL).
  • Apache CXF implementa JAX-WS y JAX-RS.

Acerca de Spring WS:

  • Spring WS ofrece "solo" contrato primero, a partir de un esquema XSD.
  • Spring WS es compatible con SOAP, WS-Security, WS-Addressing.

Entonces, al final, veo a Spring WS como un marco de servicios web mínimo , pero considero que no tiene (en mi opinión) ventajas con respecto a Apache CXF (que se integra muy bien con Spring). Entre ambos, escogería Apache CXF.

Estoy en el proceso de investigar / comparar CXF y Spring-WS para servicios web? Necesito funcionar tanto como proveedor como consumidor de WS. En pocas palabras, me han dicho que Spring-WS es más configurable, pero CXF es más fácil de poner en funcionamiento. Esta pregunta es subjetiva, pero me ayudará a orientarme en mi investigación.

  • ¿Qué experiencia tienes con cualquiera de estos marcos?
  • ¿Te has encontrado con algún problema con cualquiera de los frameworks?
  • ¿Ha encontrado alguna característica útil proporcionada por alguna de las cuales posiblemente la otra no proporcione?

CXF no le impide, de ninguna manera, comenzar con un contrato (WSDL). Usé ambos productos para construir un servicio web.

En CXF, utilicé Maven y el plugin Maven, llamando al objetivo de wsimport para generar el SEI (interfaz) que luego implementé. Después de implementar la interfaz para contener la lógica del servicio real y configurar mi bean implementation beans.xml , entonces dejo que Maven lo empaquete en un archivo war para la implementación. Todo el ejercicio no pudo haber sido más fácil.

No creo que Spring-WS ofrezca ninguna ventaja que supere la falta de JAX-WS. CXF ya le permite usar Spring para conectar sus beans y también tiene una implementación completa de JAX-WS.




Otra opción a considerar en esta comparación es Enunciate .

Especialmente si te gusta comenzar con Java primero.


Tenemos una experiencia con CXF y su predecesor XFire y puedo recomendarlo como un marco sólido, rápido (creación y ejecución de WS) y confiable.

En cuanto a los problemas que se pueden encontrar con CXF, consulte mi publicación https://.com/questions/289977/recommended-framework-for-java-web-services#290205 Y estoy de acuerdo con el , que la mayor diferencia entre los marcos es ideológicamente: ¿cuál es el primer código (es decir, interfaz) o contrato (es decir, wsdl). Vea algunos detalles aquí:


Apache CXF:

Positivos clave:

Web El estándar de servicios web más ampliamente utilizado ahora; Mejora sobre AXIS2, que ahora está siendo reemplazado gradualmente por Apache CXF

❷ Intuitivo y fácil de usar (se requiere menos codificación en comparación con AXIS2)

❸ Limpie la separación de los front-ends, como JAX-WS, del código central

❹ Totalmente compatible con JAX-WS, JAX-RS y otros

❺ El mejor rendimiento en todos los marcos disponibles con una sobrecarga de cómputo mínima

❻ Admite una amplia variedad de modelos front-end

❼ Compatible con JAX-WS y JAX-RS (para Restful Services)

❽ Admite JBI y SDO (no compatible con AXIS2)

❾ Compatible con Spring Framework

Preocupaciones clave:

❶ Aún no soporta Orchestration & WS Transactions

❷ Aún no es compatible con WSDL 2.0

Spring WS:

Positivos clave:

❶ Lo mejor en términos de compatibilidad con el Enfoque de desarrollo de servicios web basado en el contrato

❷ Aplica los Estándares y las Mejores Prácticas por Restricciones del Marco (no hay forma de salir de él y por lo tanto también limita)

❸ Admite anotaciones de primavera, así como JAX-WS

❹ Código mínimo desde la perspectiva del desarrollador

❺ Mejor alineado con Spring Technology Stack (también pila arquitectónica similar a Spring MVC) incluyendo Spring Security

Preocupaciones clave:

❶ Número mínimo de especificaciones WS- * compatibles (no cumple completamente con JAX-WS)

❷ Spring se ofrece como estándar y, por lo tanto, otros marcos compatibles con Java admiten mejores estándares de soporte

❸ Solo se admite el modelo de desarrollo de servicios web por contrato primero

Fuente: https://dzone.com/articles/apache-cxf-vs-apache-axis-vs