You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by a746076drdrb <a7...@drdrb.net> on 2016/08/26 12:27:00 UTC
camel-cdi projects as fat jar
Hello,
I've created example app with camel-cdi and it works, if launched with
maven. However, I'd like to package and deploy it as a single jar file and
it doesn't work. With other camel routes which don't use CDI it works fine.
The error:
Exception in thread "main"
javax.enterprise.inject.UnsatisfiedResolutionException: WELD-ENV-000018:
Unable to resolve a bean for class
org.jboss.weld.environment.se.WeldContainer with bindings []
I've read some posts its not recommended to deploy cdi app as fat jar, but
it would be very convenient. Had anyone success with it?
Regards,
--
View this message in context: http://camel.465427.n5.nabble.com/camel-cdi-projects-as-fat-jar-tp5786762.html
Sent from the Camel - Users mailing list archive at Nabble.com.
Re: camel-cdi projects as fat jar
Posted by a746076drdrb <a7...@drdrb.net>.
Used maven-shade-plugin version 1.7.1
import javax.inject.Inject;
import org.apache.camel.Endpoint;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.cdi.Uri;
public class MyRoutes extends RouteBuilder {
@Inject
@Uri("timer:foo?period=5000")
private Endpoint inputEndpoint;
@Inject
@Uri("log:output")
private Endpoint resultEndpoint;
@Inject
private SomeBean someBean;
@Override
public void configure() {
from(inputEndpoint)
.bean(someBean)
.to(resultEndpoint);
}
}
--
View this message in context: http://camel.465427.n5.nabble.com/camel-cdi-projects-as-fat-jar-tp5786762p5786980.html
Sent from the Camel - Users mailing list archive at Nabble.com.
Re: camel-cdi projects as fat jar
Posted by Brad Johnson <br...@mediadriver.com>.
Can you post an example of the RouteBuilder that's creating the problem?
On Mon, Aug 29, 2016 at 3:17 AM, Antonin Stefanutti <an...@stefanutti.fr>
wrote:
> Hi,
>
> What version of Weld are you using? Until recently nested / fat JAR wasn’t
> working with Weld until it’s been fixed in Weld 2.3.4 with WELD-1930 [1]. I
> haven’t tried it myself so that should enable fat JAR support, produced for
> example with onejar-maven-plugin. An alternative may be to use shaded JAR
> which has other pros and cons.
>
> [1] https://issues.jboss.org/browse/WELD-1930
>
> Antonin
>
> > On 26 Aug 2016, at 14:27, a746076drdrb <a7...@drdrb.net> wrote:
> >
> > Hello,
> >
> > I've created example app with camel-cdi and it works, if launched with
> > maven. However, I'd like to package and deploy it as a single jar file
> and
> > it doesn't work. With other camel routes which don't use CDI it works
> fine.
> > The error:
> >
> > Exception in thread "main"
> > javax.enterprise.inject.UnsatisfiedResolutionException: WELD-ENV-000018:
> > Unable to resolve a bean for class
> > org.jboss.weld.environment.se.WeldContainer with bindings []
> >
> > I've read some posts its not recommended to deploy cdi app as fat jar,
> but
> > it would be very convenient. Had anyone success with it?
> >
> > Regards,
> >
> >
> >
> > --
> > View this message in context: http://camel.465427.n5.nabble.
> com/camel-cdi-projects-as-fat-jar-tp5786762.html
> > Sent from the Camel - Users mailing list archive at Nabble.com.
>
>
Re: camel-cdi projects as fat jar
Posted by Brad Johnson <br...@mediadriver.com>.
Interesting that is failing on not finding
javax.servlet.http.HttpServletRequest
as you aren't using in your route.
On Tue, Aug 30, 2016 at 3:29 AM, a746076drdrb <a7...@drdrb.net> wrote:
> Used maven-shade-plugin version 1.7.1 and weld 2.2.15.Final. Now tried
> 2.3.5.Final with
>
> Exception in thread "main" org.jboss.weld.exceptions.DeploymentException:
> javax/servlet/http/HttpServletRequest
> at
> org.jboss.weld.executor.AbstractExecutorServices.checkForExceptions(
> AbstractExecutorServices.java:66)
> at
> org.jboss.weld.executor.AbstractExecutorServices.
> invokeAllAndCheckForExceptions(AbstractExecutorServices.java:43)
> at
> org.jboss.weld.executor.AbstractExecutorServices.
> invokeAllAndCheckForExceptions(AbstractExecutorServices.java:51)
> at
> org.jboss.weld.bootstrap.ConcurrentBeanDeployer.createClassBeans(
> ConcurrentBeanDeployer.java:75)
> at
> org.jboss.weld.bootstrap.BeanDeployment.createBeans(
> BeanDeployment.java:256)
> at
> org.jboss.weld.bootstrap.WeldStartup.deployBeans(WeldStartup.java:396)
> at
> org.jboss.weld.bootstrap.WeldBootstrap.deployBeans(WeldBootstrap.java:83)
> at org.jboss.weld.environment.se.Weld.initialize(Weld.java:589)
> at
> org.apache.deltaspike.cdise.weld.WeldContainerControl.
> boot(WeldContainerControl.java:68)
> at org.apache.camel.cdi.Main.doStart(Main.java:95)
> at
> org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
> at org.apache.camel.main.MainSupport.run(MainSupport.java:138)
> at org.apache.camel.main.MainSupport.run(MainSupport.java:390)
> at org.apache.camel.cdi.Main.main(Main.java:57)
> Caused by: java.lang.NoClassDefFoundError:
> javax/servlet/http/HttpServletRequest
> at java.lang.Class.getDeclaredMethods0(Native Method)
> at java.lang.Class.privateGetDeclaredMethods(Class.java:2688)
> at java.lang.Class.getDeclaredMethods(Class.java:1962)
> at java.lang.Class.getEnclosingMethod(Class.java:1032)
> at
> org.jboss.weld.util.reflection.Reflections.isStaticNestedClass(
> Reflections.java:402)
> at
> org.jboss.weld.util.reflection.Reflections.isTopLevelOrStaticNestedClass(
> Reflections.java:422)
> at
> org.jboss.weld.util.Beans.isTypeManagedBeanOrDecoratorOr
> Interceptor(Beans.java:507)
> at
> org.jboss.weld.bootstrap.BeanDeployer.createClassBean(
> BeanDeployer.java:214)
> at
> org.jboss.weld.bootstrap.ConcurrentBeanDeployer$2.
> doWork(ConcurrentBeanDeployer.java:78)
> at
> org.jboss.weld.bootstrap.ConcurrentBeanDeployer$2.
> doWork(ConcurrentBeanDeployer.java:75)
> at
> org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(
> IterativeWorkerTaskFactory.java:63)
> at
> org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(
> IterativeWorkerTaskFactory.java:56)
> at java.util.concurrent.FutureTask.run(FutureTask.java:266)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(
> ThreadPoolExecutor.java:1142)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(
> ThreadPoolExecutor.java:617)
> at java.lang.Thread.run(Thread.java:745)
> Caused by: java.lang.ClassNotFoundException:
> javax.servlet.http.HttpServletRequest
> at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
> at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
> at java.security.AccessController.doPrivileged(Native Method)
> at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>
>
>
> --
> View this message in context: http://camel.465427.n5.nabble.
> com/camel-cdi-projects-as-fat-jar-tp5786762p5786981.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>
Re: camel-cdi projects as fat jar
Posted by a746076drdrb <a7...@drdrb.net>.
Used maven-shade-plugin version 1.7.1 and weld 2.2.15.Final. Now tried
2.3.5.Final with
Exception in thread "main" org.jboss.weld.exceptions.DeploymentException:
javax/servlet/http/HttpServletRequest
at
org.jboss.weld.executor.AbstractExecutorServices.checkForExceptions(AbstractExecutorServices.java:66)
at
org.jboss.weld.executor.AbstractExecutorServices.invokeAllAndCheckForExceptions(AbstractExecutorServices.java:43)
at
org.jboss.weld.executor.AbstractExecutorServices.invokeAllAndCheckForExceptions(AbstractExecutorServices.java:51)
at
org.jboss.weld.bootstrap.ConcurrentBeanDeployer.createClassBeans(ConcurrentBeanDeployer.java:75)
at
org.jboss.weld.bootstrap.BeanDeployment.createBeans(BeanDeployment.java:256)
at
org.jboss.weld.bootstrap.WeldStartup.deployBeans(WeldStartup.java:396)
at
org.jboss.weld.bootstrap.WeldBootstrap.deployBeans(WeldBootstrap.java:83)
at org.jboss.weld.environment.se.Weld.initialize(Weld.java:589)
at
org.apache.deltaspike.cdise.weld.WeldContainerControl.boot(WeldContainerControl.java:68)
at org.apache.camel.cdi.Main.doStart(Main.java:95)
at
org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
at org.apache.camel.main.MainSupport.run(MainSupport.java:138)
at org.apache.camel.main.MainSupport.run(MainSupport.java:390)
at org.apache.camel.cdi.Main.main(Main.java:57)
Caused by: java.lang.NoClassDefFoundError:
javax/servlet/http/HttpServletRequest
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2688)
at java.lang.Class.getDeclaredMethods(Class.java:1962)
at java.lang.Class.getEnclosingMethod(Class.java:1032)
at
org.jboss.weld.util.reflection.Reflections.isStaticNestedClass(Reflections.java:402)
at
org.jboss.weld.util.reflection.Reflections.isTopLevelOrStaticNestedClass(Reflections.java:422)
at
org.jboss.weld.util.Beans.isTypeManagedBeanOrDecoratorOrInterceptor(Beans.java:507)
at
org.jboss.weld.bootstrap.BeanDeployer.createClassBean(BeanDeployer.java:214)
at
org.jboss.weld.bootstrap.ConcurrentBeanDeployer$2.doWork(ConcurrentBeanDeployer.java:78)
at
org.jboss.weld.bootstrap.ConcurrentBeanDeployer$2.doWork(ConcurrentBeanDeployer.java:75)
at
org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:63)
at
org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:56)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException:
javax.servlet.http.HttpServletRequest
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
--
View this message in context: http://camel.465427.n5.nabble.com/camel-cdi-projects-as-fat-jar-tp5786762p5786981.html
Sent from the Camel - Users mailing list archive at Nabble.com.
Re: camel-cdi projects as fat jar
Posted by Antonin Stefanutti <an...@stefanutti.fr>.
Hi,
What version of Weld are you using? Until recently nested / fat JAR wasn’t working with Weld until it’s been fixed in Weld 2.3.4 with WELD-1930 [1]. I haven’t tried it myself so that should enable fat JAR support, produced for example with onejar-maven-plugin. An alternative may be to use shaded JAR which has other pros and cons.
[1] https://issues.jboss.org/browse/WELD-1930
Antonin
> On 26 Aug 2016, at 14:27, a746076drdrb <a7...@drdrb.net> wrote:
>
> Hello,
>
> I've created example app with camel-cdi and it works, if launched with
> maven. However, I'd like to package and deploy it as a single jar file and
> it doesn't work. With other camel routes which don't use CDI it works fine.
> The error:
>
> Exception in thread "main"
> javax.enterprise.inject.UnsatisfiedResolutionException: WELD-ENV-000018:
> Unable to resolve a bean for class
> org.jboss.weld.environment.se.WeldContainer with bindings []
>
> I've read some posts its not recommended to deploy cdi app as fat jar, but
> it would be very convenient. Had anyone success with it?
>
> Regards,
>
>
>
> --
> View this message in context: http://camel.465427.n5.nabble.com/camel-cdi-projects-as-fat-jar-tp5786762.html
> Sent from the Camel - Users mailing list archive at Nabble.com.