CDI mit ejb 3.1, Schweißlogger auf Glassfish v3.0.1

Scenario: 1) Erstelle ein Maven Ear Projekt, erstelle ein Kriegsprojekt innerhalb von 2) Füge beans.xml zu dem WEB-INF des Kriegsprojekts hinzu / 3) Erstelle eine einfache @Steateless Bohne

project -http: //drp.ly/1j5C3

ejb bean:

@Stateless
@LocalBean
public class TestEjb {


    @Inject
    Logger log;

    public TestEjb() {
    }

    @Schedule(hour = "*", minute = "*", second = "*/15")
    public void print1Partner() {
        log.info("Yrjaaaa");
        System.out.println("This is test");

    }


}

maven pom-xml des Kriegsprojekts:

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>Testo</artifactId>
        <groupId>ua.co.testo</groupId>
        <version>1.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>Testo-web</artifactId>

    <packaging>war</packaging>

     <properties>
        <project.build.sourceEncoding>
            UTF-8
        </project.build.sourceEncoding>

        <project.reporting.outputEncoding>
            UTF-8
        </project.reporting.outputEncoding>        
    </properties>



    <dependencies>

        <dependency>
            <groupId>ua.eset.oasys</groupId>
            <artifactId>utopia</artifactId>
            <version>1.0</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>ua.eset.oasys</groupId>
            <artifactId>fenix</artifactId>
            <version>1.0</version>
            <scope>provided</scope>
        </dependency>


        <!-- SL4J API -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.6.0</version>
            <scope>provided</scope>
        </dependency>

        <!-- SLF4J JDK14 Binding  -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-jdk14</artifactId>
            <version>1.6.0</version>
            <scope>provided</scope>
        </dependency>

        <!-- Injectable Weld-Logger -->
        <dependency>
            <groupId>org.jboss.weld</groupId>
            <artifactId>weld-logger</artifactId>
            <version>1.0.0-CR2</version>
            <scope>provided</scope>
        </dependency>
            <!--CDI-->
       <!-- <dependency>
            <groupId>javax.enterprise</groupId>
            <artifactId>cdi-api</artifactId>
            <scope>provided</scope>
            <version>1.0-CR4</version>
        </dependency>-->



        <dependency>
            <groupId>javax.faces</groupId>
            <artifactId>jsf-api</artifactId>
            <version>2.0.2-FCS</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.faces</groupId>
            <artifactId>jsf-impl</artifactId>
            <version>2.0.2-FCS</version>
            <scope>provided</scope>
        </dependency>


        <!--J2EE-->
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>6.0</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.glassfish</groupId>
            <artifactId>javax.ejb</artifactId>
            <version>3.0</version>
            <scope>provided</scope>
        </dependency>



        <dependency>
            <groupId>org.glassfish</groupId>
            <artifactId>javax.servlet</artifactId>
            <version>3.0</version>
            <type>jar</type>
            <scope>provided</scope>
        </dependency>


    </dependencies>

    <build>
        <finalName>testo-web</finalName>

        <plugins>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.0.2</version>
                <configuration>
                    <encoding>utf8</encoding>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>

        </plugins>
    </build>

</project>

maven pom.xml von ear project:

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>Testo</artifactId>
        <groupId>ua.co.testo</groupId>
        <version>1.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>Testo-ear</artifactId>
    <packaging>ear</packaging>

    <properties>
        <project.build.sourceEncoding>
            UTF-8
        </project.build.sourceEncoding>

        <project.reporting.outputEncoding>
            UTF-8
        </project.reporting.outputEncoding>

    </properties>

    <dependencies>



        <!--weld-->
        <!-- SL4J API -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.6.0</version>
        </dependency>

        <!-- SLF4J JDK14 Binding  -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-jdk14</artifactId>
            <version>1.6.0</version>
        </dependency>

        <!-- Injectable Weld-Logger -->
        <dependency>
            <groupId>org.jboss.weld</groupId>
            <artifactId>weld-logger</artifactId>
            <version>1.0.0-CR2</version>
        </dependency>
<!--
        <dependency>
            <groupId>javax.enterprise</groupId>
            <artifactId>cdi-api</artifactId>

            <version>1.0-CR4</version>
        </dependency>-->

        <dependency>
            <groupId>ua.co.testo</groupId>
            <artifactId>Testo-web</artifactId>
            <version>1.0</version>
            <type>war</type>
        </dependency>


    </dependencies>

    <build>
        <finalName>testo</finalName>
        <plugins>
            <plugin>
                <!--<groupId>org.apache.maven.plugins</groupId>-->
                <artifactId>maven-ear-plugin</artifactId>
                <version>2.4.1</version>
                <configuration>
                    <modules>

                        <webModule>
                            <bundleFileName>testo-web.war</bundleFileName>
                            <groupId>ua.co.testo</groupId>
                            <artifactId>Testo-web</artifactId>
                        </webModule>



                        <!--weld-->
                        <!-- SL4J API -->
                        <jarModule>
                            <groupId>org.slf4j</groupId>
                            <artifactId>slf4j-api</artifactId>
                            <bundleDir>lib</bundleDir>
                        </jarModule>

                        <!-- SLF4J JDK14 Binding  -->
                        <jarModule>
                            <groupId>org.slf4j</groupId>
                            <artifactId>slf4j-jdk14</artifactId>
                            <bundleDir>lib</bundleDir>
                        </jarModule>

                        <!-- Injectable Weld-Logger -->
                        <jarModule>
                            <groupId>org.jboss.weld</groupId>
                            <artifactId>weld-logger</artifactId>
                            <bundleDir>lib</bundleDir>
                        </jarModule>
                        <!--<jarModule>
                            <groupId>javax.enterprise</groupId>
                            <artifactId>cdi-api</artifactId>
                            <bundleDir>lib</bundleDir>
                        </jarModule>-->

                    </modules>
                </configuration>
            </plugin>

        </plugins>

    </build>

