我们在Java 1.6.0_45应用程序中有一个CXF(2.7.X)客户端(请参阅下面的代码) CXF客户端通过代理服务器调用Soap WS 尽管我们付出了很多努力,但CXF客户端会绕过代理直接向WS执行一些请求。
目前唯一的解决方案是强制代理JVM选项 但这种解决方案是不可接受的。
我们的代码中有pb吗? 我没有在互联网或CXF jira上找到任何线索。
// work only if i define proxy on jvm
/*
System.setProperty("http.proxyHost","87.65.43.21");
System.setProperty("http.proxyPort", "808");
System.setProperty("https.proxyHost", "87.65.43.21");
System.setProperty("https.proxyPort", "808");
*/
// initialize ws
URL wsdlLocation = new URL("https://12.34.56.78:8443/mockHelloWorldSoapBinding?WSDL");
QName qName = new QName("http://my.webservice.com", "HelloWorldService");
HelloWorldService helloWorldService = new HelloWorldService(wsdlLocation, qName);
HelloWorld port = helloWorldService.getHelloWorld();
HTTPConduit httpConduit = (HTTPConduit) ClientProxy.getClient(port).getConduit();
// add proxy parameters
HTTPClientPolicy policy = new HTTPClientPolicy();
policy.setProxyServer("87.65.43.21");
policy.setProxyServerPort(808);
policy.setAllowChunking(false);
httpConduit.setClient(policy);
// call ws
String response = port.sayHello("world");