我正在使用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,但直到现在它也没有答案。
有没有办法隐藏此警告?我尝试使用谷歌搜索,但找不到任何匹配问题的答案..
答案 0 :(得分:5)
您必须使用过时版本的jax-ws(我在2.2.1副本中找不到EffectiveAternativeSelector),但让我试试。
$JAVA_HOME/lib/logging.properties
处找到的那个)com.sun.xml.ws.policy.EffectiveAlternativeSelector.level=OFF
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,那么您有两种方法可以摆脱这些警告:
如果您需要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 =“?”)在这里有用吗?