我在部署Glassfish Web应用程序时遇到问题,该应用程序定期调用Web服务。基本上问题似乎是对javax.xml.ws.Service的调用似乎永远不会返回。没有例外。
代码如下所示(对象/变量名称已更改):
MyService ss = new MyService(wsdlURL, SERVICE_NAME);
其中wsdlURL是本地WSDL文件的URL对象(也尝试使用远程托管的WSDL),而SERVICE_NAME是具有Web服务名称的字符串。
MyService对象的实际构造函数只是在javax.xml.ws.Service上调用super
public class MyService extends Service {
public MyService(URL wsdlLocation, QName serviceName) {
super(wsdlLocation, serviceName);
}
}
在我的开发机器上,这完全符合预期,但在部署时调用了 MyService构造函数永远不会返回。
我正在尝试在运行于Red Hat Enterprise Linux Server 5.6(Tikanga)上的Glassfish v3.1服务器上部署它。
开发和部署环境中的Java版本为1.6。
有没有人对这里可能发生的事情有任何想法?缺少任何异常使得调试非常困难。我想这可能可能是一个WSDL问题,就像我正确理解它一样,javax.xml.ws.Service在调用构造函数时做了一些解释,我想这可能会导致挂起的东西。但是,它在我的开发机器上工作正常,但在部署服务器上却不行,这似乎很奇怪。
非常感谢任何帮助!
答案 0 :(得分:0)
问题可能是因为部署计算机上正在使用的代理。 我遇到了同样的问题,后来发现它是由代理设置引起的。
在创建Stub类之前尝试设置代理,即
System.setProperty("http.proxyHost", "xxx.x.xx.xx");
System.setProperty("http.proxyPort", "8080");
MyService ss = new MyService(wsdlURL, SERVICE_NAME);
答案 1 :(得分:0)
我有类似的经历,那是因为给定的URL无效。