如何在jax-ws客户端中隐藏警告(可能)由jax-ws库引起

我正在使用netbeans在我的应用程序中生成Web服务客户端。 我的程序使用jax-ws库来设置调用Web服务的超时。

出现问题是因为每当我启动此程序时它会生成大量此警告消息:

2010年12月13日下午4:35:21 [com.sun.xml.ws.policy.EffectiveAlternativeSelector] selectAlternatives警告:WSP0075:策略断言“{ http://schemas.xmlsoap.org/ws/2004/10/wsat } ATAlwaysCapability“被评为”未知“。

2010年12月13日下午4:35:21 [com.sun.xml.ws.policy.EffectiveAlternativeSelector] selectAlternatives警告:WSP0075:策略断言“{ http://schemas.xmlsoap.org/ws/2004/10/wsat } ATAssertion“被评为”未知“。

2010年12月13日下午4:35:21 [com.sun.xml.ws.policy.EffectiveAlternativeSelector] selectAlternatives警告:WSP0019:在客户端选择健身“UNKNOWN”的次优策略备选方案。

我在这里发现了同样的问题: http : //forums.java.net/node/707265 ,但直到现在它也没有答案。

有没有办法隐藏这个警告? 我尝试使用谷歌搜索,并找不到任何匹配的问题答案..

我的猜测是生成客户端的WSDL包含与WS-AtomicTransaction相关的策略断言。 由于WS-AtomicTransaction需要事务管理器且JRE不包含事务管理器,因此JRE中的JAX-WS运行时不支持WS-AtomicTransaction并且不理解这些策略断言也就不足为奇了。

如果您不需要WS-AtomicTransaction,那么您有两个选项来摆脱这些警告:

  • 配置日志记录以禁止显示这些警告。
  • 从WSDL中删除断言。

如果需要WS-AtomicTransaction,则可能必须在应用程序服务器或Java EE应用程序客户机中运行代码。

您必须使用过时版本的jax-ws(我在2.2.1副本中找不到EffectiveAternativeSelector),但让我试一试。

  1. 在启动应用程序时可访问的某个路径上创建logging.properties文件(至少可以使用$JAVA_HOME/lib/logging.properties
  2. com.sun.xml.ws.policy.EffectiveAlternativeSelector.level=OFF下行添加到该文件: com.sun.xml.ws.policy.EffectiveAlternativeSelector.level=OFF
  3. 启动您的应用程序

java -Djava.util.logging.config.file=/path/to/your/logging.properties MainClass

@SupressWarnings()在这种情况下没有帮助。 该注释是告诉编译器在您可能滥用某些java类型时不要警告您。 这些ws警告正在通过管道输入System.err

@SupressWarning(value =“?”)在这里有用吗?