2017-03-28 9 views
1

は、私は文字列のリストを返す2つのエンドポイント2つの異なるSOAPエンドポイントで同じ名前の操作を実行できますか?

  • 従業員
  • カスタマー

両方のエンドポイントが同じ機能を持っている「getAddress」とSOAPのWebサービスを消費する必要があります。

Webサービスを利用するためには、私はスタブ とApache CXFのライブラリを生成するために、「wsimportの」ツールを使用している、私は例外を取得

Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Fault occurred while processing. 
    at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:156) 
    at com.sun.proxy.$Proxy39.getAddress(Unknown Source) 
    at com.testwebservice.Main.main(Main.java:105) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) 
Caused by: org.apache.cxf.binding.soap.SoapFault: Fault occurred while processing. 
    at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.unmarshalFault(Soap11FaultInInterceptor.java:75) 
    at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:46) 
    at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:35) 
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:262) 
    at org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:113) 
    at org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:69) 
    at org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:34) 
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:262) 
    at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:798) 
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1656) 
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1521) 
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1429) 
    at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56) 
    at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:659) 
    at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62) 
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:262) 
    at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:532) 
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:464) 
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:367) 
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:320) 
    at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:89) 
    at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:134) 

今まで私は「Employee.getAddress」を使用しようとしたとき、メソッド

しかし、前に、2つのエンドポイントが同じ戻り値の型を持つ同じ関数名を持つことができるかどうかを明確にしたいと思います。

documentationに情報が見つかりませんでした。

+0

あなたのwsdlを見てもらえますか?例外はどうですか? – jr593

+0

@ jr593残念ながらWSDLをアップロードすることはできませんが、私は自分自身で答えを見つけましたが、2つの異なるエンドポイントで同じ名前の操作が可能です:) –

答えて

0

約2番目の質問:

あなたは同じ機能名を持つことはできません。実際にあなたは傾けることもできません。 WSDLはメソッドのオーバーロード(OOPではなく)をサポートしていないためです。 WCFは、サービスの場所とサービスが公開する操作を指定するWSDLを生成します。 サービスに関する詳細情報を提供してください(WSDLファイルのように)。

関連する問題