私は単純なWebサービスを持っています:
私も同じ問題を抱えてる。「?wsdl」を追加しないと、ソープが失敗します。どうすればこの例外を回避できますか?
@WebService
@SOAPBinding(style = Style.RPC)
public interface TimeServer {
@WebMethod
@WebResult(partName = "time_response")
String getTimeAsString();
@WebMethod
@WebResult(partName = "time_response")
long getTimeAsElapsed();
}
そして実装:
@WebService(endpointInterface = "x.y.z.TimeServer")
public class TimeServiceImpl implements TimeServer {
public TimeServiceImpl() {}
@Override
public String getTimeAsString() {return new Date().toString();}
@Override
public long getTimeAsElapsed() {return new Date().getTime();}
}
この Web サービスを Jboss As 7.0.1 で実行しています。 すべてがうまくいきます!
リンクlocalhost:8080/project/time?wsdlを開くと 、すべてうまくいきます -私は wsdl を持っています。
しかし、「?wsdl」を追加しないと例外があります。
14:26:58,192 WARNING [org.apache.cxf.phase.PhaseInterceptorChain] (http-localhost-127.0.0.1-8080-1) Interceptor for {http://x.z.y/}HelloWorld has thrown exception, unwinding now: org.apache.cxf.interceptor.Fault: No such operation: null (HTTP GET PATH_INFO: /project/timenull)
at org.apache.cxf.interceptor.URIMappingInterceptor.handleMessage(URIMappingInterceptor.java:88)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
そして、サーバーから次の応答があります。
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>
No such operation: null (HTTP GET PATH_INFO: /soap-service/timenull)
</faultstring>
</soap:Fault>
</soap:Body>
</soap:Envelope>
どうすればこの例外を回避できますか?
このエラー応答の代わりに、クライアントに別のメッセージが表示された方がよいでしょうか? クライアントが「?wsdl」なしでリンクを開いたときに別の XML を送信するにはどうすればよいですか?
タナクス