2017-07-20 1 views
1

J'essaie de faire fonctionner CDI dans tomcat 9.x. J'ai suivi les liens suivants, mais openwebbeans encore conteneur ne pas injecter la ressource dans le servletApache OpenWebBeans (CDI) + Servlet, l'injection ne fonctionne pas

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

Ci-dessous mon 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); 
    } 
} 

Ci-dessous le 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> 

Ajout de la ligne ci-dessous dans server.xml

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

Ci-dessous mon 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> 

Ajouté les bocaux ci-dessous sous 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-impl-2.0.0
  • openwebbeans-spi-2.0.0
  • openwebbeans-tomcat7-2.0.0
  • openwebbeans-web-2.0.0
  • xbean-asm5-ombragé-4,5
  • xbean-trouveur-4,5-ombragé
  • javassist-3.21.0-GA

Voici les journaux du serveur après le déploiement de ma guerre. Il est clair que des journaux contenant des haricots web ouvert a commencé

20-Jul-2017 10: 06: 08,315 INFO [http-nio-8080-exec-5] org.apache.catalina.startup. HostConfig.deployWAR Déploiement web archive d'application [D: \ krishna \ apache-tomcat-9.0.0.M22 \ webapps \ openwebbeans-beginner.war] 20 juil. 2017 10: 06: 08.904 INFO [http-nio- 8080-exec-5] org.apache.webbeans.lifecycle.AbstractLifeCycle.bootstrapApplication Container OpenWebBeans commence ... 20-Jul-2017 10: 06: 09,229 INFO [http-nio-8080-exec-5] org.apache.webbeans.lifecycle.AbstractLifeCycle.bootstrapApplication OpenWebBeans Container a démarré, il a fallu [325] ms. 20-Jul-2017 10: 06: 09.235 INFO [http-nio-8080-exec-5] org.apache.catalina.startup.HostConfig.deployWAR Déploiement du web archive d'application [D: \ krishna \ apache- tomcat-9.0.0.M22 \ webapps \ openwebbeans-débutant.guerre] a terminé en [920] ms

De plus, j'ai créé openwebbeans.properties sous META-INF/openwebbeans et a ajouté org.apache.webbeans.spi.ContainerLifecycle = org.apache.webbeans.lifecycle.StandaloneLifeCycle à lui. Mais il ne fonctionne toujours pas

J'ai aussi essayé avec org.apache.webbeans.spi.ContainerLifecycle = org.apache.webbeans.web.lifecycle.WebContainerLifecycle, mais rien ne semble fonctionner.

Quelqu'un peut-il s'il vous plaît aidez-moi à obtenir ce travail?

+0

J'ai le même problème avec Tomcat-8.0.45 et Tomcat-8.5.16. Quelqu'un a eu ça pour travailler? – David

Répondre

0

Si vous avez besoin d'une injection dans des servlets, vous avez besoin d'une intégration plus profonde que celle de l'écouteur de servlet. Nous fournissons ceci avec le plugin openwebbeans-tomcat7.

La façon la plus simple est d'utiliser notre installateur comme expliqué dans notre annonce courrier https://lists.apache.org/thread.html/[email protected]%3Cannounce.apache.org%3E

Dans ce cas, il suffit de retirer l'ensemble de votre WebBeansConfigurationListener web.xml. Ceci est destiné si vous aimez intégrer dans des conteneurs de servlets 'non pimpés' ou si vous exécutez GAE, etc. Dans ce cas, vous pouvez travailler avec CDI.current() pour obtenir votre bean CDI dans une servlet.

Vous n'avez plus besoin non plus de dépendance javassiste. Cela a été supprimé dans OWB-1.2.x il y a longtemps.

N'hésitez pas à nous envoyer un email sur nos listes de diffusion ou irc sur #openwebbeans sur freenode.net! Oh et un autre conseil: vous pouvez essayer notre conteneur Apache Meecrowave, qui est OWB + Tomcat9 + CXF + Johnzon - le tout dans 9 Mo. Il comprend un plugin maven, un conteneur Arquillian, etc.