誰でもCXFからWCF(Soap 1.2)Webサービスを呼び出す方法を知っていますか?CXF Webサービスクライアントを使用してWCF Soap 1.2 Webサービスを使用するにはどうすればよいですか?
私は基本的なhello worldのクライアントをしばらく稼働させようとしてきましたが、私は運がなかったのです。
Soap 1.1では正常に動作します。
SoapBindingを印刷するときに、クライアントがsoap 1.2サービスであってもsoap 1.1を使用しています。 soap bindingを手動で1.2に設定すると、Webサービス呼び出し時にフリーズしてしまいます。ソケットタイムアウト例外(読み取りタイムアウト)。
public static void main(String[] args) {
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(ITest.class);
factory.setAddress("http://localhost/Test/test.svc");
final Soap12 soap12 = Soap12.getInstance();
BindingConfiguration config = new BindingConfiguration() {
@Override
public String getBindingId() {
return soap12.getBindingId();
}
};
factory.setBindingConfig(config);
factory.setBindingId(soap12.getBindingId());
ITest service = (ITest) factory.create();
org.apache.cxf.endpoint.Client client = ClientProxy.getClient(service);
client.getRequestContext().put("ContentType", "text/xml; charset=utf-8");
SoapBinding binding = (SoapBinding) client.getEndpoint().getBinding();
System.out.println("[" + binding.getSoapVersion() + "]");
System.out.println(service.test("World"));
}
これはWCFサービスに送信されるSOAPリクエストです。
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Body>
<Test xmlns="http://tempuri.org/" xmlns:ns2="http://schemas.microsoft.com/2003/10/Serialization/">
<s>World</s>
</Test>
</soap:Body>
</soap:Envelope>
私はこの問題がWCFに何らかのセキュリティを期待していると考えていると思います。 – ScArcher2
サーバー側のログに役立つものはありますか? (もしそうでなければ、ログレベルを最も詳細なものに変えると便利なことはありますか?:-)) –
CXFはwsHttpBindingを使用するSoap 1.2 WCFサービスの呼び出しをサポートしていません。それを答えに入れたいなら、私はそれを受け入れます。 – ScArcher2