3

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

场景:我在一个服务类型应用程序中有一组 Java 方法,我想从本地 LAN 上的其他机器访问这些方法。

4

5 回答 5

6

好吧,Tomcat 或 Jetty 可能只是将一些方法发布为 Web 服务。但另一方面,它并不太复杂,他们可以完成这项工作,为什么不呢?

不久前我遇到了类似的问题,并且将 Tomcat 与 Axis2 一起使用。只需下载 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/services/ 目录。启动tomcat,服务就会被部署。您可以通过访问axis2页面(http://localhost:8080/axis2/)来检查它是否正在运行。在那里,您将看到部署了哪些服务以及导出了哪些方法。您还可以在那里获取 WSDL url 以连接到您的服务。

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

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

我写了一个稍微详细一点的版本,可以在以下位置找到:http ://www.slashslash.de/lang/en/2008/10/java-webservices-mit-apache-tomcat-und-axis2/ (不要让 URL 中的德语激怒你,它是用英文写的)

于 2008-10-11T04:05:37.240 回答
2

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

于 2008-10-11T02:19:39.527 回答
2

嗯。为什么不只使用RMI

于 2008-10-11T13:48:06.253 回答
1

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

于 2008-10-11T02:14:21.957 回答
0

比西蒙描述的更简单的解决方案是使用已经做到这一点的工具。如果您使用 Eclipse,您可以使用http://ws.apache.org/axis2/tools/1_2/eclipse/servicearchiver-plugin.html

生成 aar 文件。

于 2008-11-18T22:35:56.027 回答