Maybe it is a lack of docs... I already use most of tomee components, but the "glue" (pom.xml, web.xml, etc.) is hard to find at first...
I recently tried to use OWB 1.2 instead of 1.1.6 and the upgrade track is not very clear. It is not a drop-in replacement... My project uses latest myfaces 2.1, latest corresponding CODI and Tomcat 7. Well, maybe it is a curse of those great java projects. Great features, great performance, but steep learning curve... Best regards, Ludovic Romain Manni-Bucau <[email protected]> a écrit : >tomee is a webapp and I know some tomcat users doing an overlay to >deploy >in a plain tomcat...works just fine too. > >SCI is fine if you don't expect to be spec compliant (that's the case >when >doing a tomcat + OWB) > >*Romain Manni-Bucau* >*Twitter: @rmannibucau <https://twitter.com/rmannibucau>* >*Blog: >**http://rmannibucau.wordpress.com/*<http://rmannibucau.wordpress.com/> >*LinkedIn: **http://fr.linkedin.com/in/rmannibucau ><http://fr.linkedin.com/in/rmannibucau>* >*Github: https://github.com/rmannibucau ><https://github.com/rmannibucau>* > > > >2013/11/9 Ludovic Pénet <[email protected]> > >> Well, users of "standalone" tomcat, for good or bad reasons >(corporate >> policy,...) do not thank you... ;) >> >> Best regards, >> >> Ludovic >> >> >> Romain Manni-Bucau <[email protected]> a écrit : >>> >>> we could hack a ServletContainerInitializer but not sure the gain >>> compared to using tomee which will always be far more integrated "by >>> design" >>> Romain Manni-Bucau >>> Twitter: @rmannibucau >>> >>> Blog: http://rmannibucau.wordpress.com/ >>> LinkedIn: http://fr.linkedin.com/in/rmannibucau >>> >>> Github: https://github.com/rmannibucau >>> >>> >>> >>> 2013/11/9 Mark Struberg <[email protected]>: >>> >>>> Hi Niki! >>>> >>>> Karl and I did already work on improving our documentation at least >;) >>>> >>>> http://openwebbeans.apache.org/owbsetup_ee.html >>>> >>>> Please ping us if you find a failure! >>>> >>>> LieGrue, >>>> strub >>>> >>>> >>>> ------------------------------ >>>> >>>> From: Niki Dokovski <[email protected]> >>>> >>>> To: [email protected]; 'Mark Struberg' ><[email protected]> >>>> Sent: Saturday, 9 November 2013, 15:01 >>>> >>>> Subject: RE: OWB on Tomcat 7 >>>> >>>> Hi Mark, >>>> >>>> From: Mark Struberg [mailto:[email protected]] >>>> Sent: Saturday, November 9, 2013 3:25 PM >>>> To: [email protected] >>>> >>>> Subject: Re: OWB on Tomcat 7 >>>> >>>> Hi folks! >>>> >>>> There are 2 different ways to work with OpenWebBeans and tomcat. >>>> >>>> >>>> >>>> A, your app is using CDI but you do not need the container to >understand >>>> CDI. >>>> In that case just add owb-core jar + spi + xbean-asm4-shaded + >owb-web into >>>> >>>> your WEB-INF/lib and add WebBeansConfigurationListener to your >web.xml as >>>> <listener> >>>> >>>> This works perfect, but be aware that there is no CDI injection in >Servlets >>>> themself. You can of course use DeltaSpike BeanProvider to pick up >>>> >>>> B.) >>>> you need it fully integrated with all other EE technologies. In >that >>>> case I suggest you use TomEE. This is basically tomcat7 + latest >OWB + >>>> latest MyFaces + + +. And all that in a perfectly integrated and >ready to >>>> >>>> use configuration. >>>> >>>> IMHO, there might be cases where you don’t need my faces or you >just want to >>>> test the latest web container with the latest CDI. Current owb >documentation >>>> is a bit confusing indeed and you need to look into the source code >to >>>> >>>> understand what you need to configure and where. Which might be >good >>>> exercise anyway. I like the “plugins” architecture of OWB but the >>>> integration with tomcat can be improved. The CDI RI did a bit >better with >>>> the integration with Tomcat for now. (Yes you still need the >servlet >>>> >>>> listener to bootstrap the CDI container) >>>> >>>> Do you folks have plans to reconsider current integrations points >with >>>> tomcat? Are there any particular ideas for what can be imp >>>> roved >>>> on tomcat >>>> side to make the integration better? >>>> >>>> Cheers >>>> Niki >>>> >>>> >>>> LieGrue, >>>> strub >>>> >>>> >>>> >>>> ------------------------------ >>>> >>>> From: aljesco <[email protected]> >>>> >>>> To: [email protected] >>>> Sent: Saturday, 9 November 2013, 14:04 >>>> Subject: Re: OWB on Tomcat 7 >>>> >>>> Now web.xml contain only >>>> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" >>>> >>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >>>> xsi:schemaLocation="http://java.sun.com/xml/ns/javaee >>>> http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> >>>> <display-name>Archetype Created Web Application</display-name> >>>> >>>> </web-app> >>>> >>>> Ans that exception is still thrown. >>>> >>>> Here is lines from >>>> WebContainerLifecycle.java: >>>> 124:ELAdaptor elAdaptor = >>>> getWebBeansContext().getService(ELAdaptor.class); >>>> 125:ELResolver resolver = elAdaptor.getOwbELResolver(); >>>> NPE is being thrown on elAdaptor.getOwbELResolver(); , but why? >>>> >>>> ELAdaptor.class is in openwebbeans-spi-1.2.0.jar which is placed >under lib >>>> in tomcat. I don't know what to do with all of this. >>>> >>>> 2013/11/9 Romain Manni-Bucau <[email protected]> >>>> >>>> Hmm >>>> Here im not sure but maybe remove it from your web.xml >>>> Le 9 nov. 2013 13:52, "aljesco" <[email protected]> a écrit : >>>> >>>> >>>> Nov 09, 2013 2:49:31 PM org.apache.catalina.core.StandardContext >>>> >>>> listenerStart >>>> SEVERE: Exception sending context initialized event to listener >instance of >>>> class org.apache.webbeans.servlet.WebBeansConfigurationListener >>>> java.lang.NullPointerException >>>> at >>>> >org.apache.webbeans.web.lifecycle.WebContainerLifecycle.afterStartApplication(WebContainerLifecycle.java:125) >>>> >>>> at >>>> >org.apache.webbeans.lifecycle.AbstractLifeCycle.startApplication(AbstractLifeCycle.java:132) >>>> at >>>> >org.apache.webbeans.web.lifecycle.WebContainerLifecycle.startApplication(WebContainerLifecycle.java:89) >>>> at >>>> >>>> >org.apache.webbeans.servlet.WebBeansConfigurationListener.contextInitialized(WebBeansConfigurationListener.java:85) >>>> at >>>> >org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4939) >>>> at >>>> >org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434) >>>> >>>> at >org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) >>>> at >>>> >org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) >>>> at >org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) >>>> >>>> at >org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633) >>>> at< >>>> br >>>> >/>org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1120) >>>> >>>> at >>>> >org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1678) >>>> at >java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) >>>> >>>> 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:744) >>>> >>>> >>>> 2013/11/9 Romain Manni-Bucau <[email protected]> >>>> >>>> So remove openwebbeans jar from the webapp to put them in tomcat >libs >>>> >>>> Le 9 nov. 2013 13:43, "aljesco" <[email protected]> a écrit : >>>> >>>> >>>> Yes >>>> >>>> 2013/11/9 Romain Manni-Bucau <[email protected]> >>>> >>>> You kept owb in web-inf/lib? >>>> Le 9 nov. 2013 13:22, "aljesco" <[email protected]> a écrit : >>>> >>>> >>>> I added >>>> <Listener >>>> className="org.apache.webbeans.web.tomcat.ContextLifecycleListener" >/> >>>> >>>> into server.xml files. >>>> After that Tomcat throwed several ClassNotFoundExceptions because >it >>>> couldn't find OWB libs. I put openwebbeans-impl-1.2.0.jar, >>>> openwebbeans-spi-1.2.0.jar, openwebbeans-tomcat7-1.2.0.jar and >>>> >>>> openwebbeans-web-1.2.0.jar into lib folder. Now Tomcat fails to >start with >>>> exception >>>> ==== >>>> Caused by: java.lang.RuntimeException: >java.lang.ClassCastException: Cannot >>>> cast org.apache.webbeans.service.DefaultLoaderService to >>>> >>>> org.apache.webbeans.spi.LoaderService >>>> at >>>> >org.apache.webbeans.web.tomcat.ContextLifecycleListener.containerEvent(ContextLifecycleListener.java:200) >>>> at >>>> >org.apache.catalina.core.ContainerBase.fireContainerEvent(ContainerBase.java:1398) >>>> >>>> at >>>> >org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4944) >>>> at >>>> >org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434) >>>> at >org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) >>>> >>>> ... 10 more >>>> Caused by: java.lang.ClassCastException: Cannot cast >>>> org.apache.webbeans.service.DefaultLoaderService to >>>> org.apache.webbeans.spi.LoaderService >>>> at java.lang.Class.cast(Class.java:3094) >>>> at >>>> >org.apache.webbeans.config.WebBeansContext.<init>(WebBeansContext.java:121) >>>> >>>> at >>>> >org.apache.webbeans.config.WebBeansContext.<init>(WebBeansContext.java:98) >>>> at >>>> >org.apache.webbeans.corespi.DefaultSingletonService.get(DefaultSingletonService.java:54) >>>> at >>>> >org.apache.webbeans.corespi.DefaultSingletonService.get(DefaultSingletonService.java:28) >>>> >>>> at >>>> >org.apache.webbeans.config.WebBeansFinder.getSingletonInstance(WebBeansFinder.java:51) >>>> at >>>> >org.apache.webbeans.config.WebBeansContext.getInstance(WebBeansContext.java:164) >>>> at >>>> >org.apache.webbeans.config.WebBeansContext.currentInstance(WebBeansContext.java:182) >>>> >>>> at >org.apache.webbeans.web.tomcat.TomcatUtil.inject(TomcatUtil.java:38) >>>> at >>>> >org.apache.webbeans.web.tomcat.ContextLifecycleListener.containerEvent(ContextLifecycleListener.java:182) >>>> ... 14 more >>>> ==== >>>> What I'm doing wrong? >>>> >>>> 2013/11/9 Romain Manni-Bucau <[email protected]> >>>> >>>> this one as tomcat listener >>>> >https://github.com/apache/openwebbeans/blob/trunk/webbeans-tomcat7/src/main/java/org/apache/webbeans/web/tomcat/ContextLifecycleListener.java >>>> >>>> Le 9 nov. 2013 12:36, "aljesco" <[email protected]> a écrit : >>>> >>>> >>>> No, I didn't set it. What class should I set up as a listener? >>>> >>>> Do I need this lines in web.xml? >>>> >>>> <listener> >>>> >>>> ><listener-class>org.apache.webbeans.servlet.WebBeansConfigurationListener</listener-class> >>>> </listener> >>>> <resource-env-ref> >>>> <resource-env-ref-name>BeanManager</resource-env-ref-name> >>>> >>>> ><resource-env-ref-type>javax.enterprise.inject.spi.BeanManager</resource-env-ref-type> >>>> </resource-env-ref> >>>> >>>> 2013/11/9 Romain Manni-Bucau <[email protected]> >>>> >>>> Hi >>>> Api jars are geronimo*spec ones (jcdi and atinject IIRC) >>>> In tomcat you need tomcat owb listener to get servlet injection, >did you set >>>> it? >>>> Le 9 nov. 2013 12:13, "aljesco" <[email protected]> a écrit : >>>> >>>> >>>> Hello everyone, >>>> >>>> I've tried to get OWB working for about several hours on Tomcat 7 >and >>>> afterall I got really confused. >>>> I'd be very thankful if someone can clarify some points with OWB. >>>> >>>> So, I'm developing a test project with just one servlet >>>> >>>> ==== >>>> @WebServlet(urlPatterns="/test") >>>> public class extends HttpServlet { >>>> >>>> private @Inject MyService s; >>>> @Override >>>> protected void doGet(HttpServletRequest req, HttpServletResponse >resp) >>>> throws ServletException, IOException { >>>> >>>> WebBeansContext currentInstance = >WebBeansContext.currentInstance(); >>>> MyService s2 = currentInstance.get(MyService.class); >>>> resp.getWriter().println(s); >>>> resp.getWriter().println("s2: " + s2.getHash()); >>>> >>>> } >>>> } >>>> ==== >>>> >>>> it tries get injected MyService instance which is POJO: >>>> >>>> ==== >>>> public class MyService { >>>> public MyService() { >>>> } >>>> public String getHash() { >>>> return new Random().nextInt() + ""; >>>> >>>> } >>>> } >>>> ==== >>>> >>>> here is WEB-INF/web.xml: >>>> >>>> ==== >>>> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" >>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >>>> >>>> xsi:schemaLocation="http://java.sun.com/xml/ns/javaee >>>> http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> >>>> >>>> <display-name>Archetype Created Web Application</display-name> >>>> <listener> >>>> >>>> ><listener-class>org.apache.webbeans.servlet.WebBeansConfigurationListener</listener-class> >>>> </listener> >>>> >>>> <resource-env-ref> >>>> <resource-env-ref-name>BeanManager</resource-env-ref-name> >>>> ><resource-env-ref-type>javax.enterprise.inject.spi.BeanManager</resource-env-ref-type> >>>> </resource-env-ref> >>>> >>>> </web-app> >>>> ==== >>>> >>>> libs in WEB-INF/libs: >>>> >>>> openwebbeans-ee-common-1.2.0.jar >>>> openwebbeans-el22-1.2.0.jar >>>> openwebbeans-impl-1.2.0.jar >>>> openwebbeans-resource-1.2.0.jar >>>> openwebbeans-spi-1.2.0.jar >>>> >>>> openwebbeans-tomcat7-1.2.0.jar >>>> openwebbeans-web-1.2.0.jar >>>> xbean-asm-shaded-3.13.jar >>>> xbean-finder-shaded-3.13.jar >>>> >>>> The first question is about CDI implementation library. >>>> If I try to deploy webapp as it is, the Tomcat will fail with next >>>> >>>> exception: java.lang.NoClassDefFoundError: >>>> javax/enterprise/context/spi/Contextual >>>> I couldn't find OWB library which provides such class. I only >grabbed >>>> javaee-api-6.0-5-tomcat.jar from TomEE and placed in under Tomcat 7 >lib/ >>>> >>>> folder. >>>> What is a proper way to solve this problem? Where should I get >>>> javax.enterprise.context.* library? >>>> >>>> The second question is about CDI itself. >>>> After successful deploying (with javaee-api-6.0-5-tomcat.jar in >lib/) I >>>> >>>> accessed my servlet by http://localhost:8080/testproject/test and >got this >>>> responce: >>>> ==== >>>> >>>> null >>>> >>>> s2: 1064451662 >>>> >>>> ==== >>>> >>>> Why WebBeansContext.currentInstance().get(MyService.class) returns >a proper >>>> >>>> instance of MyService class and fails to inject it into private >@Inject >>>> MyService s? >>>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >> -- >> Envoyé de mon téléphone Android avec K-9 Mail. Excusez la brièveté. >> >> | >> | AVANT D'IMPRIMER, PENSEZ A L'ENVIRONNEMENT. >> | >> >> -- Envoyé de mon téléphone Android avec K-9 Mail. Excusez la brièveté. | | AVANT D'IMPRIMER, PENSEZ A L'ENVIRONNEMENT. |
