2012-03-08 67 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