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'
>

Reply via email to