Uploaded image for project: 'CXF'
  1. CXF
  2. CXF-5403

wsdl2java generating file names that are too long for encrypted filesystem

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Duplicate
    • 2.7.7
    • 2.7.8
    • Tooling
    • Linux Mint 15, EcryptFS

    • Unknown

    Description

      When using the CXF Codegen Maven plugin, and the wsdl2java goal, I get the following exception:

      [WARNING] Could not create marker file /home/andrew/workspace/XXXX/xxxx-interfaces-esb-parent/xxxx-interfaces-client/target/cxf-codegen-plugin-markers/.file__home_andrew_workspace_XXXX_xxxx-interfaces-esb-parent_xxxx-interfaces-webservice_target_classes_META-INF_wsdl_XXXXInterfaces.wsdl.java.DONE
      [DEBUG] 
      java.io.IOException: File name too long
      	at java.io.UnixFileSystem.createFileExclusively(Native Method)
      	at java.io.File.createNewFile(File.java:947)
      	at org.apache.cxf.maven_plugin.wsdl2java.WSDL2JavaMojo.createMarkerFile(WSDL2JavaMojo.java:271)
      	at org.apache.cxf.maven_plugin.wsdl2java.WSDL2JavaMojo.generate(WSDL2JavaMojo.java:453)
      	at org.apache.cxf.maven_plugin.AbstractCodegenMoho.execute(AbstractCodegenMoho.java:310)
      	at org.apache.cxf.maven_plugin.wsdl2java.WSDL2JavaMojo.execute(WSDL2JavaMojo.java:524)
      	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
      	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
      	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
      	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
      	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
      	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
      	at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
      	at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
      	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
      	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
      	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
      	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
      	at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:606)
      	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)
      

      The reason for this is that I've encrypted my home directory with EcryptFS, but (unknown to me at the time) it does not support file names which are longer than 143 characters, and will not in the foreseeable future (as per https://bugs.launchpad.net/ecryptfs/+bug/344878).

      Is there any way to do something about the file name being generated by CXF in this instance? Surely it doesn't need to duplicate the whole path in the file name? And if it does, wouldn't it make more sense to hash it and include the hash instead of the path? e.g. a SHA512 hash would be a fixed 128 characters, plus 5 for the ".DONE" suffix makes 133, which is within the 143 characters I'm allowed...

      That would also guard against the possibility of the name exceeding 255 characters, which, while less likely, is still quite possible if you're going to store the whole path in the file name.

      This does mean that I have to be very careful about the naming of my projects if I want to get the WSDL generator to work, which isn't an awful lot of fun.

      It's also eating the actual error, as you will note that the exception is above is only being output at DEBUG level. The actual exception I see when I run mvn -e is:

      [ERROR] Failed to execute goal org.apache.cxf:cxf-codegen-plugin:2.7.7:wsdl2java (generate-sources) on project xxxx-interfaces-client: Failed to create marker file /home/andrew/workspace/XXXX/xxxx-interfaces-esb-parent/xxxx-interfaces-client/target/cxf-codegen-plugin-markers/.file__home_andrew_workspace_XXXX_xxxx-interfaces-esb-parent_xxxx-interfaces-webservice_target_classes_META-INF_wsdl_XXXXInterfaces.wsdl.java.DONE -> [Help 1]
      org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.cxf:cxf-codegen-plugin:2.7.7:wsdl2java (generate-sources) on project xxxx-interfaces-client: Failed to create marker file /home/andrew/workspace/XXXX/xxxx-interfaces-esb-parent/xxxx-interfaces-client/target/cxf-codegen-plugin-markers/.file__home_andrew_workspace_XXXX_xxxx-interfaces-esb-parent_xxxx-interfaces-webservice_target_classes_META-INF_wsdl_XXXXInterfaces.wsdl.java.DONE
      	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217)
      	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
      	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
      	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
      	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
      	at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
      	at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
      	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
      	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
      	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
      	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
      	at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:606)
      	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 create marker file /home/andrew/workspace/XXXX/xxxx-interfaces-esb-parent/xxxx-interfaces-client/target/cxf-codegen-plugin-markers/.file__home_andrew_workspace_XXXX_xxxx-interfaces-esb-parent_xxxx-interfaces-webservice_target_classes_META-INF_wsdl_XXXXInterfaces.wsdl.java.DONE
      	at org.apache.cxf.maven_plugin.wsdl2java.WSDL2JavaMojo.generate(WSDL2JavaMojo.java:458)
      	at org.apache.cxf.maven_plugin.AbstractCodegenMoho.execute(AbstractCodegenMoho.java:310)
      	at org.apache.cxf.maven_plugin.wsdl2java.WSDL2JavaMojo.execute(WSDL2JavaMojo.java:524)
      	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
      	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
      	... 19 more
      

      Which is not particularly helpful.

      Attachments

        Issue Links

          Activity

            People

              dkulp Daniel Kulp
              ipsi Andrew
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: