使cxf - wsdl2java使用SLF4J

时间:2013-06-05 09:17:23

标签: maven logging cxf wsdl2java

我们有一个maven项目,它通过apache cxf生成wsdl客户端。主要目标是完全生成服务包装器,以便只需要在版本控制下维护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,使用任何其他记录器。

1 个答案:

答案 0 :(得分:1)

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

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