2017-07-20 2 views
1

Ich versuche CDI in Tomcat 9.x zu arbeiten. Ich folgte den folgenden Links, aber immer noch openwebbeans Behälter nicht die Ressource in den Servlet-spritzen hatApache OpenWebBeans (CDI) + Servlet, Injektion funktioniert nicht

https://devlearnings.wordpress.com/2011/05/15/apache-openwebbeans-cdi-from-standalone-to-webapp/ https://dzone.com/articles/using-apache-openwebbeans http://openwebbeans.apache.org/owbsetup_ee.html

Unten ist mein Servlet

package com.openwebbeans; 

import java.io.IOException; 

import javax.inject.Inject; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

public class SampleController extends HttpServlet{ 

    private static final long serialVersionUID = 1L; 

    @Inject 
    private SampleService service; 

    public void doGet(final HttpServletRequest request, final HttpServletResponse response) throws IOException { 

     response.getWriter().print(service); 
    } 
} 

Im Folgenden wird die web.xml

<web-app 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" 
    version="3.0"> 
    <display-name>OpenWebBeans</display-name> 

    <listener> 
     <listener-class>org.apache.webbeans.servlet.WebBeansConfigurationListener</listener-class> 
    </listener> 

    <servlet> 
     <servlet-name>sample</servlet-name> 
     <servlet-class>com.openwebbeans.SampleController</servlet-class> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>sample</servlet-name> 
     <url-pattern>/sample</url-pattern> 
    </servlet-mapping> 
</web-app> 

Die folgende Zeile wurde hinzugefügt server.xml

<Listener className="org.apache.webbeans.web.tomcat7.ContextLifecycleListener" /> 

Unten ist mein pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.openwebbeans</groupId> 
    <artifactId>openwebbeans-beginner</artifactId> 
    <packaging>war</packaging> 
    <version>1.0</version> 
    <name>openwebbeans-beginner</name> 
    <url>http://maven.apache.org</url> 
    <properties> 
     <owb.version>2.0.0</owb.version> 
    </properties> 
    <dependencies> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>javax.servlet-api</artifactId> 
      <version>3.1.0</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.geronimo.specs</groupId> 
      <artifactId>geronimo-atinject_1.0_spec</artifactId> 
      <version>1.0</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.geronimo.specs</groupId> 
      <artifactId>geronimo-jcdi_2.0_spec</artifactId> 
      <version>1.0</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.geronimo.specs</groupId> 
      <artifactId>geronimo-interceptor_1.2_spec</artifactId> 
      <version>1.0</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.geronimo.specs</groupId> 
      <artifactId>geronimo-annotation_1.3_spec</artifactId> 
      <version>1.0</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.openwebbeans</groupId> 
      <artifactId>openwebbeans-impl</artifactId> 
      <version>${owb.version}</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.openwebbeans</groupId> 
      <artifactId>openwebbeans-spi</artifactId> 
      <version>${owb.version}</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.openwebbeans</groupId> 
      <artifactId>openwebbeans-web</artifactId> 
      <version>${owb.version}</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.openwebbeans</groupId> 
      <artifactId>openwebbeans-tomcat7</artifactId> 
      <version>${owb.version}</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.javassist</groupId> 
      <artifactId>javassist</artifactId> 
      <version>3.21.0-GA</version> 
      <scope>provided</scope> 
     </dependency> 
    </dependencies> 
    <build> 
     <finalName>openwebbeans-beginner</finalName> 
    </build> 
</project> 

hinzugefügt, um die unten Gläser unter tomcat lib

  • geronimo-annotation_1.3_spec-1.0
  • geronimo-atinject_1. 0_spec-1.0
  • geronimo-interceptor_1.2_spec-1.0
  • geronimo-jcdi_2.0_spec-1,0
  • openwebbeans-el22-2.0.0
  • openwebbeans-Umsetz-2.0.0
  • openwebbeans-spi-2.0.0
  • openwebbeans-tomcat7-2.0.0
  • openwebbeans-web-2.0.0
  • XBean-ASM5 beschatteten-4,5
  • XBean-Finder-schattierten-4,5
  • Javassist-3.21.0-GA

Im Folgenden sind die Serverprotokolle nach der Bereitstellung meines Krieges. Es ist klar, aus den Protokollen, die offenen Web-Bohnenbehälter

20-Jul-2017 10 begonnen hat: 06: 08,315 INFO [http-nio-8080-exec-5] org.apache.catalina.startup. HostConfig.deployWAR Bereitstellen von Web Anwendungsarchiv [D: \ krishna \ apache-tomcat-9.0.0.M22 \ webapps \ openwebbeans-beginner.war] 20-Jul-2017 10: 06: 08.904 INFO [http-nio- 8080-exec-5] org.apache.webbeans.lifecycle.AbstractLifeCycle.bootstrapApplication OpenWebBeans Container wird gestartet ... 20-Jul-2017 10: 06: 09.229 INFO [http-nio-8080-exec-5] org.apache.webbeans.lifecycle.AbstractLifeCycle.bootstrapApplication OpenWebBeans Container wurde gestartet, es dauerte [325] ms. 20-Jul-2017 10: 06: 09,235 INFO [http-NiO-8080-exec-5] org.apache.catalina.startup.HostConfig.deployWAR Bereitstellung von Web-Anwendung Archiv [D: \ krishna \ Apache- tomcat-9.0.0.M22 \ webapps \ openwebbeans-Anfänger.Krieg] hat in [920] ms abgeschlossen

Zusätzlich erstellt i openwebbeans.properties unter META-INF/openwebbeans und hinzugefügt org.apache.webbeans.spi.ContainerLifecycle = org.apache.webbeans.lifecycle.StandaloneLifeCycle dazu. Aber es funktioniert immer noch nicht

Ich habe auch versucht mit org.apache.webbeans.spi.ContainerLifecycle = org.apache.webbeans.web.lifecycle.WebContainerLifecycle aber nichts scheint zu funktionieren.

Kann mir bitte jemand helfen, damit das funktioniert?

+0

Ich habe das gleiche Problem mit Tomcat-8.0.45 und Tomcat-8.5.16. Hat jemand das zur Arbeit gebracht? – David

Antwort

0

Wenn Sie eine Injektion in Servlets benötigen, benötigen Sie eine tiefere Integration als nur den Servlet-Listener. Das bieten wir mit dem Plugin openwebbeans-tomcat7 an.

Der einfachste Weg ist unser Installateur zu verwenden, wie in unserer ankündigen Mail erklärte https://lists.apache.org/thread.html/[email protected]%3Cannounce.apache.org%3E

In diesem Fall einfach die ganzen WebBeansConfigurationListener von Ihrem web.xml entfernen. Dies ist beabsichtigt, wenn Sie in 'nicht-gepimpte' Servlet-Container integrieren möchten oder in GAE usw. laufen. In diesem Fall können Sie mit CDI.current() umgehen, um Ihre CDI-Bean in ein Servlet zu bekommen.

Sie benötigen auch keine Javassist-Abhängigkeit mehr. Das wurde vor langer Zeit in OWB-1.2.x gelöscht.

Fühlen Sie sich frei, uns auf unseren Mailinglisten oder irc bei #openwebbeans auf freenode.net anzumelden!

Oh, und noch ein Tipp: Probieren Sie unseren Apache Meecrowave Container aus, der OWB + Tomcat9 + CXF + Johnzon ist - alles in 9MB. Es enthält ein Maven-Plugin, einen Arquillian-Container usw.

Verwandte Themen