有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

jax-ws-com。太阳xml。内部的ws。开发商编译时未找到JAXWSProperties

我们在代码中使用了来自com.sun.*包的类JAXWSProperties,以便像这样设置超时属性:

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

它在本地Eclipse中可以很好地编译,但在连续集成系统(都使用JDK1.6)上编译不好。通过研究这个问题,我了解到应该避免使用com.sun.*

因此,我的问题是:

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

共 (1) 个答案

  1. # 1 楼答案

    在将我们的一个项目转换为在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);
    

    正如我提到的,这并不理想,并且不能保证在未来的编译器版本中工作,所以请小心使用