web-services set - Cómo escribir servicios web efectivos en java.




swing oracle (3)

Si bien esto puede aparecer como un duplicado de los servicios web de Java , me gustaría saber dónde comenzar y continuar. En el pasado, he invertido mucho tiempo para encontrar dónde empezar, pero no pude. Hay tantas jergas y caos (¡al menos para mí!) Mientras leo las páginas sobre servicios web. Hay tantos términos, como JAX-RPC, JAX-WS, Axis, Rest, Servlet as WebService, EJB's servicio web JAX-RPC, JAX-WS, Axis, Rest, Servlet as WebService, EJB's como servicio web y otros términos que no conozco. ¿Puede este grupo de usuarios consolidar y ofrecer una descripción general de alto nivel de los servicios web de Java que sea fácil de entender y seguir? Aprecio su amabilidad y gracias por su ayuda.


Answers

Eso es un poco una jungla para entender los servicios web. La página de wikipedia es decente, pero todavía carece de algunos elementos.

He marcado esta respuesta como wiki de la comunidad, así que no dude en actualizarla o corregirla. Es solo una base.

Un término hinchado:

Primero, el término servicio web se usa para referirse a muchas cosas. Si bien muchas personas lo utilizan para referirse a un servicio web basado en SOAP, el término se puede usar para denotar cualquier servicio proporcionado a través de una interfaz web; Esta es una fuente de confusión.

Estilo de implementación y diseño:

  • Basado en SOAP: SOAP sigue siendo el estándar de facto para servicios web. SOAP es un protocolo sobre HTTP que describe el intercambio de mensajes y excepciones. SOAP creció de algo simple a algo muy complicado con todos los estándares WS- * que se agregaron más adelante. Los más importantes son: WS-Policy, WS-Security, WS-Addressing, WS-Transaction. Otra especificación importante es MTOM para mensajes grandes.
  • RESTful : el término RESTful se relaciona con el hecho de que el servicio no tiene estado y toda la información relevante se pasa como parámetro. Además, en lugar de usar un protocolo como SOAP, se usan verbos HTTP simples, por ejemplo, Get , Put , Delete , Update .
  • Apátridas - WS suelen ser apátridas. El negocio procesado a veces se basa en los denominados identificadores de correlación (con WS-Addressing) que se utilizan para unir las solicitudes y la respuesta; esta es la misma idea como almacenar un identificador de sesión en una cookie porque HTTP no tiene estado.
  • Stateful - Hay algunas propuestas para tener un WS estatal, pero no sé mucho al respecto.

Implementación y pilas de tecnología:

  • Servlet : la forma de nivel más bajo de implementar un WS: básicamente analiza la solicitud y escupe la respuesta HTTP por su cuenta.
  • EJB : desde EJB3, EJB puede ser expuesto como un servicio web muy fácilmente. Necesita un contenedor EJB, por supuesto.
  • Eje de Apache : solía ser una pila de tecnología popular que ahora está disminuyendo.
  • Apache CXF - Otra opción popular.
  • JBossWS - Otra opción popular.
  • JAX-WS - La pila de servicios web oficial de Sun, muy buena. Hasta ahora lo sé, esto replaces JAX-RPC, que simplemente fue renombrado como JAX-WS.

Conceptos relacionados y jerga:

  • WSDL : define el contrato / interfaz del servicio web, en el caso de WS basados ​​en SOAP.
  • El contrato primero : se refiere al hecho de que una tecnología puede admitir cualquier WSDL proporcionado por adelantado. Al contrario de una tecnología de implementación que generará el WSDL basado en la implementación del servicio web, en cuyo caso el WSDL no siempre se puede personalizar según sea necesario
  • Perfil : para simplificar este desorden, introdujeron perfiles que son grupos de especificaciones / capacidades relacionadas que necesitan compatibilidad para la interoperabilidad. El principal es el Perfil Básico WS-I.
  • UDDI y descubrimiento : parece que algunas personas pensaron que el servicio web se publicaría en un registro público para que pueda ser descubierto por un consumidor potencial. No creo que esta visión haya ganado mucho impulso.


ObStupidAnswer (pero creo que hay una lección aquí en alguna parte):

enum Values {
    AB, BC, CD, AE
}

try {
    Values.valueOf(s);
    return true;
} catch (IllegalArgumentException exc) {
    return false;
}




java web-services jax-ws axis2 jax-rpc