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.