Scenario: 1) create a mafia ear project, create a military project inside 2) add beans.xml to the WEB-INF / 3 project) creat simple @Steateless bean
project - http://drp.ly/1j5C3t
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 war 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-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>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jdk14</artifactId>
<version>1.6.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.weld</groupId>
<artifactId>weld-logger</artifactId>
<version>1.0.0-CR2</version>
<scope>provided</scope>
</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>
<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 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>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jdk14</artifactId>
<version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.jboss.weld</groupId>
<artifactId>weld-logger</artifactId>
<version>1.0.0-CR2</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>
<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>
<jarModule>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<bundleDir>lib</bundleDir>
</jarModule>
<jarModule>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jdk14</artifactId>
<bundleDir>lib</bundleDir>
</jarModule>
<jarModule>
<groupId>org.jboss.weld</groupId>
<artifactId>weld-logger</artifactId>
<bundleDir>lib</bundleDir>
</jarModule>
</modules>
</configuration>
</plugin>
</plugins>
</build>
</project>
Test case 1 ( Problem ): deploying a project with beans.xml exception:
[# | 2010-07-04T19: 36: 50,003 + 0300 | | -glassfish3.0.1 | javax.enterprise.system.container.ejb.com.sun.ejb.containers | _ThreadID = 33; _ThreadName = Thread-1; | EJB TestEjb public void TestEjb.print1Partner() javax.ejb.EJBException: javax.ejb.EJBException: javax.ejb.CreateException: EJB com.sun.ejb.containers.StatelessSessionContainer._getContext (StatelessSessionContainer.java:448) com.sun.ejb.containers.BaseContainer.getContext(BaseContainer.java:2467) com.sun.ejb.containers.BaseContainer.preInvoke(BaseContainer.java:1860) com.sun.ejb.containers.BaseContainer.callEJBTimeout(BaseContainer.java:3962) com.sun.ejb.containers.EJBTimerService.deliverTimeout(EJBTimerService.java:1667) com.sun.ejb.containers.EJBTimerService.access $100 (EJBTimerService.java:98) com.sun.ejb.containers.EJBTimerService $TaskExpiredWork.run(EJBTimerService.java:2485) java.util.concurrent.Executors $RunnableAdapter.call(Executors.java:441) java.util.concurrent.FutureTask $Sync.innerRun(FutureTask.java:303) java.util.concurrent.FutureTask.run(FutureTask.java:138) java.util.concurrent.ThreadPoolExecutor $Worker.runTask(ThreadPoolExecutor.java:886) java.util.concurrent.ThreadPoolExecutor $Worker.run(ThreadPoolExecutor.java:908) java.lang.Thread.run(Thread.java:619) : javax.ejb.EJBException: javax.ejb.CreateException: EJB com.sun.ejb.containers.StatelessSessionContainer $SessionContextFactory.create(StatelessSessionContainer.java:720) com.sun.ejb.containers.util.pool.NonBlockingPool.getObject(NonBlockingPool.java:200) com.sun.ejb.containers.StatelessSessionContainer._getContext (StatelessSessionContainer.java:443) ... 12 : javax.ejb.CreateException: EJB com.sun.ejb.containers.StatelessSessionContainer.createStatelessEJB(StatelessSessionContainer.java:528) com.sun.ejb.containers.StatelessSessionContainer.access $000 (StatelessSessionContainer.java:90) com.sun.ejb.containers.StatelessSessionContainer $SessionContextFactory.create(StatelessSessionContainer.java:718) ... 14 : java.lang.NullPointerException java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:768) org.jboss.weld.manager.BeanManagerImpl.getBean(BeanManagerImpl.java:1171) org.jboss.weld.manager.BeanManagerImpl.getBean(BeanManagerImpl.java:132) org.glassfish.weld.services.JCDIServiceImpl._createJCDIInjectionContext (JCDIServiceImpl.java:145) org.glassfish.weld.services.JCDIServiceImpl.createJCDIInjectionContext(JCDIServiceImpl.java:122) com.sun.ejb.containers.BaseContainer.createEjbInstanceAndContext(BaseContainer.java:1616) com.sun.ejb.containers.StatelessSessionContainer.createStatelessEJB(StatelessSessionContainer.java:469) ... 16 | #] [# | 2010-07-04T19: 36: 50,004 + 0300 | | -glassfish3.0.1 | javax.enterprise.system.container.ejb.com.sun.ejb.containers | _ThreadID = 33; _ThreadName = -1; | EJB5119: ['13 @@1278255602087 @@ @@OASYS' 'TimedObject = TestEjb' 'Application = testo '' BEING_DELIVERED '' PERIODIC ' 'ID = 83771744647118848' 'Sun Jul 04 19:36:45 EEST 2010' '0' '*/15 # * # * # * # * # * # * # null # null # null # # 1Partner # 0 '] [2] | #]
[# | 2010-07-04T19: 37: 00.000 + 0300 | | -glassfish3.0.1 | javax.enterprise.system.std.com.sun.enterprise.v3.services.impl | _ThreadID = 33; _ThreadName = Thread-1; | | #]
:
Yrjaaaa
:
Exception
2:
beans.xml
:
Yrjaaaa
Yrjaaaa
: ejb- (CDI) - , ejb, - (war + ejb)
: maven ejb 3.1 3.0.1
Q1: - ?
Q2: ?
Q3: - ?
.