我们使用了类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
?
我刚刚在将我们的一个项目转换为在 Maven 下运行时遇到了几乎相同的问题。
我发现的解决方案实际上并不是一个理想的解决方案,事实上它更像是一个“障碍”而不是“修复”,尽管它确实可以通过编译器运行。和你一样,我对这个问题做了一些研究,并发现了来自 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);
正如我所提到的,这并不理想,并且不能保证在未来的编译器版本中工作,因此请小心使用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)