com.sun.xml.internal.ws.developer.JAXWS编译时找不到属性

2022-09-04 19:23:33

我们在代码中使用了包中的类,以便设置超时属性,如下所示:JAXWSPropertiescom.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

答案 1

我刚刚在将我们的一个项目转换为Maven下运行时遇到了几乎相同的问题。

我发现的解决方案并不是一个理想的解决方案,实际上它更像是一个“cludge”而不是“修复”,尽管它确实通过编译器OK运行。像你一样,我对这个问题做了一些研究,并发现了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);

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


答案 2

推荐