JAX-WS-GENERATED 코드에서 웹 서비스에 액세스 할 때 호스트와 포트를 어떻게 지정합니까?

StackOverflow https://stackoverflow.com/questions/649019

  •  19-08-2019
  •  | 
  •  

문제

웹 서비스 용 WSDL 파일이 있습니다. JAX-WS/WSIMPORT를 사용하여 웹 서비스에 클라이언트 인터페이스를 생성합니다. 호스트가 웹 서비스가 실행될 것이라는 것을 미리 알지 못하며 거의 그렇지 않을 것이라고 보장 할 수 있습니다. http : // localhost : 8080. 명령 줄 인수에서 런타임에 호스트 URL을 지정하는 방법은 무엇입니까?

생성 된 생성자 MyService(URL wsdlLocation, QName serviceName) 내가 원하는 것 같지 않지만 어쩌면 아마도? 아마도 변형 중 하나 일 것입니다 Service.getPort(...)?

감사!

도움이 되었습니까?

해결책

생성자는 귀하의 요구에 맞게 잘 작동해야합니다. MyService를 만들 때 원하는 WSDL의 URL을 전달하십시오. http : // someurl : someport/service? wsdl.

다른 팁

생성 된 생성자에 가까운 생성 된 소스를 살펴 보면 기본 생성자에서 무엇을 넣을지 알아낼 수 있어야합니다.

public OrdersService() {
    super(WSDL_LOCATION, new QName("http://namespace.org/order/v1", "OrdersService"));
}

클래스에서 정적 필드에서 WSDL_LOCATE의 DEF를 찾을 수 있어야합니다.

생성 된 코드 (예 : "helloworldwebserviceimplservice")에서 맨 위에있는 정적 블록을보고 메타 인프 아래에있는 wsdl url 또는 wsdl 파일을 참조하십시오.

 /*
static {
    URL url = null;
    try {
        url = new URL("http://loclahost/HelloWorld/HelloWorldWebServiceImpl?wsdl");
    } catch (MalformedURLException e) {
        java.util.logging.Logger.getLogger(HelloWorldWebServiceImplService.class.getName())
            .log(java.util.logging.Level.INFO, 
                 "Can not initialize the default wsdl from {0}", "http://loclahost/HelloWorld/HelloWorldWebServiceImpl?wsdl");
    }
    WSDL_LOCATION = url;
}
*/

일단 당신이 이것을 댓글을 달면 당신은 또한 기본 구성자를 주석해야하며 정적 wsdl_location = null을 Intialize 할 필요는 없습니다. (null) 아래와 같이 두 개의 생성자가 없습니다.

public final static URL WSDL_LOCATION = null;
public HelloWorldWebServiceImplService(URL wsdlLocation) {
    super(wsdlLocation, SERVICE);
}

public HelloWorldWebServiceImplService(URL wsdlLocation, QName serviceName) {
    super(wsdlLocation, serviceName);
}

웹 서비스 호출 : 이제이 개체를 인스턴스화하는 클라이언트 호출에서 웹 서비스 URL을 표시된 인수로 전달합니다.

   //You can read mywebserviceURL from property file as String.
    String mywebserviceURL = "http://myqamachine.com/HelloWorld/HelloWorldWebServiceImpl?wsdl"
    URL WsURL = new URL(mywebserviceURL);
    HelloWorldWebServiceImplService webService = new HelloWorldWebServiceImplService(WsURL);

따라서 WebService URL을 동적으로 가리킬 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top