2017-03-28 6 views
1

나는 문자열의 목록을 반환 두 끝점두 개의 서로 다른 SOAP 끝점에서 동일한 이름의 작업을 수행 할 수 있습니까?

  • 직원
  • 고객

모두 엔드 포인트가 동일한 기능을 갖고 "getAddress"와 SOAP의 웹 서비스를 소비 할 필요가있다. 웹 서비스를 사용하기 위해

, 나는 과 아파치 CXF 라이브러리, 나는 내가 "Employee.getAddress"를 사용하려고 할 때 어느 예외

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) 

을 얻을 스텁을 생성하기 위해 "wsimport의"도구를 사용했다 메서드

하지만 두 끝점이 동일한 반환 형식의 동일한 함수 이름을 가질 수 있는지 여부를 명확히하기 전에 설명해 드리고 싶습니다.

documentation에서 정보를 찾을 수 없습니다.

+0

wsdl을 살펴볼 수 있습니까? 예외는 무엇입니까? – jr593

+0

@ jr593 불행히도 WSDL을 업로드 할 수는 없지만 직접 답변을 찾았습니다. 두 개의 다른 끝점에서 같은 이름의 작업이있을 수 있습니다. :) –

답변

0

약 두 번째 질문 :

동일한 기능 이름을 가질 수 없습니다. 사실 당신은 오버로딩을 할 수 없습니다. WSDL은 메소드 오버로드 (OOP가 아님)를 지원하지 않기 때문입니다. WCF는 서비스의 위치와 서비스가 노출하는 작업 또는 방법을 지정하는 WSDL을 생성합니다. 서비스에 대한 자세한 정보 (예 : WSDL 파일)를 제공해 주시면 세부 정보를 제공해 드리겠습니다.