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