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

时间:2010-12-13 09:59:33

标签: java web-services 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”   被评为“未知”。

     

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

     

12月13日,   2010年4:35:21 PM   [com.sun.xml.ws.policy.EffectiveAlternativeSelector]   selectAlternatives警告:WSP0019:   选择次优政策替代方案   在客户端与健身   “未知”。

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

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

6 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:4)

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

如果您不需要WS-AtomicTransaction,那么您有两种方法可以摆脱这些警告:

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

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

答案 2 :(得分:1)

我认为打开调试不是解决方案

http://dannythorpe.com/2012/01/04/java-wcf-usingaddressing-warning/描述了解决此问题的方法。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

问题提出9年后,但也许其他人需要在2019年用Java代码进行设置。

如果您只想隐藏警告(而不是解决根本问题),则可以像这样轻松地在代码中设置日志记录级别,并且不应出现任何消​​息:

      PolicyLogger logger = PolicyLogger.getLogger(EffectiveAlternativeSelector.class);
      logger.setLevel(Level.OFF);

答案 5 :(得分:-3)

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