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.
La solución más simple que la que Simon ha descrito, es usar las herramientas que por lo general lo hacen. Si usa eclipse, puede usar http://ws.apache.org/axis2/tools/1_2/eclipse/servicearchiver-plugin.html
para generar el archivo aar.
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)