我们有一个通过 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,使用任何其他记录器。