apache cxf wsdl2java无法生成类型 - >访问被拒绝

时间:2015-09-04 12:55:16

标签: java cxf wsdl2java

自2013年以来,我一直在努力解决这个问题...... 我使用的是Windows 7。

  

[错误]无法执行目标   org.apache.cxf:cxf-codegen-plugin:3.1.2:wsdl2java(generate-sources)   on project service-data-model-provider:执行生成源   目标org.apache.cxf:cxf-codegen-plugin:3.1.2:wsdl2java失败:失败   生成类型。   A:\杂项\ WsMock \服务的数据模型提供商的\ src \主\ java的\架构\ EO \ COMMON \ SYSTEM \的MessageHeader \ V1 \ MessageContextType.java   (访问被拒绝) - > [帮助1]

它完全随机,适用于所有cxf版本和不同的java版本。 目前我在jdk 1.8.45和cxf 3.1.2

可以通过设置

来解决问题

但是构建总是成功的,即使是会发生一些错误,在日志中显示为[警告]。所以我不能使用类似的东西。

这是我的cfg

<plugin>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-codegen-plugin</artifactId>
    <version>${cxf.version}</version>
    <executions>
        <execution>
            <id>generate-sources</id>
            <phase>generate-sources</phase>
            <configuration>
                <sourceRoot>${basedir}/src/main/java</sourceRoot>
                <defaultOptions>
                    <extraargs>
                        <extraarg>-validate</extraarg>
                        <extraarg>-exsh</extraarg>
                        <extraarg>true</extraarg>
                    </extraargs>
                </defaultOptions>
                <wsdlRoot>..\..\..</wsdlRoot>
                <includes>
                    <include>mds/apps/services/**/*.wsdl</include>
                </includes>
            </configuration>
            <goals>
                <goal>wsdl2java</goal>
            </goals>
        </execution>
    </executions>
</plugin>

另一件有用但却无法完全解决问题的方法是禁用WindowsHardDrive驱动程序中的WriteToCache设置。

这表明系统太慢,并且CXF \ Java在完全写入磁盘之前尝试使用该文件。 使用SSD时,问题只会偶尔发生。

