2012-03-08 102 views
1

我使用axis1工具從WSDL生成我的客戶端。我的問題是我想連接到不同於WSDL上的主機。因此我所做的:Java axis1.X客戶端更改地址

new BobsledWSHostLocator("http://localhost:8731/Bobsled/Core/?wsdl", new QName("http://lint.com/schemas/Bobsled", "BobsledWSHost")); 

但是當我嘗試與主機comunicate它還是到我有我從中產生的客戶端...當它應該去本地主機的WSDL地址。

我想更改主機地址的圖表,所以我可以有不同的主機。

我錯過了什麼?

回答

0

試試這個:

BobsledWSHostLocator locator = new BobsledWSHostLocator(); 
BobsledWSHostService service = locator.getBobsledWSHostHttpPort(new URL("http://localhost:8731/Bobsled/Core/?wsdl")); 
+0

我沒有.getBobsledWSHostHttpPort ...但我有其他服務...我應該在每一個使用它嗎?沒有辦法一次改變所有的端口嗎? – 2012-03-08 15:18:22

+0

嗯,這是我在我們的服務中設置端點的方式... – nwinkler 2012-03-08 15:26:27

0

軸也應該產生在BindingStub結尾的類,它有一個構造函數以web服務端點的URL,並且可以構造給你的服務的QName一個org.apache.axis.client.Service對象。它可能是這個樣子:

new BobsledWSHostBindingStub(
    new URL("http://example.com/Bobsled/Core/"), 
    new Service(new QName("http://lint.com/schemas/Bobsled", "BobsledWSHost"))); 

編輯:這實際上是說nwinkler提到get*Port方法在內部使用相同的代碼。

+0

不是它沒有...只有BobsledWSHostLocator和BobsledWSHost(它是一個接口)。 我不明白...如果BobsledWSHostLocator可以接收wsdlocator,爲什麼它不會將服務地址更改爲localhost? – 2012-03-08 15:21:50