from owb side (only, not in tomee) drop and replace would work in tomee we work with lib internals so we deeply depend on some versions. I did the upgrade on trunk (soon released)
*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]> > 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. > | > >
