Pregunta

Escenario: 1) crear el proyecto maven oído, crear dentro del proyecto de guerra 2) Añadir a la guerra beans.xml project`s WEB-INF / 3) bean creat sencilla @Steateless

Proyecto - http://drp.ly/1j5C3t

bean EJB:

@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 del proyecto de la guerra:

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

experta pom.xml del proyecto de la oreja:

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

Caso de prueba 1 ( Problema ): el despliegue de proyecto con excepción de dar beans.xml:

  

[# | 2010-07-04T19: 36: 50.003 + 0.300 | ADVERTENCIA | oráculo-glassfish3.0.1 | javax.enterprise.system.container.ejb.com.sun.ejb.containers | _ThreadID = 33; _ThreadName = thread-1; | Una   excepción del sistema se produjo durante una   invocación de método EJB TestEjb   TestEjb.print1Partner public void ()   javax.ejb.EJBException:   javax.ejb.EJBException:   javax.ejb.CreateException: No se pudo   crear EJB sin estado en   com.sun.ejb.containers.StatelessSessionContainer._getContext (StatelessSessionContainer.java:448)     a   com.sun.ejb.containers.BaseContainer.getContext (BaseContainer.java:2467)     a   com.sun.ejb.containers.BaseContainer.preInvoke (BaseContainer.java:1860)     a   com.sun.ejb.containers.BaseContainer.callEJBTimeout (BaseContainer.java:3962)     a   com.sun.ejb.containers.EJBTimerService.deliverTimeout (EJBTimerService.java:1667)     a   com.sun.ejb.containers.EJBTimerService.access $ 100 (EJBTimerService.java:98)     a   com.sun.ejb.containers.EJBTimerService $ TaskExpiredWork.run (EJBTimerService.java:2485)     a   java.util.concurrent.Executors $ RunnableAdapter.call (Executors.java:441)     a   java.util.concurrent.FutureTask $ Sync.innerRun (FutureTask.java:303)     a   java.util.concurrent.FutureTask.run (FutureTask.java:138)     a   java.util.concurrent.ThreadPoolExecutor $ Worker.runTask (ThreadPoolExecutor.java:886)     a   java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:908)     a   java.lang.Thread.run (Thread.java:619)   Causado por: javax.ejb.EJBException:   javax.ejb.CreateException: No se pudo   crear EJB sin estado en   com.sun.ejb.containers.StatelessSessionContainer $ SessionContextFactory.create (StatelessSessionContainer.java:720)     a   com.sun.ejb.containers.util.pool.NonBlockingPool.getObject (NonBlockingPool.java:200)     a   com.sun.ejb.containers.StatelessSessionContainer._getContext (StatelessSessionContainer.java:443)     ... 12 más causada por:   javax.ejb.CreateException: No se pudo   crear EJB sin estado en   com.sun.ejb.containers.StatelessSessionContainer.createStatelessEJB (StatelessSessionContainer.java:528)     a   com.sun.ejb.containers.StatelessSessionContainer.access $ 000 (StatelessSessionContainer.java:90)     a   com.sun.ejb.containers.StatelessSessionContainer $ SessionContextFactory.create (StatelessSessionContainer.java:718)     ... 14 más causada por:   java.lang.NullPointerException en   java.util.concurrent.ConcurrentHashMap.get (ConcurrentHashMap.java:768)     a   org.jboss.weld.manager.BeanManagerImpl.getBean (BeanManagerImpl.java:1171)     a   org.jboss.weld.manager.BeanManagerImpl.getBean (BeanManagerImpl.java:132)     a   org.glassfish.weld.services.JCDIServiceImpl._createJCDIInjectionContext (JCDIServiceImpl.java:145)     a   org.glassfish.weld.services.JCDIServiceImpl.createJCDIInjectionContext (JCDIServiceImpl.java:122)     a   com.sun.ejb.containers.BaseContainer.createEjbInstanceAndContext (BaseContainer.java:1616)     a   com.sun.ejb.containers.StatelessSessionContainer.createStatelessEJB (StatelessSessionContainer.java:469)     ... 16 más | #]   [# | 2010-07-04T19: 36: 50.004 + 0.300 | INFO | oráculo-glassfish3.0.1 | javax.enterprise.system.container.ejb.com.sun.ejb.containers | _ThreadID = 33; _ThreadName = Thread-1 ; | EJB5119: Expurgar   Temporizador   ['13 @@ @@ 1278255602087 servidor @@ oasys'   'TimedObject = TestEjb' '= Aplicación   testo' 'BEING_DELIVERED' 'PERIÓDICO'   'Contenedor ID = 83771744647118848'   'Dom Jul 04 19:36:45 CEST 2010' '0'   '* / * # 15 # * # * # * # * # * # # nula   null # # nula verdadera # # print1Partner   0' ] a partir de [2] entregas fallidas | #]

     

[# | 2010-07-04T19: 37: 00.000 + 0.300 | INFO | oráculo-glassfish3.0.1 | javax.enterprise.system.std.com.sun.enterprise.v3.services.impl | _ThreadID = 33; _ThreadName = Thread-1; | Este   es la prueba | #]

esperar resultados:

Yrjaaaa

Esta es la prueba

Resultados:

Excepción

Esta es la prueba


caso 2: eliminar beans.xml

esperar resultados:

Yrjaaaa

Esta es la prueba

resultados

Yrjaaaa

Esta es la prueba

Objetivo: Quiero utilizar EJB soldadura (CDI) en el proyecto de la tela dentro del archivo oreja que incluye algunos otros proyectos de guerra y EJB, pero yo `t Wond para separar mi proyecto web (guerra + EJB)

Herramientas y medio ambiente: maven y EJB 3.1 y soldadura y GlassFish 3.0.1

P1: es esto podría ser una especie de bichos glassfish específico? P2: ¿qué podría ser una causa de problema? P3: ¿hay algo de diseño para este caso

Gracias.

¿Fue útil?

Solución 2

Parece que cant use Injection of weld logger in ejb in a case of glassfish ejb container because of it is ejb container managed bean and it dont Ver productor

El diseño actual es el módulo EJB y la guerra por separado -. En la lista se bifurca para mí

Otros consejos

De cualquier paquete El EJB en un .war o empaquetarlo como ejb-jar dentro de un "tradicional" .ear . Considero que el .war de envases para su conveniencia para los proyectos sin necesidad de modularización fuertes. Pero esto no significa que las reglas cambiaron cuando se utiliza un .ear embalaje.

En otras palabras, creo que no se pueden mezclar ambos enfoques, y no se puede esperar un recipiente para apoyarlo.

Como nota al margen, me pregunto por qué estás envases cdi-api dentro del oído, creo que el API es proporcionada por el recipiente.

En mi opinión, usted debe tratar de mantener las cosas simples.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top