servicio invocar ejemplo desde crear consumir web-services tomcat java-ee jax-ws java-metro-framework

web-services - invocar - web service java netbeans



Servicio web Java sin un servidor de aplicaciones web (2)

Tenemos un servidor de procesamiento de mensajes, que

  • comenzar algunos hilos
  • procesando el mensaje
  • interactuar con la base de datos, etc. .....

ahora el cliente desea tener un servidor de servicio web en el servidor, podrá consultar el servidor de procesamiento de mensajes con un cliente de servicio web. por ejemplo, dame todos los mensajes de hoy o borra el mensaje con id ...

el problema es:

  • El servidor solo una aplicación j2se estándar, no se ejecuta dentro del servidor de aplicaciones, como tomcat o glassfish.
  • Para manejar una solicitud Http, ¿necesito implementar un servidor http?
  • Me gustaría utilizar la buena anotación j2ee como @webservice, @webmothod, etc. ... ¿hay alguna biblioteca o marco que pueda usar?


No necesita una biblioteca de terceros para usar las anotaciones de jax-ws . J2SE se envía con jax-ws , por lo que todas las anotaciones están disponibles para usted. Puede lograr resultados ligeros con la siguiente solución, pero para cualquier cosa optimizada / multihilo, es responsabilidad suya implementar:

  1. Diseñe una SEI, interfaz de punto final de servicio, que básicamente es una interfaz java con anotaciones de servicio web. Esto no es obligatorio, es solo un punto de buen diseño desde OOP básico.

    import javax.jws.WebService; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.soap.SOAPBinding; import javax.jws.soap.SOAPBinding.Style; @WebService @SOAPBinding(style = Style.RPC) //this annotation stipulates the style of your ws, document or rpc based. rpc is more straightforward and simpler. And old. public interface MyService{ @WebMethod String getString(); }

  2. Implemente el SEI en una clase Java llamada bean de implementación de servicio SIB.

    @WebService(endpointInterface = "com.yours.wsinterface") //this binds the SEI to the SIB public class MyServiceImpl implements MyService { public String getResult() { return "result"; } }

  3. Exponer el servicio utilizando un Endpoint import javax.xml.ws.Endpoint;

    public class MyServiceEndpoint{ public static void main(String[] params){ Endpoint endPoint = EndPoint.create(new MyServiceImpl()); endPoint.publish("http://localhost:9001/myService"); //supply your desired url to the publish method to actually expose the service. } }

Los fragmentos de arriba, como dije, son bastante básicos y tendrán un rendimiento bajo en producción. Tendrá que elaborar un modelo de subprocesamiento para las solicitudes. La API de punto final acepta una instancia de Executor para admitir solicitudes simultáneas. Threading no es lo mío, así que no puedo darte consejos.