2008-10-11 149 views
2

有谁知道将Java方法作为Web服务发布的非常简单的方法吗?我真的不想要使用Tomcat或Jetty或任何其他容器框架的开销。简单的Java Web服务

场景:我想从本地局域网上的其他机器访问服务类型应用程序中有一组Java方法。

回答

5

那么,Tomcat或Jetty可能会矫枉过正,只是将一些方法作为Web服务发布。但另一方面,它不是太复杂,他们做这项工作,为什么不呢?

我不久前遇到了类似的问题,并将Axcat2与Tomcat一起使用。只需下载Tomcat,解压缩,部署Axis2 WAR。要发布web服务,有几种方法,我所采用的方法可能是最简单的方法之一:

只是像往常一样构建应用程序,并使用javax.jws。*中的相应注释标注web服务类和方法。将所有东西打包成一个罐子创建你的jar文件的META-INF目录service.xml中,并把这个进去:

<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> 

重命名的.jar到.aar并放入/ webapps /下的Axis2/WEB-INF /服务/ 目录。启动tomcat并且服务将被部署。您可以通过访问axis2页面(http://localhost:8080/axis2/)来检查它是否正在运行。在那里您将看到部署了哪些服务以及哪些方法已导出。您也可以在那里获取WSDL网址以连接到您的服务。

阅读http://ws.apache.org/axis2/1_4_1/contents.html关于使用Axis2的更多信息。我在这里描述的方法在文档中找不到如此,但它工作得很好。

更新:如果你只是想提供网络服务和真的不需要任何的Tomcat的其他功能(例如普通的旧网页,JSP或其他东西的服务),您还可以使用Axis2的独立服务器。但除了设置部分,它不会改变我描述的任何东西。

我写的这个稍微更详细的版本,可以在这里找到:http://www.slashslash.de/lang/en/2008/10/java-webservices-mit-apache-tomcat-und-axis2/(不要让德国在URL刺激你,它是用英文写的)

1

捷蒂的相当轻巧。否则,我认为XML-RPC是您唯一明智的选择。

2

Web服务依赖于HTTP。你可能不需要tomcat或Jetty。在这种情况下,你必须自己实现HTTP。

+0

我曾经希望有一些轻量级的HTTP服务器可以运行在我的.JAR中,并提供最低限度的支持Web服务。 – Andrew 2008-10-11 04:28:48

+0

如果存在这样的事情,每个人都会使用它。记住,无论你在寻找什么,你都不是第一个有这个问题的人。 – 2008-10-11 10:31:35

2

Erhm。为什么不使用RMI