tomee-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Josef.Eis...@bgs-ag.de
Subject RE: Openejb 3.0 : JUNIT with embedded Container can't commit Transaction
Date Thu, 05 Jun 2008 15:27:18 GMT
One addtitional information:

If code is run inside the Geronimo 2.1.1 App.server, the used 
Entitymanager is: org.apache.geronimo.persistence.CMPEntityManagerTxScoped
If junit runs in embedded openejb the Entitymanager is: 
org.apache.openejb.persistence.JtaEntityManager

Is there a way to change this for embedded openejb?


-----------------------------------------------------------------------------

Hi All,

great Idea to do unit-testing using the embedded functions of openejb. So 
I tried... 

I have a JavaEE-5 application on Geronimo 2.1.1 with Postgres-DB. (Driver 
postgresql-8.2-508.jdbc3.jar). In Geronimo I defined a database pool with 
Pool-Type "TranQL XA Resource Adapter for PostgreSQL". I use Local Session 
Beans in General. The Application works quite well.

Thus I tried to do this with embedded openejb. After quite a few problems 
to set up the system, my JUNIT-Test works up to a certain step. It seems 
there is maybe an impact with the transaction - functionality. The 
transaction could not be comitted. I could imagine not the XA-Datasource 
is taken, but who knows??

openejb.conf:
...
  <SecurityService id="Default Security Service"/>
  <TransactionManager id="Default Transaction Manager"/> 
</openejb>


JUNIT-Testcase:
        public void setUp() throws Exception {
                Properties properties = new Properties();
                properties.setProperty(Context.INITIAL_CONTEXT_FACTORY,
 "org.apache.openejb.client.LocalInitialContextFactory");
 
                properties.put("openejb.home", 
"/home/user/workspace/VesuvUnit/openejb");
 
                properties.put("openejb.configuration", 
                  "/home/user/workspace/VesuvUnit/openejb/openejb.conf");

                ....
 
                properties.put("Postgres.postgres.vesuv", 
"new://Resource?type=DataSource");
                properties.put("Postgres.postgres.vesuv.JdbcDriver", 
"org.postgresql.Driver");
                properties.put("Postgres.postgres.vesuv.JdbcUrl", 
"jdbc:postgresql://localhost/bla");
                properties.put("Postgres.postgres.vesuv.UserName", "bla");
                properties.put("Postgres.postgres.vesuv.Password", "bla");
   ....

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">
        <persistence-unit name="VesuvPU">
                <description>Vesuv Application</description>
 
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
            <jta-data-source>Postgres.postgres.vesuv</jta-data-source>
            <class>
...
                <properties>
                    <property name="openjpa.jdbc.SynchronizeMappings" 
value="false" />
                <property name="openjpa.jdbc.Schema" value="vesuv" />
                </properties>
        </persistence-unit>
</persistence>


Lookup of the SessionBean works. Invoking the method is fine. 
SQL-Statements are done. But 

LOG:
[DEBUG] [BenutzerManagerImpl] >> Mandant: Mandant:Vesuv Servicestelle Id:1 
Kurzname: SS PersonFK:0 Tstaend:null
13:18:31,644 INFO  [Transaction] TX Required: Committing transaction 
org.apache.geronimo.transaction.manager.TransactionImpl@1579371
13:18:31,693 DEBUG [SQL] <t 15431769, conn 0> executing prepstmnt 31310826 
UPDATE vesuv.v_org_einheit 
...
13:18:31,702 DEBUG [SQL] <t 15431769, conn 0> [9 ms] spent
13:18:31,717 DEBUG [SQL] <t 15431769, conn 0> executing prepstmnt 23410971 
UPDATE vesuv.benutzer SET 
...
...
Caused by: <openjpa-1.0.1-r420667:592145 nonfatal store error> 
org.apache.openjpa.util.StoreException: FEHLER: kann eine Sicht nicht 
aktualisieren {prepstmnt 31310826 UPDATE vesuv.v_org_einheit SET 
beziehung_org_einheit_typ = ?, kurz_name = ?, name = ?, org_einheit_typ = 
?, person_fk = ?, rechtsform = ?, tstaend = ?, beziehung_org_einheit_fk = 
?, uebergeordnete_org_einheit_fk = ? WHERE id = ? [params=(null) null, 
(String) SS, (String) Vesuv Servicestelle, (String) SS, (long) 1, (String) 
SS, (Timestamp) 2008-05-26 10:10:43.96, (null) null, (null) null, (long) 
1]} [code=0, state=0A000]
FailedObject: 
...

The LOG-File is in German, therefore some translation: Sicht = View. The 
Update of the View-PAO does not work. Any suggestions ??? 

Thanx Josef
BGS Beratungsgesellschaft 
Software Systemplanung AG 
  
  
  
  
Niederlassung Rhein/Main 
Robert-Koch-Straße 41 
55129 Mainz 
Fon: +49 (0) 6131 / 914-0 
Fax: +49 (0) 6131 / 914-400 
www.bgs-ag.de 
Geschäftssitz Mainz 
Registergericht 
Amtsgericht Mainz 
HRB 62 50 
  
Aufsichtsratsvorsitzender 
Dr. Wolfgang Trommer 
Vorstand 
Hanspeter Gau 
Hermann Kiefer 
Nils Manegold 
Heinz-Jörg Zimmermann 


  
Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message