我们的数据模型非常庞大(许多XSD&#39; s)并且硬盘驱动器已加密,这就是为什么一切都这么慢。

任何想法如何调整java来处理这个?或者它可能是一个CXF问题?

完整堆栈跟踪

  

[错误]无法执行目标   org.apache.cxf:cxf-codegen-plugin:3.1.2:wsdl2java(generate-sources)   on project service-data-model-provider:执行生成源   目标org.apache.cxf:cxf-codegen-plugin:3.1.2:wsdl2java失败:Fai领导   生成类型。   A:\杂项\ WsMock \服务的数据模型提供商的\ src \主\ java的\共同\架构\ COMMON \故障\肌酐   onfault \ v1 \ ObjectFactory.java(访问被拒绝) - &gt; [帮助1]   org.apache.maven.lifecycle.LifecycleExecutionException:失败   执行目标org.apache.cxf:cxf-codegen-plugin:3.1.2:w sdl2java   项目服务 - 数据模型提供者的(generate-sources):执行   生成目标org.apache.cx的源代码   f:cxf-codegen-plugin:3.1.2:wsdl2java失败:无法生成类型。           在org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:224)           在org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)           在org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)           在org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)           在org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)           在org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder。   Java的:51)           在org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)           在org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)           在org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)           在org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)           在org.apache.maven.cli.MavenCli.execute(MavenCli.java:862)           在org.apache.maven.cli.MavenCli.doMain(MavenCli.java:286)           在org.apache.maven.cli.MavenCli.main(MavenCli.java:197)           at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)           at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)           at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)           在java.lang.reflect.Method.invoke(Method.java:497)           在org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)           在org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)           在org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)           在org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)   引起:org.apache.maven.plugin.PluginExecutionException:执行   生成目标org.apache.cxf:cxf-codeg   en-plugin:3.1.2:wsdl2java失败:无法生成类型。           在org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:145)           在org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)           ... 20更多引起:org.apache.cxf.tools.common.ToolException:无法生成类型。           在org.apache.cxf.tools.wsdlto.databinding.jaxb.JAXBDataBinding.generate(JAXBDataBinding.java:839)           at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.generateTypes(WSDLToJavaContainer.java:730)           在org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.processWsdl(WSDLToJavaContainer.java:270)           在org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:164)           在org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:415)           在org.apache.cxf.tools.common.toolspec.ToolRunner.runTool(ToolRunner.java:103)           在org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:113)           在org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:86)           在org.apache.cxf.maven_plugin.wsdl2java.WSDL2JavaMojo.generate(WSDL2JavaMojo.java:415)           在org.apache.cxf.maven_plugin.AbstractCodegenMoho.execute(AbstractCodegenMoho.java:260)           在org.apache.cxf.maven_plugin.wsdl2java.WSDL2JavaMojo.execute(WSDL2JavaMojo.java:512)           在org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)           ... 21更多引起:java.io.FileNotFoundException:a:\ Misc \ WsMock \ service-data-model-provider \ src \ main \ java \ uk \ co \ schema \   common \ fault \ creationfault \ v1 \ ObjectFactory.java(访问被拒绝)           at java.io.FileOutputStream.open0(Native Method)           在java.io.FileOutputStream.open(FileOutputStream.java:270)           在java.io.FileOutputStream。(FileOutputStream.java:213)           在java.io.FileOutputStream。(FileOutputStream.java:162)           at org.sonatype.plexus.build.incremental.DefaultBuildContext.newFileOutputStream(DefaultBuildContext.java:54)           在org.apache.cxf.maven_plugin.wsdl2java.WSDL2JavaMojo $ 1.createOutputStream(WSDL2JavaMojo.java:411)           at org.apache.cxf.tools.wsdlto.databinding.jaxb.TypesCodeWriter.openBinary(TypesCodeWriter.java:72)           在com.sun.codemodel.CodeWriter.openSource(CodeWriter.java:100)           在com.sun.codemodel.JPackage.createJavaSourceFileWriter(JPackage.java:490)           在com.sun.codemodel.JPackage.build(JPackage.java:441)           在com.sun.codemodel.JCodeModel.build(JCodeModel.java:311)           在com.sun.codemodel.JCodeModel.build(JCodeModel.java:301)           在org.apache.cxf.tools.wsdlto.databinding.jaxb.JAXBDataBinding.generate(JAXBDataBinding.java:827)           ... 32更多[错误] [错误]使用-X开关重新运行Maven以启用完整的调试日志记录。 [错误] [错误]有关详细信息   关于错误和可能的解决方案,请阅读以下内容   文章:[错误] [帮助1]   http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException

干杯 PREM

3 个答案:

答案 0 :(得分:0)

我也发生了同样的事情。
我也有jdk 1.8和cxf 3.1.x
我在一台旧电脑上用jdk 1.7和cxf 2.7.0尝试了相同的任务,它就像魅力一样。
添加&lt;插件&gt;每次创建构建时都会从wsdl生成模式和服务..我不知道它是否是一种有效的方式,但我提取了模式和服务一次并将它们添加到根目录。
感谢

答案 1 :(得分:0)

当我的wsdl文件出现问题时,我也遇到了类似的问题。请检查wsdl文件和所有丢失的文件路径。

答案 2 :(得分:0)

(将@Prem的评论移至该答案并添加更多详细信息)

添加<fork>always</fork>可解决此问题。

示例配置:

     <plugin>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-codegen-plugin</artifactId>
        <version>${cxf.version}</version>
        <executions>
          <execution>
            <id>generate-source</id>
            <phase>generate-sources</phase>
            <configuration>
              <fork>always</fork>
            </configuration>
...
<!-- Rest of the configuration -->

文档-maven-cxf-codegen - other config