我现在使用Apache CXF作为一个Web服务客户端,用于绕过NTLM身份验证。它运行得很好,但我想知道为什么似乎无法设置Web服务的目标端点。CXF似乎希望在运行时获取WSDL,有些奇怪 - 不确定原因。它从WSDL中获取物理端点,这在测试环境中可以正常工作,但在部署时肯定会发生变化。
以下是一些演示代码:
MyWebServices service = new MyWebServices ();
MyWebServicesSoap port = service.getMyWebServicesSoap12();
// Turn off chunking so that NTLM can occur
Client client = ClientProxy.getClient(port);
HTTPConduit http = (HTTPConduit) client.getConduit();
HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
httpClientPolicy.setConnectionTimeout(36000);
httpClientPolicy.setAllowChunking(false);
http.setClient(httpClientPolicy);
port.doSomethingUseful();
再次强调,我在CXF客户端API中找不到设置服务终端的地方。至少目前我没有看到。 在这种情况下,目标是http://localhost/integration/webservices/mywebservices.asmx,但可能会有其他位置。毫无疑问,这个平凡的问题肯定有解决办法吧?