1

いくつかのパフォーマンス テストを実行するために、単純な SOAP サービスと SOAP クライアントを作成しようとしています。私は SOAP を使用する初心者であり、いくつかのフォーラムで見つけたコードを単に適応させようとしています。このテストが組み込みデバイスで実行されることを考えると、巨大なフレームワーク/ライブラリは避けたいと思います。XML でハッキングせずに Java でコーディングすることをお勧めします。

以下のコードでは、「sayHello」メソッドを呼び出して結果を取得しようとしています。不完全です (引数がありません) が、テストの開始点を得るために修正したいと思います。

このサンプルコードを修正するのを手伝ってもらえますか?

これはサービスクラスのコードです

@WebService(name = "Hello", targetNamespace = "http://localhost")
public class Hello
{
    private String message = new String("Hello, ");

    public void Hello()
    {
    }

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

}

これは、サーバー クラスのコードです。

public class Server
{
protected Server() throws Exception
{
    System.out.println("Starting Server");
    Object implementor = new Hello();
    String address = "http://localhost:9000/";
    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);
}
}

これは、request() メソッドを呼び出してサーバーにリクエストを送信するためのクライアント クラスのコードです。

public class Sender
{

.
.
.

    public void request() throws Exception
    {
        // Building the request document
        SOAPMessage reqMsg = MessageFactory.newInstance().createMessage();
        SOAPEnvelope envelope = reqMsg.getSOAPPart().getEnvelope();
        SOAPBody body = envelope.getBody();
        body.addBodyElement(envelope.createName("Hello"));

        // Connecting and calling
        SOAPConnection con = SOAPConnectionFactory.newInstance()
                .createConnection();
        SOAPMessage resMsg = con.call(reqMsg, "http://localhost:9000/");
        con.close();

        // Showing output
        System.out.println("\n\nRequest:");
        reqMsg.writeTo(System.out);
        System.out.println("\n\nResponse:");
        resMsg.writeTo(System.out);
    }

}

クライアントの出力は次のようになります。

Request:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header/><SOAP-ENV:Body><Hello/></SOAP-ENV:Body></SOAP-ENV:Envelope>

Response:
<?xml version="1.0" ?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><S:Fault xmlns:ns3="http://www.w3.org/2003/05/soap-envelope"><faultcode>S:Client</faultcode><faultstring>Cannot find dispatch method for {}Hello</faultstring></S:Fault></S:Body></S:Envelope>

ありがとう!

4

0 に答える 0