2011-04-26 130 views
0

我正在使用wsimport來生成SOAP客戶端類。然而,問題在於,當服務器在端口8080上運行時,會有一個代理使它可以通過端口80從Internet訪問。在WSDL中,仍然指定了服務器端口8080。SOAP客戶端端口混亂

現在,當我連接到服務器時,客戶端請求的第一件事是WSDL。然後它檢索此WSDl中的URL並嘗試使用它連接到服務器,由於端口8080無法從外部訪問,因此顯然失敗。

有沒有解決此問題的標準方法?

謝謝。

+0

哪些語言和平臺,是這樣嗎? – 2011-04-26 14:36:07

+0

@John Saunders wsimport是一個隨Java 6一起提供的JAX-WS工具,所以語言是Java,而這個平臺......以及這個不重要。 :) – 2011-05-10 16:24:30

+0

@Joshua:謝謝。你是說這沒關係,如果這是在j2ee上運行? – 2011-05-10 17:07:23

回答

2

如果您的客戶端代碼得到WSDL成功,那麼你可以像這樣明確地指定端點地址:

ExampleService exampleService = new ExampleService(); 
Example example = exampleService.getExamplePort(); 
BindingProvider bindingProvider = (BindingProvider) example; 
bindingProvider.getRequestContext().put(
    BindingProvider.ENDPOINT_ADDRESS_PROPERTY, 
    "http://ws.someservice.com:80/soap/ExampleBean"); 

最後一行將覆蓋WSDL,這是一個內部的端口URL。

我對這裏使用wsimport的更多細節:http://shrubbery.homeip.net/c/display/W/Consuming+a+Web+Service+with+Java+6+and+JAX-WS