[英]How to hide warning in jax-ws client which (maybe) caused by jax-ws library
我正在使用 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:在客户端选择了次优策略替代方案,适应度为“未知”。
我在这里发现了同样的问题: http : //forums.java.net/node/707265 ,但直到现在它也没有答案。
有没有办法隐藏这个警告? 我尝试使用 google 进行搜索,但找不到此问题的任何匹配答案。
您必须使用过时的 jax-ws 版本(我在 2.2.1 副本中没有找到 EffectiveAlternativeSelector),但让我尝试一下。
$JAVA_HOME/lib/logging.properties
)com.sun.xml.ws.policy.EffectiveAlternativeSelector.level=OFF
下行添加到该文件: com.sun.xml.ws.policy.EffectiveAlternativeSelector.level=OFF
java -Djava.util.logging.config.file=/path/to/your/logging.properties MainClass
我的猜测是生成客户端的 WSDL 包含与 WS-AtomicTransaction 相关的策略断言。 由于 WS-AtomicTransaction 需要一个事务管理器而 JRE 不包含一个,因此 JRE 中的 JAX-WS 运行时不支持 WS-AtomicTransaction 并且不理解这些策略断言也就不足为奇了。
如果您不需要 WS-AtomicTransaction,那么您有两种选择可以摆脱这些警告:
如果您需要 WS-AtomicTransaction,那么您可能必须在应用程序服务器中或作为 Java EE 应用程序客户端运行代码。
问题提出 9 年后,但也许其他人需要在 2019 年在 Java 代码中设置它。
如果您只想隐藏警告(而不是解决潜在问题),您可以像这样轻松地在代码中设置日志记录级别,并且不应该出现任何消息:
PolicyLogger logger = PolicyLogger.getLogger(EffectiveAlternativeSelector.class);
logger.setLevel(Level.OFF);
我认为关闭调试不是解决方案
http://dannythorpe.com/2012/01/04/java-wcf-usingaddressing-warning/描述了解决此问题的方法。
@SupressWarnings() 在这种情况下没有帮助。 该注释是为了告诉编译器在您可能误用某些 Java 类型时不要警告您。 这些 ws 警告正在通过管道传输到 System.err
@SupressWarning(value="?") 在这里有用吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.