我们有一个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,使用任何其他记录器。
答案 0 :(得分:1)
不是针对这种特殊情况,不是。 JAX-WS规范要求这些生成的服务类在任何符合JAX-WS的环境中100%可用。这将包括JDK中没有任何其他日志记录实现的那个。
对于CXF 3.0,我们已经开始讨论wsdl2java的新“cxf”前端,它允许更多地使用CXF特定的API和功能,但显然不是100%符合JAX-WS。