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