You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomee.apache.org by JensToerber <je...@juwimm.com> on 2009/02/11 11:56:14 UTC

Re: OpenEJB on Oracle

Hi,

got our production application running with Openejb on Tomcat.
We are using:
- Spring 2.5.1 (JndiObjectFactoryBean); we could replace this with @EJB
- Facelets with JSF 1.2
- Timer
- MDBs
- Hibernate as JPA provider
- Entity and Session Beans

Currently no problems.

We have a newsletter module, where we generate a lot of E-Mails and need
long running transactions. We still have to test this and some other stress
tests. I'll report the results.

Best regards,

Jens


JensToerber wrote:
> 
> Hi altogether,
> 
> i am using OpenEJB 3.x as standalone edition for JUnit tests and i tried
> to get OpenEJB Examples running on Tomcat 6.0.x. on Oracle 10g.
> 
> I have problems configuring the persistence units and/or datasources. I am
> not quite sure what the problem is:
> 
> persistence.xml:
> <?xml version="1.0" encoding="UTF-8"?>
> <persistence version="1.0" 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">
> 	<!--
> 	only one persistence unit per project by JPA Tools supported
> 	-->
> 	<!--
> 	<persistence-unit name="JPATestProject">
> 	</persistence-unit>
> 	-->
> 	<persistence-unit name="beds_pu" transaction-type="JTA">
> 		<provider>org.hibernate.ejb.HibernatePersistence</provider>
> 		<jta-data-source>OracleORCL</jta-data-source>
> 		<non-jta-data-source>OracleORCLUnmanaged</non-jta-data-source> 
>         <class>info.toerber.beds.model.Test</class>
> 	</persistence-unit>
> </persistence>
> 
> in one of my session beans i am declaring a datasource like:
> @Resource(name="OracleORCL")
>     DataSource dataSource;
> 
> In standalone for JUnit-Test it seems to be that OpenEJB always takes its
> default Database HSQL.
> Is this correct?
> Is it possible to change this to an Oracle Datasource?
> 
> here is my openejb.xml in META-INF for standalone and in <tomcat>/conf for
> Tomcat deployment:
> <openejb>
> 	<Resource id="OracleORCL" type="DataSource">
>     #  Oracle example
>     #
>     #  This connector will not work until you download the driver at:
>     #  http://otn.oracle.com/software/tech/java/sqlj_jdbc/content.html
>     JdbcDriver  oracle.jdbc.OracleDriver
>     JdbcUrl     jdbc:oracle:thin:@192.168.2.96:1521:ORCL
>     UserName    openejb
>     Password    openejb
> 	JtaManaged true
> </Resource>
> <Resource id="OracleORCLUnmanaged" type="DataSource">
>     #  Oracle example
>     #
>     #  This connector will not work until you download the driver at:
>     #  http://otn.oracle.com/software/tech/java/sqlj_jdbc/content.html
>     JdbcDriver  oracle.jdbc.OracleDriver
>     JdbcUrl     jdbc:oracle:thin:@192.168.2.96:1521:ORCL
>     UserName    openejb
>     Password    openejb
> 	JtaManaged  false
> </Resource>
> </openejb>
> 
> The examples are running in Tomcat, but always on HSQL as i can see with
> 
> if (this.entityManager != null) {
> 				Object delegate = this.entityManager.getDelegate();
> 				if (delegate instanceof HibernateEntityManager) {
> 						HibernateEntityManager hibernateEntityManager =
> (HibernateEntityManager) delegate;
> 						Session s = hibernateEntityManager.getSession();
> 						Connection conn = s.connection();
> 						inspectConnection(conn);
> 
> private void inspectConnection(Connection conn) throws SQLException {
> 		DatabaseMetaData dataBaseMetaData = conn.getMetaData();
> 		// The drivers are included with OpenEJB 3.0 and HSQLDB is the default
> database.
> 		System.out.println(dataBaseMetaData.getDatabaseMajorVersion());
> 		System.out.println(dataBaseMetaData.getDatabaseMinorVersion());
> 		System.out.println(dataBaseMetaData.getDatabaseProductName());
> 		System.out.println(dataBaseMetaData.getDatabaseProductVersion());
> 		System.out.println(dataBaseMetaData.getDefaultTransactionIsolation());
> 		System.out.println(dataBaseMetaData.getDriverMajorVersion());
> 		System.out.println(dataBaseMetaData.getDriverMinorVersion());
> 		System.out.println(dataBaseMetaData.getDriverName());
> 		System.out.println(dataBaseMetaData.getDriverVersion());
> 
> I could change the default Persistence Provider, but it's not running on
> my Oracle Datasource.
> Looked in the documentation and i can see that HSQL is the default
> database. But how and where can i change it always or for a specific
> persistence unit or for a resource in standalone and/or Tomcat?
> 
> Btw. the persistence unit works if i take this in Eclipse JPA Tools:
> persistence.xml:
> <?xml version="1.0" encoding="UTF-8"?>
> <persistence version="1.0" 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">
> 	<!--
> 	only one persistence unit per project by JPA Tools supported
> 	-->
> 	<!--
> 	<persistence-unit name="JPATestProject">
> 	</persistence-unit>
> 	-->
> 	<persistence-unit name="beds_pu" transaction-type="RESOURCE_LOCAL">
>       <provider>org.hibernate.ejb.HibernatePersistence</provider>
>       <!-- use persistence.xml right mouse Synchronize classes to get
> actual list -->
>       <class>info.toerber.beds.model.Test</class>
>       <properties>
>          <property name="hibernate.dialect"
> value="org.hibernate.dialect.Oracle10gDialect"/>
>          <property name="hibernate.connection.driver_class"
> value="oracle.jdbc.OracleDriver"/>
>          <property name="hibernate.connection.username" value="openejb"/>
>          <property name="hibernate.connection.password" value="openejb"/>
>          <property name="hibernate.connection.url"
> value="jdbc:oracle:thin:@192.168.2.96:1521:ORCL"/>
>          <property name="hibernate.max_fetch_depth" value="3"/>
>          <!-- JPA Tools looks for this setting(?), so does not always drop
> the table as announced -->
>          <property name="hibernate.hbm2ddl.auto" value="update" />
>        	 <!--
>          creates table at start and drops at the end!!
>          <property name="hibernate.hbm2ddl.auto" value="create-drop" />
>        	 -->
>          <!-- cache configuration
>          <property
> name="hibernate.ejb.classcache.org.hibernate.ejb.test.Item"
> value="read-write"/>
>          <property
> name="hibernate.ejb.collectioncache.org.hibernate.ejb.test.Item.distributors"
> value="read-write, RegionName"/>
>          -->
> 
>          <!-- alternatively to <class> and <property> declarations, you
> can use a regular hibernate.cfg.xml file -->
>          <!-- property name="hibernate.ejb.cfgfile"
> value="/org/hibernate/ejb/test/hibernate.cfg.xml"/ -->
>       </properties>
>    </persistence-unit>
> </persistence>
> 
> Any help welcome.
> Thanks in advance.
> 
> Jens Toerber
> 

-- 
View this message in context: http://www.nabble.com/OpenEJB-on-Oracle-tp20294024p21952439.html
Sent from the OpenEJB User mailing list archive at Nabble.com.