Hi, can you try removing java: in persistence.xml?
- Romain 2012/6/27 Stevo Slavić <ssla...@gmail.com> > Hello OpenEJB community, > > I'm migrating a legacy system to Java EE 6 and JBoss AS 7.1.1 > With the upgrade came "updated" JBoss AS 7.1.1 provided CXF version > (2.4.6). This broke and revealed all yet rare openejb tests. Then I > upgraded openejb too, from 3.1.4 to 4.0.0 but not all tests are passing. > To be more specific there is 1 passing, and 2 failing tests, all in same > module using shared jndi.properties, persistence.xml, and ejb-jar.xml > In jndi.properties (see [1]) two data sources are configured for openejb to > create. > In persistence.xml there are two persistence units. Each PU references a > single data source. > > Test that passes, has EntityManager instance injected > (@PersistenceContext(name="a_bar", unitName="a_bar" )) and successfully > executes queries, like select on Entity2. > Tests that fail, fail late, when createQuery is issued on other injected > EntityManager instance (@PersistenceContext(name="a_foo", > unitName="a_foo")) - HSLQDB reports "user lacks privilege or object not > found: PUBLIC.ENTITY2 {stmnt 1836093446 ALTER TABLE ENTITY2 ADD COLUMN ID > NUMERIC} [code=-5501, state=42501]" > > There seems to be an issue with schema creation. To fail earlier, I > uncomment configuring openjpa.InitializeEagerly to true. > > Then in openejb log output I noticed openejb is doing some unwanted stuff > with data sources (see [3]), associating wrong data sources with > persistence units, and creating non-jta data sources which aren't > needed/referenced. > > It smells to me that some openejb convention is not followed well. Maybe > it's just HSQLDB configuration (2.2.4 is referenced by openejb, but I also > tried with 2.2.8). > > I did my "homework", found lots of entries online about "user lacks > privilege or object not found" and configuring openejb, but neither of them > helped. > > Does anyone see what could be wrong here? > > I'd like to preserve persistence.xml as-is, while jndi.properties can be > changed or even replaced entirely with openejb.xml if needed. > > Kind regards, > Stevo Slavić. > > > [1] jndi.properties > > > java.naming.factory.initial=org.apache.openejb.client.LocalInitialContextFactory > openejb.embedded.remotable=true > openejb.altdd.prefix=test. > > jdbc/acme_foo=new://Resource?type=DataSource > jdbc/acme_foo.JdbcUrl=jdbc:hsqldb:mem:acme_foo > jdbc/acme_foo.JdbcDriver=org.hsqldb.jdbcDriver > jdbc/acme_foo.Username=sa > jdbc/acme_foo.Password= > jdbc/acme_foo.JtaManaged=true > > jdbc/acme_bar=new://Resource?type=DataSource > jdbc/acme_bar.JdbcUrl=jdbc:hsqldb:mem:acme_bar > jdbc/acme_bar.JdbcDriver=org.hsqldb.jdbcDriver > jdbc/acme_bar.Username=sa > jdbc/acme_bar.Password= > jdbc/acme_bar.JtaManaged=true > > > [2] persistence.xml > > <?xml version="1.0" encoding="UTF-8"?> > <persistence version="2.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_2_0.xsd"> > > <persistence-unit name="a_foo" transaction-type="JTA"> > <jta-data-source>java:jdbc/acme_foo</jta-data-source> > > <class>a.foo.model.Entity1</class> > <exclude-unlisted-classes>true</exclude-unlisted-classes> > > <properties> > <property name="hibernate.dialect" > value="org.hibernate.dialect.Oracle10gDialect"/> > <property name="hibernate.show_sql" value="true"/> > <property name="hibernate.transaction.manager_lookup_class" > > value="org.hibernate.transaction.JBossTransactionManagerLookup"/> > > <property name="openjpa.jdbc.SynchronizeMappings" > value="buildSchema(ForeignKeys=true)"/> > <!-- > <property name="openjpa.InitializeEagerly" value="true"/> > --> > </properties> > </persistence-unit> > > <persistence-unit name="a_bar" transaction-type="JTA"> > <jta-data-source>java:jdbc/acme_bar</jta-data-source> > > <class>a.bar.model.Entity2</class> > <exclude-unlisted-classes>true</exclude-unlisted-classes> > > <properties> > <property name="hibernate.dialect" > value="org.hibernate.dialect.Oracle10gDialect"/> > <property name="hibernate.show_sql" value="true"/> > <property name="hibernate.transaction.manager_lookup_class" > > value="org.hibernate.transaction.JBossTransactionManagerLookup"/> > > <property name="openjpa.jdbc.SynchronizeMappings" > value="buildSchema(ForeignKeys=true)"/> > <!-- > <property name="openjpa.InitializeEagerly" value="true"/> > --> > </properties> > </persistence-unit> > </persistence> > > > [3] openejb container startup log fragment > > 11:50:07.459 [main] INFO OpenEJB.startup.config - Configuring > PersistenceUnit(name=a_foo) > 11:50:07.462 [main] INFO OpenEJB.startup.config - Auto-creating a Resource > with id 'jdbc/acme_barNonJta' of type 'DataSource for 'a_foo'. > 11:50:07.462 [main] INFO OpenEJB.startup.config - Configuring > Service(id=jdbc/acme_barNonJta, type=Resource, provider-id=jdbc/acme_bar) > 11:50:07.462 [main] INFO OpenEJB.startup.config - Adjusting > PersistenceUnit a_foo <jta-data-source> to Resource ID 'jdbc/acme_bar' from > 'java:jdbc/acme_foo' > 11:50:07.462 [main] INFO OpenEJB.startup.config - Adjusting > PersistenceUnit a_foo <non-jta-data-source> to Resource ID > 'jdbc/acme_barNonJta' from 'null' > 11:50:07.462 [main] INFO OpenEJB.startup.config - Configuring > PersistenceUnit(name=a_bar) > 11:50:07.463 [main] INFO OpenEJB.startup.config - Adjusting > PersistenceUnit a_bar <jta-data-source> to Resource ID 'jdbc/acme_bar' from > 'java:jdbc/acme_bar' > 11:50:07.463 [main] INFO OpenEJB.startup.config - Adjusting > PersistenceUnit a_bar <non-jta-data-source> to Resource ID > 'jdbc/acme_barNonJta' from 'null' >