【问题标题】:make cxf - wsdl2java to use SLF4J使 cxf - wsdl2java 使用 SLF4J
【发布时间】:2013-05-31 22:09:46
【问题描述】:

我们有一个通过 apache cxf 生成 wsdl 客户端的 maven 项目。主要目标是,完全生成服务包装器,以便只有 wsdl 文件必须在版本控制下进行维护。

<plugin>
  <groupId>org.apache.cxf</groupId>
  <artifactId>cxf-codegen-plugin</artifactId>
  <version>2.7.5</version>
  <executions>
    <execution>
      <id>generate-sources</id>
      <phase>generate-sources</phase>
      <configuration>
        <wsdlOptions>
          <wsdlOption>
            <wsdl>src/main/resources/WSAnzeigeKunde.wsdl</wsdl>
            <extraargs>
              <extraarg>-frontend</extraarg>
              <extraarg>jaxws21</extraarg>
              <extraarg>-p</extraarg>
              <extraarg>http://www.die-software.com/xsd/OBS_ANZEIGE_KUNDE_ANTWORT.xsd=com.diesoftware.service.anzeigekunde</extraarg>
            </extraargs>
          </wsdlOption>
        </wsdlOptions>
      </configuration>
      <goals>
        <goal>wsdl2java</goal>
      </goals>
    </execution>
  </executions>
</plugin>

到目前为止,这工作正常。 结果代码看起来像

public class WSAnzeigeAssetsummenService extends Service {
  public final static URL WSDL_LOCATION;
  public final static QName SERVICE = new QName("http://www.die-software.com/xsd/OBS_ANZEIGE_ASSETSUMMEN_ANTWORT.xsd", "WSAnzeigeAssetsummenService");
  public final static QName WSAnzeigeAssetsummenPort = new QName("http://www.die-software.com/xsd/OBS_ANZEIGE_ASSETSUMMEN_ANTWORT.xsd", "WSAnzeigeAssetsummenPort");
  static {
      URL url = null;
      try {
        url = new URL("file:/C:/Data/workspace-temp/WebAppPOC/src/main/resources/WSAnzeigeAssetsummen.wsdl");
      } catch (MalformedURLException e) {
        java.util.logging.Logger.getLogger(WSAnzeigeAssetsummenService.class.getName())
            .log(java.util.logging.Level.INFO, 
                 "Can not initialize the default wsdl from {0}", "file:/C:/Data/workspace-temp/WebAppPOC/src/main/resources/WSAnzeigeAssetsummen.wsdl");
      }
      WSDL_LOCATION = url;
  }

我发现 cxf 支持 SLF4J (http://cxf.apache.org/docs/debugging-and-logging.html#DebuggingandLogging-UsingLog4jInsteadofjava.util.logging) 但这似乎不属于 wsdl2java。

真的没有办法配置wsdl2java,使用任何其他记录器。

【问题讨论】:

    标签: maven logging cxf wsdl2java


    【解决方案1】:

    不适用于这种特殊情况,不。 JAX-WS 规范要求这些生成的服务类在任何符合 JAX-WS 的环境中都是 100% 可用的。这将包括 JDK 中没有任何其他日志记录实现的那个。

    对于 CXF 3.0,我们已经开始讨论 wsdl2java 的新“cxf”前端,它允许更多地使用 CXF 特定的 API 和功能,但显然不会 100% 兼容 JAX-WS。

    【讨论】:

    • 不是我想听到的答案,但感谢您说清楚,为什么会这样......有没有办法避免记录,即将异常传递给来电者?
    猜你喜欢
    • 2010-11-16
    • 2011-07-02
    • 2014-09-27
    • 1970-01-01
    • 2014-07-10
    • 2013-07-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-22
    相关资源
    最近更新 更多