编译时找不到com.sun.xml.internal.ws.developer.JAXWSProperties

Ale*_*ühl 12 java jax-ws

我们使用了类JAXWSPropertiescom.sun.*包中的代码,以这样设置超时属性:

import com.sun.xml.internal.ws.developer.JAXWSProperties;
...
Map<String, Object> ctxt = ((BindingProvider) port).getRequestContext();
ctxt.put(JAXWSProperties.CONNECT_TIMEOUT, 10000);
Run Code Online (Sandbox Code Playgroud)

它在本地Eclipse中编译良好,但不在连续集成系统上编译(两者都使用JDK 1.6).通过研究这个问题,我了解到com.sun.*应该避免使用这个包.

所以我的问题是:

  • 导致编译时导入失败的原因是什么?
  • 应该用什么来代替JAXWSProperties

Cro*_*ter 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);
Run Code Online (Sandbox Code Playgroud)

正如我所提到的,这并不理想,并且无法保证在将来的编译器版本中工作,因此请谨慎使用.