[jboss-user] [JBoss/Spring Integration] - Re: Jboss 5 Beta 3 and Spring Deployer
ragavgomatam
do-not-reply at jboss.com
Tue Jan 1 20:21:12 EST 2008
Thanks Ales...That explains it....So then I have my EAR file with ejb3.jar (ejb3 module) and spring-inject.jar (spring module) and ejb3.war (web-module) .
I also have my ejb 3 as :-
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;
|
| /**
| * @author Ragav
| *
| */
|
| @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;
|
| @Spring(jndiName = "spring-inject", bean = "person")
| private IPerson p;
|
| 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()");
| }
|
| public IPerson getPerson() {
| return this.p;
| }
|
| }
|
But it appears that annotation @Spring(jndiName = "spring-inject", bean = "person") does not work since the jndiName "spring-inject" is not bound.
This is the error I get :
20:13:40,609 INFO [DefaultListableBeanFactory] Pre-instantiating singletons in factory [org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans [/home,ejbLocalIntf]; root of BeanFactory hierarchy]
20:13:40,844 ERROR [STDERR] java.lang.RuntimeException: javax.naming.NameNotFoundException: spring-inject not bound
20:13:40,844 ERROR [STDERR] at org.jboss.ejb3.EJBContainer.construct(EJBContainer.java:727)
20:13:40,844 ERROR [STDERR] at org.jboss.ejb3.stateful.StatefulContainer.createBeanContext(StatefulContainer.java:103)
20:13:40,844 ERROR [STDERR] at org.jboss.ejb3.pool.AbstractPool.createBeanContext(AbstractPool.java:130)
20:13:40,844 ERROR [STDERR] at org.jboss.ejb3.pool.AbstractPool.create(AbstractPool.java:79)
20:13:40,844 ERROR [STDERR] at org.jboss.ejb3.InfinitePool.get(InfinitePool.java:56)
20:13:40,844 ERROR [STDERR] at org.jboss.ejb3.pool.ThreadlocalPool.create(ThreadlocalPool.java:58)
20:13:40,844 ERROR [STDERR] at org.jboss.ejb3.pool.ThreadlocalPool.get(ThreadlocalPool.java:113)
If you see, it says that the name "spring-inject" (name of my spring archive within my EAR ) is not bound to jndi.
My application.xml is as follows :-
<application xmlns="http://java.sun.com/xml/ns/javaee"
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
| xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
| http://java.sun.com/xml/ns/javaee/application_5.xsd"
| version="5">
| <description>Test ejb3 j2ee 5 application</description>
| <display-name>Ejb3</display-name>
| <module>
| <web>
| <web-uri>Ejb3.war</web-uri>
| <context-root>ejb3</context-root>
| </web>
| </module>
| <module>
| <ejb>Ejb3.jar</ejb>
| </module>
| <module>
| <java>spring-inject.jar</java>
| </module>
| </application>
|
|
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4116282#4116282
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4116282
More information about the jboss-user
mailing list