</project>

Testfall 1 Proble): Projekt mit beans.xml bereitstellen, Ausnahme:

[# | 2010-07-04T19: 36: 50.003 + 0300 | WARNUNG | oracle-glassfish3.0.1 | javax.enterprise.system.container.ejb.com.sun.ejb.containers | _ThreadID = 33; _ThreadName = Thread- 1; | Eine Systemausnahme ist während eines Aufrufs der EJB-TestEjb-Methode aufgetreten. Public void TestEjb.print1Partner () javax.ejb.EJBException: javax.ejb.CreateException: Konnte keine zustandslose EJB in com.sun.ejb erstellen .containers.StatelessSessionContainer._getContext (StatelessSessionContainer.java:448) unter com.sun.ejb.containers.BaseContainer.getContext (BaseContainer.java:2467) unter com.sun.ejb.containers.BaseContainer.preInvoke (BaseContainer.60.ava ) unter com.sun.ejb.containers.BaseContainer.callEJBTimeout (BaseContainer.java:3962) unter com.sun.ejb.containers.EJBTimerService.deliverTimeout (EJBTimerService.java:1667) unter com.sun.ejb.containers.EJ Greifen Sie auf $ 100 (EJBTimerService.java:98) unter com.sun.ejb.containers.EJBTimerService $ TaskExpiredWork.run (EJBTimerService.java:2485) unter java.util.concurrent.Executors $ RunnableAdap zu ter.call (Executors.java:441) bei java.util.concurrent.FutureTask $ Sync.innerRun (FutureTask.java:303) bei java.util.concurrent.FutureTask.run (FutureTask.java:138) bei java.util .concurrent.ThreadPoolExecutor $ Worker.runTask (ThreadPoolExecutor.java:886) bei java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:908) bei java.lang.Thread.run (Thread.java:619) Verursacht von: javax.ejb.EJBException: javax.ejb.CreateException: Stateless EJB konnte nicht unter com.sun.ejb.containers.StatelessSessionContainer $ SessionContextFactory.create (StatelessSessionContainer.java:720) unter com.sun.ejb.containers erstellt werden .pool.NonBlockingPool.getObject (NonBlockingPool.java:200) at com.sun.ejb.containers.StatelessSessionContainer._getContext (StatelessSessionContainer.java:443) ... 12 more Auslöser: javax.ejb.CreateException: Konnte nicht erstellen EJB unter com.sun.ejb.containers.StatelessSessionContainer.createStatelessEJB (StatelessSessionContainer.java:528) unter com.sun.ejb.containers.StatelessSessionCo ntainer.access $ 000 (StatelessSessionContainer.java:90) at com.sun.ejb.containers.StatelessSessionContainer $ SessionContextFactory.create (StatelessSessionContainer.java:718) ... 14 more Auslöser: java.lang.NullPointerException at java.util. concurrent.ConcurrentHashMap.get (ConcurrentHashMap.java:768) bei org.jboss.weld.manager.BeanManagerImpl.getBean (BeanManagerImpl.java:1171) bei org.jboss.weld.manager.BeanManagerImpl.getBean (BeanManagerImpl.java:32) um org.glassfish.weld.services.JCDIServiceImpl._createJCDIInjectionContext (JCDIServiceImpl.java:145) um org.glassfish.weld.services.JCDIServiceImpl.createJCDIInjectionContext (JCDIServiceImpl.java:122) um com.sun.contain.e (BaseContainer.java:1616) at com.sun.ejb.containers.StatelessSessionContainer.createStatelessEJB (StatelessSessionContainer.java:469) ... 16 more | #] [# | 2010-07-04T19: 36: 50.004 + 0300 | INFO | oracle-glassfish3.0.1 | javax.enterprise.system.container.ejb.com.sun.ejb.containers | _ThreadID = 3 3; _ThreadName = Thread-1; | EJB5119: Löschzeitgeber ['13 @@ 1278255602087 @@ server @@ oasys '' TimedObject = TestEjb '' Anwendung = testo '' BEING_DELIVERED '' PERIODIC '' Container-ID = 83771744647118848 ' 04. Juli 19:36:45 EEST 2010 '' 0 '' * / 15 # * # * # * # * # * # * # null # null # true # print1Partner # 0 '] nach [2] fehlgeschlagenen Lieferungen | #]

[# | 2010-07-04T19: 37: 00.000 + 0300 | INFO | oracle-glassfish3.0.1 | javax.enterprise.system.std.com.sun.enterprise.v3.services.impl | _ThreadID = 33; _ThreadName = Thread-1; | Dies ist Test | #]

Ergebnisse erwarten:

Yrjaaaa

Dies ist test

Ergebnisse

Ausnahm

Dies ist test

case 2: beans.xml entfernen

Ergebnisse erwarten:

Yrjaaaa

Dies ist test

Ergebniss

Yrjaaaa

Dies ist test

Goal: Ich möchte EJB Weld (CDI) in Webprojekten im EAR-Archiv verwenden, die einige andere War & EJB-Projekte enthalten, aber ich möchte mein Webprojekt (War + EJB) nicht trennen.

tools & environment: maven & ejb 3.1 & weld & glassfish 3.0.1

F1: Ist dies eine Art spezifischer Glassfish-Fehler? F2: Was könnte ein Grund für ein Problem sein? Q3: gibt es ein Design für einen solchen Fall?

Vielen Dank

Antworten auf die Frage(4)

Ihre Antwort auf die Frage