An in the short term please add the servlet API to the build classpath :-)
On 23/03/17 13:44, Sergey Beryozkin wrote:
Hi Andrei
I think it is the consequence of JAXRSUtils growing too large over a
number of years, I'd say it is the Servlet API imports that cause the
issue in an eagerly loading JVM when no Servlet API is available on the
classpath.
I believe at some point JAXRSUtils was not referring strongly to Servlet
API (was loading it reflectively when needed) but later on I thought it
is JAX-RS for HTTP services after all so Servlet API must be at the
runtime classpath...
I've just updated JAXRSUtils to move direct Servlet API out of it
(3.1.11-SNAPSHOT), please try when you get a chance. If it does not help
then I will simply copy JAXRSUtils.getPathSegments (and another one
liner JAXRSUtils code referenced from SourceGenerator) into Source
Generator
Thanks, Sergey
On 23/03/17 09:36, Andrei Shakirin wrote:
Hi Sergei,
I observe interesting issue in Jenkins build.
By source generation of some services wadl2java throws following
exception:
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to
execute goal org.apache.cxf:cxf-wadl2java-plugin:3.1.7:wadl2java
(generate-sources) on project checkout-service-api:
javax/servlet/http/HttpServletRequestWrapper
at
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
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:116)
at
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
at
org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at
org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
at
org.jvnet.hudson.maven3.launcher.Maven33Launcher.main(Maven33Launcher.java:129)
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.launchStandard(Launcher.java:330)
at
org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:238)
at jenkins.maven3.agent.Maven33Main.launch(Maven33Main.java:176)
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 hudson.maven.Maven3Builder.call(Maven3Builder.java:139)
at hudson.maven.Maven3Builder.call(Maven3Builder.java:70)
at hudson.remoting.UserRequest.perform(UserRequest.java:153)
at hudson.remoting.UserRequest.perform(UserRequest.java:50)
at hudson.remoting.Request$2.run(Request.java:336)
at
hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.maven.plugin.MojoExecutionException:
javax/servlet/http/HttpServletRequestWrapper
at
org.apache.cxf.maven_plugin.wadlto.AbstractCodeGeneratorMojo.callCodeGenerator(AbstractCodeGeneratorMojo.java:412)
at
org.apache.cxf.maven_plugin.wadlto.WADL2JavaMojo.execute(WADL2JavaMojo.java:112)
at
org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
at
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
... 31 more
Caused by: java.lang.NoClassDefFoundError:
javax/servlet/http/HttpServletRequestWrapper
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at
org.codehaus.plexus.classworlds.realm.ClassRealm.loadClassFromSelf(ClassRealm.java:401)
at
org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:42)
at
org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
at
org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247)
at
org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)
at
org.apache.cxf.tools.wadlto.jaxrs.SourceGenerator.writeResourceMethod(SourceGenerator.java:791)
at
org.apache.cxf.tools.wadlto.jaxrs.SourceGenerator.writeMethods(SourceGenerator.java:625)
at
org.apache.cxf.tools.wadlto.jaxrs.SourceGenerator.writeMethods(SourceGenerator.java:640)
at
org.apache.cxf.tools.wadlto.jaxrs.SourceGenerator.writeResourceClass(SourceGenerator.java:510)
at
org.apache.cxf.tools.wadlto.jaxrs.SourceGenerator.generateResourceClasses(SourceGenerator.java:330)
at
org.apache.cxf.tools.wadlto.jaxrs.SourceGenerator.generateSource(SourceGenerator.java:296)
at
org.apache.cxf.tools.wadlto.jaxrs.JAXRSContainer.processWadl(JAXRSContainer.java:179)
at
org.apache.cxf.tools.wadlto.jaxrs.JAXRSContainer.execute(JAXRSContainer.java:71)
at
org.apache.cxf.tools.wadlto.jaxrs.JAXRSContainer.execute(JAXRSContainer.java:80)
at
org.apache.cxf.tools.common.toolspec.ToolRunner.runTool(ToolRunner.java:103)
at org.apache.cxf.tools.wadlto.WADLToJava.run(WADLToJava.java:65)
at org.apache.cxf.tools.wadlto.WADLToJava.run(WADLToJava.java:57)
at
org.apache.cxf.maven_plugin.wadlto.AbstractCodeGeneratorMojo.callCodeGenerator(AbstractCodeGeneratorMojo.java:409)
... 34 more
Caused by: java.lang.ClassNotFoundException:
javax.servlet.http.HttpServletRequestWrapper
at
org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
at
org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
at
org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247)
at
org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)
... 61 more
CXF 3.1.7, Java 7, full java command line is:
/usr/java/jdk1.7.0_79//bin/java -XX:-UseSplitVerifier
-XX:MaxPermSize=2048m -Djava.net.preferIPv4Stack=true -cp
/CE/users/ggcehudson/.hudson/plugins/maven-plugin/WEB-INF/lib/maven33-agent-1.8.1.jar:/CE/ci-build/hudson/apache-maven-3.3.9/boot/plexus-classworlds-2.5.2.jar:/CE/ci-build/hudson/apache-maven-3.3.9/conf/logging
jenkins.maven3.agent.Maven33Main
/CE/ci-build/hudson/apache-maven-3.3.9
/DBA/nest/tomcat/ASTICENHUDSON/webapps/jenkins/WEB-INF/lib/remoting-3.7.jar
/CE/users/ggcehudson/.hudson/plugins/maven-plugin/WEB-INF/lib/maven33-interceptor-1.8.1.jar
/CE/users/ggcehudson/.hudson/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-commons-1.8.1.jar
I see that it happens in SourceGenerator.java by this line call:
List<PathSegment> segments =
JAXRSUtils.getPathSegments(currentPath, true, true);
Interestingly I don't see any direct dependency in JAXRSUtils on
HttpServletRequestWrapper.
Problem occurs only in some APIs, most generations are successful.
Any ideas why it could happens and what I can try?
Regards,
Andrei.