WSDL 버전마다 다른 SOAP 클라이언트 스텁이 생성됩니다. 이것은 SOAP 서버가 다른 버전의 웹 서비스를 가지고 있기 때문에 발생합니다. 웹 서비스 버전 1에 대한여러 SOAP 스텁 버전 관리
스텁은 soap.stubs.version2에서 버전 2 soap.stubs.version1 및 스텁에 포장되어 있습니다.
이것은 WSDL 버전 1의 MyStub가 버전 2의 MyStub과 다를 수 있다는 것을 의미합니다. MyStub 버전 2를 반환하고 버전 1의 MyStub 값을 보유하는 SOAP 메소드를 호출하면 ", XML 응답을 스텁의 특성에 올바르게 매핑 할 수 없기 때문입니다.
이 때문에 클래스 유형을 SOAP 서버와 연관시켜야합니다.
각 버전에 대한 논리를 복제하는 것은 단순히 불가능하다 :
if(SoapServer.version==1)
{
soap.subts.version1.MyStub result = SoapServer.getFoo();
/* rest of the logic using result of type soap.subts.version1.MyStub */
}
else if(SoapServer.version==2)
{
soap.subts.version2.MyStub result = SoapServer.getFoo();
/* rest of the logic using result of type soap.subts.version2.MyStub */
}
때마다 나는 새로운 스텁을 사용하는 모든 논리를 복제 할 필요가 최신 버전에 대한 스텁을 생성 할 것입니다. 때로는 변경되는 유일한 속성입니다.
내가 그 "클래스"에 대한 모든 로직을 다시 구현하지 않고 SOAP 서버에 따라 적절한 스텁을 사용하는 방법 등으로?
는 내가 객체를 사용하여 생각하지만 그 경우의 충당 instanceof를 필요하고 캐스트 것이다.