[jboss-user] [EJB 3.0] - Ejb 3 in Jboss 5 Beta 3
ragavgomatam
do-not-reply at jboss.com
Sun Dec 23 10:11:46 EST 2007
Hi,
I have ejb3 deployed & working in jboss 4.2.1. The same EAR when dropped into jboss 5 Beta 3\default\deploy has problems. Let me elaborate.
I have ejb's . (1) SayHelloBean & (2) Calculator Bean. BOTH WORK IN jboss 4.2.1 and BOTH ARE EJB 3's.
Code
package com.ejb3.interfaces;
|
| import java.sql.SQLException;
| import javax.ejb.Local;
| @Local
| public interface SayHello {
| public String sayHelloWithEjb3DI() throws SQLException;
|
}
Bean
package com.ejb3.beans;
|
| import static javax.ejb.TransactionAttributeType.REQUIRED;
| import javax.ejb.Stateful;
| import javax.ejb.TransactionAttribute;
| import javax.ejb.EJB;
| import javax.annotation.PostConstruct;
| import javax.annotation.Resource;
| import javax.interceptor.ExcludeDefaultInterceptors;
| import javax.sql.DataSource;
| import javax.annotation.PreDestroy;
|
| import org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport;
| import org.jboss.annotation.spring.Spring;
|
| import com.ejb3.domain.IPerson;
| import com.ejb3.interfaces.Calculator;
| import com.ejb3.interfaces.SayHello;
|
| @Stateful
| @TransactionAttribute(REQUIRED)
| @ExcludeDefaultInterceptors
| public class SayHelloBean extends SimpleJdbcDaoSupport implements SayHello {
|
| @Resource(name = "jdbc/TestDs", type = DataSource.class, shareable = true, mappedName = "java:jdbc/OracleDS")
| private DataSource ds;
|
| @EJB(beanName = "CalculatorBean")
| private Calculator calculator;
|
| @Resource(name = "sqlForEjb")
| private String sql;
|
| public String sayHelloWithEjb3DI() {
| return "Testing ejb3 DI & your age is "
| + getSimpleJdbcTemplate().queryForInt(sql);
| }
|
| public double calulate() {
| return calculator.calculate(2, 3);
| }
|
| @PostConstruct
| public void init() {
| setDataSource(ds);
| }
|
| @PreDestroy
| public void callThis() {
| System.out.println("Invoking method: preDestroy()");
| }
|
| }
|
BEAN 2
package com.ejb3.interfaces;
|
| import javax.ejb.Local;
|
| @Local
| public interface Calculator {
| public double calculate(int i, int j);
| }
package com.ejb3.beans;
|
| import static javax.ejb.TransactionAttributeType.REQUIRED;
| import javax.ejb.Stateless;
| import javax.ejb.TransactionAttribute;
| import javax.interceptor.ExcludeDefaultInterceptors;
| import com.ejb3.interfaces.Calculator;
|
| @Stateless
| @TransactionAttribute(REQUIRED)
| @ExcludeDefaultInterceptors
| public class CalculatorBean implements Calculator {
|
| public double calculate(int i, int j) {
| return i + j;
| }
|
| }
|
|
This was deployed in an EAR file with spring looking up the ejb as follows :-
<bean name="/home" class="com.ejb3.action.SpringEjb3Action"
| autowire="byName">
| <property name="sayhello" ref="ejbLocalIntf"></property>
| </bean>
| <!-- Jboss 4.2 look up of ejb3 -->
| <jee:jndi-lookup id="ejbLocalIntf" jndi-name="Ejb3/SayHelloBean/local" />
| </beans>
This works perfectly in jboss 4.2.1 but in jboss 5 beta 3 I get the following deployment error :-
org.jboss.deployers.spi.DeploymentException: Error deploying Ejb3.jar: Error creating ejb container CalculatorBean: java.lang.RuntimeException: Unable to load class for annotation org.jboss.annotation.ejb.PoolClass using class loader org.jboss.mx.loading.UnifiedClassLoader3 at b8ec9b{ url=vfsfile:/C:/jboss-5.0.0.Beta3/server/default/deploy/Ejb3.ear ,addedOrder=21}
Also in the jmx-console under jndiView, I see the ejb's not bound.
java:comp namespace of the component jboss.j2ee:ear=Ejb3.ear,jar=Ejb3.jar,name=CalculatorBean,service=EJB3 :
|
| +- ORB[link -> java:/JBossCorbaORB] (class: javax.naming.LinkRef)
| +- EJBContext (class: javax.ejb.EJBContext)
| +- env (class: org.jnp.interfaces.NamingContext)
I don't see the ejb's bound under GLOBAL JNDI Namespace either.
Any suggestions/ideas ?
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4115249#4115249
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4115249
More information about the jboss-user
mailing list