[jboss-user] [Beginners Corner] - Seam with Multiple Datasouces

mitabhushan do-not-reply at jboss.com
Tue Jun 24 13:33:32 EDT 2008


I am tring to use multiple datasources in a seam project

xx-ds.xml is


<datasources>
  |    
  |    <local-tx-datasource>
  |       <jndi-name>hrtrackerDatasource</jndi-name>
  |       <connection-url>jdbc:mysql://xx:3306/hrtracker</connection-url>
  |       <driver-class>com.mysql.jdbc.Driver</driver-class>
  |       <user-name>xx</user-name>
  |       <password>xx</password>
  |    </local-tx-datasource>
  | 
  |    
  |    <local-tx-datasource>
  |     <jndi-name>employeeDatasource</jndi-name>
  |     <connection-url>jdbc:as400://xxx/medlib/mnuusr</connection-url>
  |     <driver-class>com.ibm.as400.access.AS400JDBCDriver</driver-class>
  |     <user-name>xx</user-name>
  |     <password>xx</password>  
  |    </local-tx-datasource>
  | 

persistence-dev.xml

  |  <persistence-unit name="hrtracker">
  |       <provider>org.hibernate.ejb.HibernatePersistence</provider>
  |       <jta-data-source>java:/hrtrackerDatasource</jta-data-source>
  |       <properties>
  |          <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
  |          <property name="hibernate.hbm2ddl.auto" value="validate"/>
  |          <property name="hibernate.show_sql" value="true"/>
  |          <property name="hibernate.format_sql" value="true"/>
  |          <property name="jboss.entity.manager.factory.jndi.name" value="java:/hrtrackerEntityManagerFactory"/>
  |          <property name="hibernate.default_catalog" value="hrtracker"/>
  |       </properties>
  |    </persistence-unit>
  |    
  |     <persistence-unit name="employee" >
  |       <provider>org.hibernate.ejb.HibernatePersistence</provider>
  |       <jta-data-source>java:/employeeDatasource</jta-data-source>
  |       <properties>
  |           <property name="hibernate.dialect" value="org.hibernate.dialect.DB2400Dialect" />
  |           <property name="hibernate.hbm2ddl.auto" value="validate"/>
  |           <property name="hibernate.show_sql" value="true"/>
  |           <property name="hibernate.format_sql" value="true"/>
  |           <property name="jboss.entity.manager.factory.jndi.name" value="java:/employeeEntityManagerFactory"/>
  |           <property name="hibernate.default_catalog" value="xxxx"/>
  |           <property name="hibernate.default_schema" value="PRODDTA"/>      
  | 	 </properties>
  |    </persistence-unit>
  | 

components.xml

  | <persistence:managed-persistence-context name="entityManager"
  |                                      auto-create="true"
  |                       persistence-unit-jndi-name="java:/hrtrackerEntityManagerFactory"/>   
  |                       
  |    <persistence:managed-persistence-context name="employeeManager"
  |    		      auto-create="true"
  |                       persistence-unit-jndi-name="java:/employeeEntityManagerFactory"/>                           
  | 
  | 

I used following pattern for class files
EmployeeList.java

  | package com.hrtracker.session;
  | 
  | import javax.persistence.EntityManager;
  | import org.jboss.seam.annotations.In;
  | import org.jboss.seam.annotations.Name;
  | import org.jboss.seam.framework.EntityQuery;
  | 
  | import com.hrtracker.entity.*;
  | 
  | @Name("employeeList")
  | public class EmployeeList extends EntityQuery {
  |  .................
  |    @Override
  |     protected String getPersistenceContextName() {
  |        return "employeeManager";    
  |     }
  | }
  | 


Employee.java

  | package com.med.stryker.hrtracker.entity;
  | ...
  | 
  | @Entity                                                                                                                                                                                                               
  | @Table(name="F0101")                                                                    
  | public class Employee implements java.io.Serializable
  | {
  | 	@In
  | 	EntityManager employeeManager;
  | 
  |  ...............
  | }
  | 

