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