我们在代码中使用JAXWSProperties
包中的类com.sun.*
来设置超时属性,如下所示:
import com.sun.xml.internal.ws.developer.JAXWSProperties;
...
Map<String, Object> ctxt = ((BindingProvider) port).getRequestContext();
ctxt.put(JAXWSProperties.CONNECT_TIMEOUT, 10000);
它在本地Eclipse中编译得很好,但在连续集成系统上却没有(使用JDK 1.6)。通过研究这个问题,我了解到应该避免使用com.sun.*
包。
所以我的问题是:
JAXWSProperties
?答案 0 :(得分:20)
我将其中一个项目转换为在Maven下运行时,我遇到了同样的问题。
我发现的解决方案并不是一个理想的解决方案,实际上它更像是一个“cludge”而不是“fix”,尽管它确实通过编译器运行。和你一样,我对这个问题进行了一些研究,并发现Sun的评论说这些软件包对编译器是隐藏的,但可供JVM使用。
所以,我找到的解决方案是简单地找到常量所指向的字符串,并在本地使用它。
在你的情况下,它将是:
final static String CONNECT_TIMEOUT = "com.sun.xml.internal.ws.connect.timeout";
....
Map<String, Object> ctxt = ((BindingProvider) port).getRequestContext();
ctxt.put(CONNECT_TIMEOUT, 10000);
正如我所提到的,这并不理想,并且不能保证在将来的编译器版本中有效,所以要小心使用。