EntityManager on distributed database
sanghakanwar Dec 17, 2008 12:46 PMHi,
We used seam-gen to do a CRUD app. We have two databases
1) local (on same box where app is deployed)
2) remote (seperate box)
We have 2 entities
1) entity 1 - local db
2) entity 2 - remote db
Now when we try to access the entity2, we are getting db table not found exception. Basically the entityManager is quering the local db instead of the remote db.
hss - remote db
mnode - local db
Components.xml
<?xml version="1.0" encoding="UTF-8"?>
<components xmlns="http://jboss.com/products/seam/components"
xmlns:core="http://jboss.com/products/seam/core"
xmlns:persistence="http://jboss.com/products/seam/persistence"
xmlns:drools="http://jboss.com/products/seam/drools"
xmlns:bpm="http://jboss.com/products/seam/bpm"
xmlns:security="http://jboss.com/products/seam/security"
xmlns:mail="http://jboss.com/products/seam/mail"
xmlns:transaction="http://jboss.com/products/seam/transaction"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://jboss.com/products/seam/core http://jboss.com/products/seam/core-2.1.xsd
http://jboss.com/products/seam/persistence http://jboss.com/products/seam/persistence-2.1.xsd
http://jboss.com/products/seam/drools http://jboss.com/products/seam/drools-2.1.xsd
http://jboss.com/products/seam/bpm http://jboss.com/products/seam/bpm-2.1.xsd
http://jboss.com/products/seam/transaction http://jboss.com/products/seam/transaction-2.1.xsd
http://jboss.com/products/seam/security http://jboss.com/products/seam/security-2.1.xsd
http://jboss.com/products/seam/mail http://jboss.com/products/seam/mail-2.1.xsd
http://jboss.com/products/seam/components http://jboss.com/products/seam/components-2.1.xsd">
<core:init jndi-pattern="java:comp/env/sps/#{ejbName}/local" debug="false"/>
<transaction:ejb-transaction/>
<core:manager conversation-timeout="120000"
concurrent-request-timeout="120000"
conversation-id-parameter="cid"
parent-conversation-id-parameter="pid"/>
<persistence:managed-persistence-context name="entityManagerHss"
auto-create="true"
entity-manager-factory="#{hssEntityManagerFactory}"/>
<persistence:entity-manager-factory name="hssEntityManagerFactory"
persistence-unit-name="hss"/>
<persistence:managed-persistence-context name="entityManager"
auto-create="true"
entity-manager-factory="#{mnodeEntityManagerFactory}"/>
<persistence:entity-manager-factory name="mnodeEntityManagerFactory"
persistence-unit-name="mnode"/>
<security:identity authenticate-method="#{authenticator.authenticate}"/>
<!-- <security:identity authenticate-method="#{test.authenticate}"/> -->
<event type="org.jboss.seam.security.notLoggedIn">
<action execute="#{redirect.captureCurrentView}"/>
</event>
<event type="org.jboss.seam.security.loginSuccessful">
<action execute="#{redirect.returnToCapturedView}"/>
</event>
<mail:mail-session host="localhost" port="2525" username="test" password="test" />
<!-- For use with jBPM pageflow or process management -->
<!--
<bpm:jbpm>
<bpm:process-definitions></bpm:process-definitions>
<bpm:pageflow-definitions></bpm:pageflow-definitions>
</bpm:jbpm>
-->
</components>
persistence.xml
<?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0"> <persistence-unit name="mnode" transaction-type="JTA"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <jta-data-source>platformDatasource</jta-data-source> <properties> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/> <property name="hibernate.show_sql" value="true"/> <property name="hibernate.format_sql" value="true"/> <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.SunONETransactionManagerLookup"/> </properties> </persistence-unit> <persistence-unit name="hss" transaction-type="JTA"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <jta-data-source>hssDatasource</jta-data-source> <properties> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/> <property name="hibernate.show_sql" value="true"/> <property name="hibernate.format_sql" value="true"/> <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.SunONETransactionManagerLookup"/> </properties> </persistence-unit> </persistence>
Entity 1
@Entity
@Table(name = visited_net, catalog = hss, uniqueConstraints = @UniqueConstraint(columnNames = "identity"))
public class VisitedNetwork implements java.io.Serializable {
private Integer id;
private String identity;Entity 2
@Entity
@Table(name = Component, catalog = mnode_cm_data, uniqueConstraints = @UniqueConstraint(columnNames = "name"))
public class Component implements java.io.Serializable {
private int oidIndex;
private ProtGrp protGrp;
How to map the entity to an entityManager ??