Tomcat 10 und CDI

derMicki

Mitglied
Hallo zusammen,
seite vielen Tagen bin ich am Suchen, wie ich folgendes einrichten kann:
Tomcat 10.x, jee, cdi (noch weiteres, aber das läuft bereits). Was ist das Problem? Ich habe die dependancies wie in der pom zusammengestellt.
Beim Injecten eine Klasse ist diese immer null. Screenshots s.u.. Ich wäre um eine Hilfe sehr dankbar.

pom.xml
XML:
<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
    </properties>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <release>17</release>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.2.3</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>17</source>
                    <target>17</target>
                    <annotationProcessorPaths>
                        <processorPath>
                            <groupId>org.eclipse.persistence</groupId>
                            <artifactId>
                                org.eclipse.persistence.jpa.modelgen.processor</artifactId>
                            <version>4.0.5</version>
                        </processorPath>
                        <path>
                            <groupId>org.mapstruct</groupId>
                            <artifactId>mapstruct-processor</artifactId>
                            <version>1.6.3</version>
                        </path>
                    </annotationProcessorPaths>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <!--
        https://mvnrepository.com/artifact/org.eclipse.persistence/org.eclipse.persistence.jpa.modelgen.processor -->
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.jpa.modelgen.processor</artifactId>
            <version>4.0.5</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.1</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-core</artifactId>
            <version>2.20.0</version>
            <scope>test</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.mapstruct/mapstruct -->
        <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct</artifactId>
            <version>1.6.3</version>
        </dependency>

        <dependency>
            <groupId>jakarta.servlet</groupId>
            <artifactId>jakarta.servlet-api</artifactId>
            <version>6.0.0</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>jakarta.faces</groupId>
            <artifactId>jakarta.faces-api</artifactId>
            <version>4.0.0</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.glassfish</groupId>
            <artifactId>jakarta.faces</artifactId>
            <version>4.0.0</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>8.0.1</version>
            <scope>provided</scope>
        </dependency>

        <!--
        https://mvnrepository.com/artifact/org.apache.myfaces.core/myfaces-bundle -->
        <dependency>
            <groupId>org.apache.myfaces.core</groupId>
            <artifactId>myfaces-bundle</artifactId>
            <version>4.0.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.primefaces/primefaces -->
        <dependency>
            <groupId>org.primefaces</groupId>
            <artifactId>primefaces</artifactId>
            <version>14.0.11</version>
            <classifier>jakarta</classifier>
        </dependency>

        <dependency>
            <groupId>org.jboss.weld.servlet</groupId>
            <artifactId>weld-servlet-core</artifactId>
            <version>4.0.3.Final</version>
        </dependency>

Klasse, die injected werden soll:
Java:
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
@Stateless
@LocalBean
public class DatenschrankDAO {

Klasse, die injected:
Java:
import jakarta.enterprise.context.RequestScoped;
import jakarta.inject.Inject;
import jakarta.inject.Named;

@Named
@RequestScoped
public class TestController implements Serializable {
    private static final long serialVersionUID = 1L;

    @Inject
    private DatenschrankDAO datenschrankDAO; <############### null!

web.xml:
XML:
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
         version="6.0">
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>jakarta.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.faces</url-pattern>
    </servlet-mapping>
</web-app>

und zum Schluss:
1740468228069.png
 
Tomcat ist doch gar nicht JEE Compliant? Oder hat sich das geändert?
Er meint sicherlich Jakarta EE

Ich würde echte Jakarta EE Projekte vermutlich nicht mit einem Tomcat umsetzen. Aber s. https://stackoverflow.com/questions/18995951/how-to-install-and-use-cdi-on-tomcat
 
Zuletzt bearbeitet:
Er meint sicherlich Jakarta EE

Ich würde echte Jakarta EE Projekte vermutlich nicht mit einem Tomcat umsetzen. Aber s. https://stackoverflow.com/questions/18995951/how-to-install-and-use-cdi-on-tomcat
Sorry, ich war ungenau 😉 auch nicht Jakarta EE compliant... Dachte dafür gibts TomEE, wobei ich auch eher auf Wildfly o.ä. setzen würde
 

Zurück
Oben