【问题标题】:How to hide warning in jax-ws client which (maybe) caused by jax-ws library如何在 jax-ws 客户端中隐藏警告(可能)由 jax-ws 库引起
【发布时间】:2011-05-24 13:57:03
【问题描述】:

我正在使用 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}AAlwaysCapability" 被评估为“未知”。

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

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

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

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

【问题讨论】:

    标签: java web-services jax-ws


    【解决方案1】:

    你一定是在使用过时的 jax-ws 版本(我在 2.2.1 副本中没有找到 EffectiveAlternativeSelector),但让我试试。

    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

    【讨论】:

    • 我在几天前使用从 Oracle 主下载页面下载的 Java SE 7u2 sDK 遇到了这个问题。 javac 和 java 报告版本 1.7.0_02。 Oracle 是否发布过时的发行版?
    • 我指的是 jax-ws 发行版。你怎么得到的?它是否与 Java SDK 捆绑在一起?
    • 它一定是与Java SDK捆绑在一起的,因为我没有安装其他任何东西。 wsimport 生成的代码显示“此类由 JAX-WS RI 生成。* JAX-WS RI 2.2.4-b01 * 生成的源版本:2.2”
    • 我在 java 1.7 中遇到了这个问题,但在 1.6.45 中运行良好
    【解决方案2】:

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

    如果您不需要 WS-AtomicTransaction,那么您有两个选项可以消除这些警告:

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

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

    【讨论】:

    • 在我的特定情况下,WSDL 包含一个 wsaw:UsingAddressing 策略断言。这是 WSDL 中唯一的策略断言。关于如何设置客户端以正确处理寻址要求的任何建议?我宁愿修复它而不仅仅是抑制警告。
    • wsaw:UsingAddressing 不是策略断言,而是 WSDL 扩展,这是另外一回事。您在特定情况下收到的警告信息是什么?
    • 2011 年 12 月 29 日下午 2:10:34 [com.sun.xml.internal.ws.policy.EffectiveAlternativeSelector] selectAlternatives 警告:WSP0075:已评估策略断言“{w3.org/2006/05/addressing/wsdl}UsingAddressing”作为“未知”。 2011 年 12 月 29 日下午 2:10:34 [com.sun.xml.internal.ws.policy.EffectiveAlternativeSelector] selectAlternatives 警告:WSP0019:在客户端选择了次优策略替代方案,适应度为“未知”。
    • 您能否将 WSDL 发布到某处,或者至少发布一个显示 UsingAddressing 元素如何使用的相关片段?
    • wsp:Policy> ... schemas.xmlsoap.org/soap/http"> ...
    【解决方案3】:

    问题发生9年后,但也许其他人需要在2019年在java代码中设置它。

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

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

    【讨论】:

      【解决方案4】:

      我认为关闭调试不是解决方案

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            猜你喜欢
            • 2012-07-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-09-25
            • 2010-12-12
            相关资源
            最近更新 更多