I redeployed using restart seam

  | hibernate.connection.password=xxxx
  | workspace.home=C\:/ProServers/Workspace
  | model.package=com.hrtracker.entity
  | hibernate.default_catalog=hrtracker
  | driver.jar=C\:\\ProServers\\drivers\\mysql-connector-java-5.0.4-bin.jar
  | action.package=com.hrtracker.session
  | test.package=com.hrtracker.test
  | database.type=mysql
  | richfaces.skin=classic
  | hibernate.default_schema.null=
  | database.drop=n
  | project.name=hrtracker
  | hibernate.connection.username=xxxxx
  | hibernate.connection.driver_class=com.mysql.jdbc.Driver
  | hibernate.cache.provider_class=org.hibernate.cache.HashtableCacheProvider
  | project.type=ear
  | icefaces.home=
  | database.exists=y
  | jboss.home=C\:/ProServers/jboss-4.2.2.GA
  | hibernate.dialect=org.hibernate.dialect.MySQLDialect
  | hibernate.connection.url=jdbc\:mysql\://xxxx\:3306/hrtracker
  | icefaces=n
  | 
The error I am getting is 

  | ObjectName: persistence.units:ear=hrtracker.ear,unitName=employee
  |   State: FAILED
  |   Reason: javax.persistence.PersistenceException: org.hibernate.HibernateException: Missing table: audit_military
  |   I Depend On:
  |     jboss.jca:service=DataSourceBinding,name=employeeDatasource
  | 
  | ObjectName: persistence.units:ear=hrtracker.ear,unitName=hrtracker
  |   State: FAILED
  |   Reason: javax.persistence.PersistenceException: org.hibernate.HibernateException: Missing table: F0101
  |   I Depend On:
  |     jboss.jca:service=DataSourceBinding,name=hrtrackerDatasource
Stacktrace is

  | com.sun.facelets.FaceletViewHandler handleRenderException
  | SEVERE: Error Rendering View[/home.xhtml]
  | java.lang.IllegalArgumentException: EntityManagerFactory not found in JNDI : java:/hrtrackerEntityManagerFactory
  | 	at org.jboss.seam.persistence.ManagedPersistenceContext.getEntityManagerFactoryFromJndiOrValueBinding(ManagedPersistenceContext.java:247)
  | 	at org.jboss.seam.persistence.ManagedPersistenceContext.initEntityManager(ManagedPersistenceContext.java:79)
  | 	at org.jboss.seam.persistence.ManagedPersistenceContext.getEntityManager(ManagedPersistenceContext.java:108)
  | 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  | 	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
  | 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
  | 	at java.lang.reflect.Method.invoke(Unknown Source)
  | 	at org.jboss.seam.util.Reflections.invoke(Reflections.java:21)
  | 	at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:125)
  | 	at org.jboss.seam.Component.callComponentMethod(Component.java:2082)
  | 	at org.jboss.seam.Component.unwrap(Component.java:2108)
  | 	at org.jboss.seam.Component.getInstance(Component.java:1887)
  | 	at org.jboss.seam.Component.getInstance(Component.java:1840)
  | 	at org.jboss.seam.Component.getInstance(Component.java:1834)
  | 	at org.jboss.seam.framework.Controller.getComponentInstance(Controller.java:263)
  | 	at org.jboss.seam.framework.PersistenceController.getPersistenceContext(PersistenceController.java:20)
  | 	at org.jboss.seam.framework.EntityQuery.getEntityManager(EntityQuery.java:153)
  | 	at org.jboss.seam.framework.EntityQuery.validate(EntityQuery.java:37)
  | 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  | 	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
  | 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
  | 	at java.lang.reflect.Method.invoke(Unknown Source)
  | 	at org.jboss.seam.util.Reflections.invoke(Reflections.java:21)
  | 	at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:31)
  | 	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56)
  | 	at org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:31)
  | 	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
  | 	at org.jboss.seam.transaction.TransactionInterceptor$1.work(TransactionInterceptor.java:38)
  | 	at org.jboss.seam.util.Work.workInTransaction(Work.java:40)
  | 	at org.jboss.seam.transaction.TransactionInterceptor.aroundInvoke(TransactionInterceptor.java:32)
  | 	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
  | 	at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:42)
  | 	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
  | 	at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107)
  | 	at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:166)
  | 	at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:102)
Please help!

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4160309#4160309

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4160309



More information about the jboss-user mailing list