3

Java メソッドを Web サービスとして公開する本当に簡単な方法を知っている人はいますか? Tomcat や Jetty、その他のコンテナー フレームワークを使用することによるオーバーヘッドは本当に必要ありません。

シナリオ: ローカル LAN 上の他のマシンからアクセスしたいサービス タイプのアプリケーションに Java メソッドのセットがあります。

4

5 に答える 5

6

まあ、Tomcat や Jetty は、一部のメソッドだけを Web サービスとして公開するのにはやり過ぎかもしれません。しかし一方で、それほど複雑ではなく、彼らが仕事をするので、なぜですか?

少し前に同様の問題があり、Tomcat を Axis2 と一緒に使用しました。Tomcat をダウンロードして解凍し、Axis2 WAR をデプロイするだけです。Web サービスを公開するには、いくつかのアプローチがあります。

通常どおりアプリケーションをビルドし、Web サービス クラスとメソッドに javax.jws.* の適切な注釈を付けます。すべてを瓶に詰めます。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 の他の機能 (単純な古い Web ページ、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 に答える