hi, first of all sorry for my english ;)
then :)
i've JBoss Application Server : jboss-4.0.4.GA configured with EJB3...
i'm working with oracle 10g and postgresql databases.
i want write server side ejb component wich must work both of this databases and i want manage this transactions ......
i have no problem working with single database.. (with only oracle or with only postgres)
i think i need two -ds.xml file oracle-xa-ds.xml and postgres-ds.xml . both of them are configured corectly... i also put both database dtiver in jboss lib folder.
there is my ds.xml files :
oracle-xa-ds.xml
Quote:
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<xa-datasource>
<jndi-name>XAOracleDS</jndi-name>
<track-connection-by-tx/>
<isSameRM-override-value>false</isSameRM-override-value> <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
<xa-datasource-property name="URL">jdbc:oracle:thin:@192.9.200.177:1521:devnbtwo</xa-datasource-property>
<xa-datasource-property name="User">paata</xa-datasource-property>
<xa-datasource-property name="Password">1982226</xa-datasource-property>
<no-tx-separate-pools/>
<metadata>
<type-mapping>Oracle9i</type-mapping>
</metadata>
</xa-datasource>
<mbean code="org.jboss.resource.adapter.jdbc.vendor.OracleXAExceptionFormatter"
name="jboss.jca:service=OracleXAExceptionFormatter">
<depends optional-attribute-name="TransactionManagerService">jboss:service=TransactionManager</depends>
</mbean>
</datasources>
postgres-ds.xml
Quote:
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>PostgresDS</jndi-name> <connection-url>jdbc:postgresql://localhost:5432/Test</connection-url>
<driver-class>org.postgresql.Driver</driver-class>
<user-name>postgres</user-name>
<password>1982226</password>
<metadata>
<type-mapping>PostgreSQL 7.2</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>
and i think i need two persistance.xml file in my application. am i riht ?
persistance.xml
Quote:
<?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/ ... ce_1_0.xsd"
version="1.0">
<persistence-unit name="Oracle" transaction-type="JTA">
<jta-data-source>java:/XAOracleDS</jta-data-source>
<class>com.magti.businesslayer.ejb3entity.Group</class>
<class>com.magti.businesslayer.ejb3entity.Student</class>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect"/>
<property name="hibernate.connection.driver_class" value="oracle.jdbc.driver.OracleDriver"/>
<property name="hibernate.connection.url" value="jdbc:oracle:thin:@192.9.200.177:1521:devnbtwo"/>
<property name="hibernate.connection.username" value="paata"/>
<property name="hibernate.connection.password" value="1982226"/>
<property name="hibernate.default_schema" value="PAATA"/>
</properties>
</persistence-unit>
</persistence>
and persistance1.xml
Quote:
<?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/ ... ce_1_0.xsd"
version="1.0">
<persistence-unit name="PostgreSql" transaction-type="JTA">
<jta-data-source>java:/PostgresDS</jta-data-source>
<class>com.magti.businesslayer.ejb3entity.Group</class>
<class>com.magti.businesslayer.ejb3entity.Student</class>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
<property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/>
<property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/Test"/>
<property name="hibernate.connection.username" value="postgres"/>
<property name="hibernate.connection.password" value="1982226"/>
<property name="hibernate.default_schema" value="postgres"/>
</properties>
</persistence-unit>
</persistence>
and my session bean looks like
Quote:
import [...];
@Remote(StudentFasade.class)
public @Stateless
class StudentFasadeBean implements StudentFasade {
@PersistenceContext(name="Oracle")
private EntityManager oracleManager;
@PersistenceContext(name="PostgreSql")
private EntityManager postgreSqlmanager;
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public Long addStudent(Student _student)
throws MagtiException {
try {
System.out.println("================= Adding Student =====================");
_student.setAge(stbean.getAge());
_student.setId(stbean.getId());
_student.setName(stbean.getName());
_student.setSurname(stbean.getSurname());
//add in oracle
oracleManager.persist(_student);\
//add in postgres
postgreSqlmanager.persist(_student);
System.out.println("======== Students Adding Completed Succsessfully ======");
return _student.getId();
} catch (Exception e) {
e.printStackTrace();
return 0L;
}
}
}
what is wrong here can anybody help me ..
thanks.