2013-06-05 6 views
1

У нас есть проект maven, который создает клиент wsdl через apache cxf. Основная цель состоит в том, чтобы полная оболочка сервиса была полностью сгенерирована, так что только файлы wsdl должны поддерживаться при управлении версиями.make cxf - wsdl2java использовать SLF4J

<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

Не для этого конкретного случая, нет. Спецификация JAX-WS гарантирует, что эти созданные классы сервисов будут на 100% полезны в любой среде, совместимой с JAX-WS. Это будет включать в себя JDK, в котором не было бы никакой другой реализации каротажа.

Для CXF 3.0 мы начали обсуждать новый интерфейс cxf для wsdl2java, который позволит больше использовать специфические API и функции CXF, но, очевидно, не будет соответствовать 100% JAX-WS.

+0

Не тот ответ, который я хотел бы услышать, но спасибо, чтобы было ясно, почему это так, как есть ... Есть ли способ избежать регистрации, т. Е. Передать исключение для вызывающего? –