jax invocar from example desde consumir consume java web-services remoting

java - invocar - jax-ws



Servicios web Java simples (5)

Erhm. ¿Por qué no usar RMI ?

¿Alguien sabe de una manera realmente simple de publicar métodos Java como servicios web? Realmente no quiero la sobrecarga de usar Tomcat o Jetty o cualquiera de los otros marcos de contenedor.

Escenario: tengo un conjunto de métodos Java en una aplicación de tipo de servicio a la que quiero acceder desde otras máquinas en la LAN local.


Jetty es bastante liviano. De lo contrario, creo que XML-RPC es tu única opción sensata.


Los servicios web dependen de HTTP. Es posible que no desee Tomcat o Jetty. En ese caso, debe implementar HTTP usted mismo.



Bueno, Tomcat o Jetty pueden ser excesivos para publicar solo algunos métodos como un servicio web. Pero, por otro lado, no es demasiado complicado y hacen el trabajo, ¿por qué no?

Tuve un problema similar no hace mucho tiempo y utilicé un Tomcat junto con Axis2. Simplemente descarga Tomcat, descomprímelo y despliega Axis2 WAR. Para publicar un servicio web, hay varios enfoques, el que tomé es probablemente uno de los más fáciles:

Simplemente crea tu aplicación como de costumbre y anota la clase y los métodos de servicio web con las anotaciones adecuadas de javax.jws. *. Empaqueta todo en un frasco. Crea un service.xml en el directorio META-INF de tu archivo jar y ponlo en él:

<service name="name of the service" scope="<one of request, session or application>"> <description> optional description of your service </description> <messageReceivers> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" /> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/> </messageReceivers> <parameter name="ServiceClass" locked="false">put here the fully qualified name of your service class (e.g. x.y.z.FooService)</parameter> </service>

Cambie el nombre de .jar a .aar y colóquelo en el directorio / webapps / axis2 / WEB-INF / services /. Inicie tomcat y se implementará el servicio. Puede verificar si se está ejecutando al visitar la página axis2 ( http: // localhost: 8080 / axis2 / ). Allí verá qué servicios se implementan y qué métodos se exportan. También puede obtener la url WSDL allí para conectarse a su servicio.

Lee http://ws.apache.org/axis2/1_4_1/contents.html para obtener más información sobre el uso de Axis2. El enfoque que describí aquí no se encuentra exactamente así en los documentos, pero funciona muy bien.

Actualización: si solo desea proporcionar servicios web y realmente no necesita ninguna de las otras características de Tomcat (por ejemplo, servicio de páginas web antiguas, jsps u otras), también puede usar el servidor independiente Axis2. Pero a excepción de la parte de configuración, no cambia nada de lo que describí.

He escrito una versión ligeramente más detallada de esto, que se puede encontrar en: http://www.slashslash.de/lang/en/2008/10/java-webservices-mit-apache-tomcat-und-axis2/ (No deje que el alemán en la URL lo irrite, está escrito en inglés)