12

OK、私は多くのマシン (Windows、Linux、AIX、z/Linux、openVMS など) にデプロイされるプログラムを開発しています。そのアプリケーションに SOAP Web サービスを含めたいのですが、Tomcat をバンドルしたり、サービス用に別のサービスを実行したりしたくありません (残りのアプリケーションと同じプロセスでそれらを実行したい)。

基本的に私が探しているのは、クラスを定義できるものです (たとえばWebServices)。WSDL やその他の種類のサービス記述を書くことも問題ありません。私はこのようなものが欲しい:

SOAPServer server = makeMeASoapServer();
//do config on the server
server.add(new WebService(...));
server.listen(port);

明らかに、名前とパラメーターは異なります。

私は Axis を見てきましたが、これを提供しているように見えますが、どのクラスを使用する必要があるのか​​ わかりません。私はこの種の行動を望んでいるのでしょうか?これを探していない人が増えているなんて信じられません。私は常に、.NET クライアント内の組み込み Web サービスでこれを行っています。

4

4 に答える 4

24

jdk 6.0 にはすでに jax-ws 実装と、組み込み可能な小さなサーバーが付属しているようです。私はすべての部分を理解していませんが、ここから始めます:

mkdir -p helloservice/endpoint/

helloservice/エンドポイント/Hello.java :

package helloservice.endpoint;

import javax.jws.WebService;

@WebService()
public class Hello {
  private String message = new String("Hello, ");

  public void Hello() {}

  public String sayHello(String name) {
    return message + name + ".";
  }
}

ハローサービス/エンドポイント/Server.java:

package helloservice.endpoint;
import javax.xml.ws.Endpoint;

public class Server {

    protected Server() throws Exception {
        System.out.println("Starting Server");
        Object implementor = new Hello();
        String address = "http://localhost:9000/SoapContext/SoapPort";
        Endpoint.publish(address, implementor);
    }

    public static void main(String args[]) throws Exception {
        new Server();
        System.out.println("Server ready...");

        Thread.sleep(5 * 60 * 1000);
        System.out.println("Server exiting");
        System.exit(0);
    }
}

ものを構築します。

mkdir build
javac -d build helloservice/endpoint/*java
$JAVA_HOME/wsgen -d build -s build -classpath .  helloservice.endpoint.Hello

以下を実行します。

java -cp  build helloservice.endpoint.Server

http://localhost:9000/SoapContext/SoapPortで何かが実行されています。http://localhost:9000/SoapContext/SoapPort?WSDLで wsdl を取得できます。

まだクライアントの作成に取り掛かっていません..

于 2009-11-24T21:42:39.863 に答える
1

nosの素晴らしい答えに加えて、Apache軸でクラスを見つけました。SimpleHTTPServerこれは同じことを行うと確信していますが、Java 1.5で立ち往生している人にはJava 1.5しか必要としません

他のソリューションを使用するので、それを調査するつもりはないので、実際にそれが私が思っていることを行うことを確認していませんが、そうであると確信しています.

于 2009-11-24T22:09:51.880 に答える
1

ほとんどの(/すべて?)Java SOAPサーバー実装はサーブレットを提供します(別の回答の javax.xml.ws.Endpoint アプローチは少し単純に見えます...)。検討できる SOAP 実装には、Apache CXF: cxf.apache.org、Apache Axis2: ws.apache.org/axis2/、または Spring Web Servies: static.springsource.org/spring-ws/site/ があります。

最も人気のある組み込み Java Web サーバーはJettyのようです。プログラムで (プレーンな Java または Spring Bean を使用して) またはカスタム XML 形式を使用して構成できます。

于 2009-11-24T22:29:26.187 に答える