いくつかのパフォーマンス テストを実行するために、単純な 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>
ありがとう!