2010-06-09 100 views
1

我正在尝试将Hyperjaxb3与Apache CXF配合使用来从WSDL优先Web服务生成持久性注释。我已经将Hyperjaxb3-ejb插件插入到cxf-codegen插件中,就像这样。Hyperjaxb和Apache CXF

<plugin> 
    <groupId>org.apache.cxf</groupId> 
    <artifactId>cxf-codegen-plugin</artifactId> 
    <version>${cxf.version}</version> 
    <dependencies> 
    <dependency> 
     <groupId>org.jvnet.jaxb2_commons</groupId> 
     <artifactId>jaxb2-basics</artifactId> 
     <version>0.5.2</version> 
    </dependency> 
    <dependency>  
     <groupId>org.jvnet.hyperjaxb3</groupId> 
     <artifactId>hyperjaxb3-ejb-plugin</artifactId> 
     <version>0.5.4</version> 
    </dependency> 
    </dependencies> 
    <executions> 
    <execution>  
     <id>generate-sources</id> 
     <phase>generate-sources</phase> 
     <configuration> 
     <sourceRoot>${project.build.directory}/generated/cxf</sourceRoot> 
     <wsdlOptions> 
      <wsdlOption> 
      <wsdl>${basedir}/src/main/resources/wsdl/CDXLEAToCourt.wsdl</wsdl> 
      <xjcargs> 
       <xjcarg>-Xequals</xjcarg> 
       <xjcarg>-XtoString</xjcarg> 
       <xjcarg>-Xhyperjaxb3-ejb</xjcarg> 
      </xjcargs> 
      </wsdlOption> 
     </wsdlOptions> 
     </configuration> 
     <goals> 
     <goal>wsdl2java</goal> 
     </goals> 
    </execution> 
    </executions> 
</plugin> 

当我生成源,我得到以下信息性的堆栈跟踪。

Failed to execute goal org.apache.cxf:cxf-codegen-plugin:2.2.7:wsdl2java (generate-sources) on project leaToCourtWS: Failed to generate types. -> [Help 1] 
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.cxf:cxf-codegen-plugin:2.2.7:wsdl2java (generate-sources) on project leaToCourtWS: Failed to generate types. 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:585) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:324) 
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:247) 
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:104) 
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:427) 
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:157) 
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:121) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) 
Caused by: org.apache.maven.plugin.MojoExecutionException: Failed to generate types. 
    at org.apache.cxf.maven_plugin.WSDL2JavaMojo.callWsdl2Java(WSDL2JavaMojo.java:409) 
    at org.apache.cxf.maven_plugin.WSDL2JavaMojo.execute(WSDL2JavaMojo.java:361) 
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:105) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:577) 
    ... 14 more 
Caused by: org.apache.cxf.tools.common.ToolException: Failed to generate types. 
    at org.apache.cxf.tools.wsdlto.databinding.jaxb.JAXBDataBinding.generate(JAXBDataBinding.java:716) 
    at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.generateTypes(WSDLToJavaContainer.java:582) 
    at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.processWsdl(WSDLToJavaContainer.java:228) 
    at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:128) 
    at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:271) 
    at org.apache.cxf.tools.common.toolspec.ToolRunner.runTool(ToolRunner.java:103) 
    at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:113) 
    at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:86) 
    at org.apache.cxf.maven_plugin.WSDL2JavaMojo.callWsdl2Java(WSDL2JavaMojo.java:406) 
    ... 17 more 

我一直在抨击我的头对此一段时间。我试图在没有Hyperjaxb的情况下继续该项目,但不想承担维护成本。有任何想法吗?异常的解决方案 - 或使用Hyperjaxb的替代方案 - 会很好。

回答

3

找到了解决方案。我向项目负责人Aleksei发送了电子邮件,他告诉我Hyperjaxb3 CXF集成在.5.5中引入,但尚未发布。 D'哦!

他建议我使用snapshot repository。我将库添加到我的POM中,将hyperjaxb3-ejb-plugin的版本更改为0.5.5-SNAPSHOT-并且到目前为止,所有内容都可以很好地工作。

+1

非常高兴它的工作原理。 :) – lexicore 2010-07-06 07:59:25

+1

顺便说一下0.5.5现在发布。 – lexicore 2010-07-13 14:45:11

2

看来问题来自您的WSDL文件。

有内Hyperjaxb3的源代码中调用customerservice-cxf,可以帮助你的工作示例。

+0

WSDL单独与CXF一起工作良好,所以我认为这是一个CXF/Hyperjaxb问题。 – 2010-06-11 19:05:20