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?
>>>>>>>
>>>>>>>
>>>>>
>>>
>

Reply via email to