クライアントが Web サービスを呼び出そうとしています -
public static void main(String[] args) throws RemoteException {
SimpleServiceStub service = new SimpleServiceStub(
"http://localhost:8080/axis2/services/SimpleService");
ConcatRequest request = new ConcatRequest();
request.setS1("abc");
request.setS2("123");
ConcatResponse response = service.concat(request);
System.out.println(response.getConcatResponse());
}
Eclipse内からの例外スタックトレースは -
Exception in thread "main" org.apache.axis2.AxisFault
at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
at com.ttdev.ss.SimpleServiceStub.fromOM(SimpleServiceStub.java:1419)
at com.ttdev.ss.SimpleServiceStub.concat(SimpleServiceStub.java:190)
at com.ttdev.ss.SimpleClient.main(SimpleClient.java:15)
Caused by: java.lang.NullPointerException
at com.ttdev.ss.SimpleServiceStub.fromOM(SimpleServiceStub.java:1413)
... 2 more
*編集*これは軸からのスタックトレースです
Exception in thread "HttpConnection-8080-1" java.lang.IllegalStateException: Response already committed
at org.apache.axis2.transport.http.server.AxisHttpResponseImpl.assertNotCommitted(AxisHttpResponseImpl.java:75)
at org.apache.axis2.transport.http.server.AxisHttpResponseImpl.sendError(AxisHttpResponseImpl.java:110)
at org.apache.axis2.transport.http.server.AxisHttpService.doService(AxisHttpService.java:315)
at org.apache.axis2.transport.http.server.AxisHttpService.handleRequest(AxisHttpService.java:187)
at org.apache.axis2.transport.http.server.HttpServiceProcessor.run(HttpServiceProcessor.java:82)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
コードをデバッグすると、生成されたスタブ クラス内で null パラメーター (最初のパラメーター) が渡されていることがわかります。
private java.lang.Object fromOM(
org.apache.axiom.om.OMElement param,
java.lang.Class type,
java.util.Map extraNamespaces) throws org.apache.axis2.AxisFault{
try {
if (com.ttdev.ss.SimpleServiceStub.ConcatRequest.class.equals(type)){
return com.ttdev.ss.SimpleServiceStub.ConcatRequest.Factory.parse(param.getXMLStreamReaderWithoutCaching());
}
if (com.ttdev.ss.SimpleServiceStub.ConcatResponse.class.equals(type)){
return com.ttdev.ss.SimpleServiceStub.ConcatResponse.Factory.parse(param.getXMLStreamReaderWithoutCaching());
}
} catch (java.lang.Exception e) {
throw org.apache.axis2.AxisFault.makeFault(e);
}
return null;
}
axis2 バージョン 1.5.1 と 1.6.2 で試しました。サーバーはローカル サーバーで、バージョンは 1.6.2 です。
ここに wsdl コードを投稿することはできません。表示されないだけです! しかし、スタブ クラスを生成するために使用されるコードは次のとおりです。
WSDL2Code.main(new String[] {
"-S", "src/main/java",
"-R", "src/main/resources/META-INF",
"-ns2p", "http://ttdev.com/ss=com.ttdev.ss",
"-uri", "src/main/resources/SimpleService.wsdl" });
どんな助けでも大歓迎です。ところで、CXF で試したところ、うまくいきました。したがって、これはバグであるか、有効な WSDL から Java コードを生成する際に何か問題がありました。