openwebbeans-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Romain Manni-Bucau <rmannibu...@gmail.com>
Subject Re: OWB on Tomcat 7
Date Sat, 09 Nov 2013 12:35:52 GMT
You kept owb in web-inf/lib?
Le 9 nov. 2013 13:22, "aljesco" <aljesco@gmail.com> 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 <rmannibucau@gmail.com>
>
>> 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" <aljesco@gmail.com> 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 <rmannibucau@gmail.com>
>>>
>>>> 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" <aljesco@gmail.com> 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?
>>>>>
>>>>>
>>>
>

Mime
View raw message