You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@aries.apache.org by Charles Moulliard <cm...@gmail.com> on 2011/10/25 08:56:09 UTC

Issue with Aries JPA

Hi,

The following config

Datasource

<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
          xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0">

   <cm:property-placeholder persistent-id="database" id="database">
       <cm:default-properties>

           <!-- JDBC Drivers -->
           <cm:property name="jdbc.driverClassName" value="org.h2.Driver"/>
           <cm:property name="jdbc.url"
value="jdbc:h2:tcp://localhost/~/reportdb"/>
           <cm:property name="jdbc.username" value="sa"/>
           <cm:property name="jdbc.password" value=""/>

           <!-- Connection Pooling DBCP -->
           <cm:property name="jdbc.initialSize" value="5"/>
           <cm:property name="jdbc.maxActive" value="10"/>
           <cm:property name="jdbc.maxIdle" value="10"/>
           <cm:property name="jdbc.defaultAutoCommit" value="false"/>
           <cm:property name="jdbc.removeAbandoned" value="false"/>
           <cm:property name="jdbc.removeAbandonedTimeout" value="300"/>
           <cm:property name="jdbc.logAbandoned" value="false"/>

       </cm:default-properties>
   </cm:property-placeholder>

    <!--
    <bean id="reportdb"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
        <property name="driverClassName" value="org.h2.Driver"/>
        <property name="url" value="jdbc:h2:tcp://localhost/~/reportdb"/>
        <property name="username" value="sa"/>
        <property name="password" value=""/>
    </bean>

    <service ref="reportdb" interface="javax.sql.DataSource">
        <service-properties>
            <entry key="osgi.jndi.service.name" value="jdbc/reportincidentdb"/>
        </service-properties>
    </service>
    -->


    <service auto-export="interfaces" ref="jta">
        <service-properties>
            <entry key="osgi.jndi.service.name"
value="jdbc/reportincidentdbXA"/>
        </service-properties>
    </service>

    <service auto-export="interfaces" ref="nonJTA">
        <service-properties>
            <entry key="osgi.jndi.service.name" value="jdbc/reportincidentdb"/>
        </service-properties>
    </service>

    <!-- ###### JDBC Data Source ###### -->
    <bean id="jta" class="org.enhydra.jdbc.standard.StandardXADataSource">
        <property name="driverName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="user" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

    <bean class="org.apache.commons.dbcp.BasicDataSource" id="nonJTA">
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        <property name="initialSize" value="${jdbc.initialSize}"/>
        <property name="maxActive" value="${jdbc.maxActive}"/>
        <property name="maxIdle" value="${jdbc.maxIdle}"/>
        <property name="defaultAutoCommit" value="false"/>
        <property name="removeAbandoned" value="${jdbc.removeAbandoned}"/>
        <property name="removeAbandonedTimeout"
                  value="${jdbc.removeAbandonedTimeout}"/>
        <property name="logAbandoned" value="${jdbc.logAbandoned}"/>
    </bean>

</blueprint>

Persistence

<?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/persistence_2_0.xsd"
             version="2.0">

    <persistence-unit name="reportincident" transaction-type="JTA">

        <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
        <jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/reportincidentdbXA)</jta-data-source>
        <non-jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/reportincidentdb)</non-jta-data-source>


generates this error in the log:

Caused by: java.lang.ClassCastException: $Proxy65 cannot be cast to
javax.sql.DataSource
	at org.apache.aries.jpa.container.unit.impl.DelayedLookupDataSource.getDs(DelayedLookupDataSource.java:55)
	at org.apache.aries.jpa.container.unit.impl.DelayedLookupDataSource.getConnection(DelayedLookupDataSource.java:74)
	at org.apache.openjpa.lib.jdbc.DelegatingDataSource.getConnection(DelegatingDataSource.java:137)
	at org.apache.openjpa.lib.jdbc.DecoratingDataSource.getConnection(DecoratingDataSource.java:112)
	at org.apache.openjpa.jdbc.schema.DataSourceFactory.installDBDictionary(DataSourceFactory.java:239)
	... 115 more

	at org.apache.openjpa.lib.conf.ConfigurationImpl.instantiateAll(ConfigurationImpl.java:309)
	at org.apache.openjpa.conf.OpenJPAConfigurationImpl.instantiateAll(OpenJPAConfigurationImpl.java:1652)
	at org.apache.openjpa.kernel.AbstractBrokerFactory.makeReadOnly(AbstractBrokerFactory.java:645)
	at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:204)

Regards,

Charles Moulliard

Apache Committer

Blog : http://cmoulliard.blogspot.com
Twitter : http://twitter.com/cmoulliard
Linkedin : http://www.linkedin.com/in/charlesmoulliard
Skype: cmoulliard

Re: Issue with Aries JPA

Posted by Charles Moulliard <cm...@gmail.com>.
The following config does not work

Caused by: java.lang.ClassCastException: $Proxy58 cannot be cast to
javax.sql.DataSource
	at org.apache.aries.jpa.container.unit.impl.DelayedLookupDataSource.getDs(DelayedLookupDataSource.java:55)
	at org.apache.aries.jpa.container.unit.impl.DelayedLookupDataSource.getConnection(DelayedLookupDataSource.java:74)
	at org.apache.openjpa.lib.jdbc.DelegatingDataSource.getConnection(DelegatingDataSource.java:137)
	at org.apache.openjpa.lib.jdbc.DecoratingDataSource.getConnection(DecoratingDataSource.java:112)
	at org.apache.openjpa.jdbc.schema.DataSourceFactory.installDBDictionary(DataSourceFactory.java:239)
	... 115 more

	at org.apache.openjpa.lib.conf.ConfigurationImpl.instantiateAll(ConfigurationImpl.java:309)
	at org.apache.openjpa.conf.OpenJPAConfigurationImpl.instantiateAll(OpenJPAConfigurationImpl.java:1652)
	at org.apache.openjpa.kernel.AbstractBrokerFactory.makeReadOnly(AbstractBrokerFactory.java:645)
	at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:204)
	... 106 more


    <persistence-unit name="reportincident" transaction-type="JTA">

        <jta-data-source>osgi:service/javax.sql.XADataSource</jta-data-source>
        <non-jta-data-source>osgi:service/javax.sql.DataSource</non-jta-data-source>

and

    <service interface="javax.sql.XADataSource" ref="xaDataSource">
        <service-properties>
            <entry key="datasource" value="reportincidentdbXA"/>
        </service-properties>
    </service>

    <service interface="javax.sql.DataSource" ref="dataSource">
        <service-properties>
            <entry key="datasource" value="reportincidentdb"/>
        </service-properties>
    </service>

On Tue, Oct 25, 2011 at 5:38 PM, Charles Moulliard <cm...@gmail.com> wrote:
> If you mean by Aries Proxy, the following bundle, then the response is yes
>
> [   8] [Active     ] [            ] [       ] [   20] Apache Aries
> Proxy Bundle (0.3.0)
>
> What do you mean by "You can use the BP component lookup" ?
>
>
> On Tue, Oct 25, 2011 at 5:34 PM, Johan Edstrom <se...@gmail.com> wrote:
>> You can use the BP component lookup and use it as a service.
>> Do you have aries proxy happily installed?
>>
>> On Oct 25, 2011, at 9:27 AM, Charles Moulliard wrote:
>>
>>> I will make a new test but I don't think that declaring
>>> interface="javax.sql.DataSource" or "javax.sql.XaDatasource" solves
>>> the issue.
>>>
>>> What should I do to by pass jndi ? Do we have a example in Aries ?
>>>
>>> On Tue, Oct 25, 2011 at 1:24 PM, Timothy Ward <ti...@apache.org> wrote:
>>>>
>>>> Hi,
>>>>
>>>> What interfaces are actually registered by your auto-export="interfaces" setting? It feels like it would be safer to simply register javax.sql.DataSource or javax.sql.XADataSource as appropriate? I also don't know how the JNDI code copes with multiple interfaces. It's possible the answer is not well.
>>>>
>>>> Regards,
>>>>
>>>> Tim
>>>>
>>>>> Date: Tue, 25 Oct 2011 08:56:09 +0200
>>>>> Subject: Issue with Aries JPA
>>>>> From: cmoulliard@gmail.com
>>>>> To: dev@aries.apache.org
>>>>>
>>>>> Hi,
>>>>>
>>>>> The following config
>>>>>
>>>>> Datasource
>>>>>
>>>>> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
>>>>>           xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0">
>>>>>
>>>>>    <cm:property-placeholder persistent-id="database" id="database">
>>>>>        <cm:default-properties>
>>>>>
>>>>>            <!-- JDBC Drivers -->
>>>>>            <cm:property name="jdbc.driverClassName" value="org.h2.Driver"/>
>>>>>            <cm:property name="jdbc.url"
>>>>> value="jdbc:h2:tcp://localhost/~/reportdb"/>
>>>>>            <cm:property name="jdbc.username" value="sa"/>
>>>>>            <cm:property name="jdbc.password" value=""/>
>>>>>
>>>>>            <!-- Connection Pooling DBCP -->
>>>>>            <cm:property name="jdbc.initialSize" value="5"/>
>>>>>            <cm:property name="jdbc.maxActive" value="10"/>
>>>>>            <cm:property name="jdbc.maxIdle" value="10"/>
>>>>>            <cm:property name="jdbc.defaultAutoCommit" value="false"/>
>>>>>            <cm:property name="jdbc.removeAbandoned" value="false"/>
>>>>>            <cm:property name="jdbc.removeAbandonedTimeout" value="300"/>
>>>>>            <cm:property name="jdbc.logAbandoned" value="false"/>
>>>>>
>>>>>        </cm:default-properties>
>>>>>    </cm:property-placeholder>
>>>>>
>>>>>     <!--
>>>>>     <bean id="reportdb"
>>>>> class="org.apache.commons.dbcp.BasicDataSource"
>>>>> destroy-method="close">
>>>>>         <property name="driverClassName" value="org.h2.Driver"/>
>>>>>         <property name="url" value="jdbc:h2:tcp://localhost/~/reportdb"/>
>>>>>         <property name="username" value="sa"/>
>>>>>         <property name="password" value=""/>
>>>>>     </bean>
>>>>>
>>>>>     <service ref="reportdb" interface="javax.sql.DataSource">
>>>>>         <service-properties>
>>>>>             <entry key="osgi.jndi.service.name" value="jdbc/reportincidentdb"/>
>>>>>         </service-properties>
>>>>>     </service>
>>>>>     -->
>>>>>
>>>>>
>>>>>     <service auto-export="interfaces" ref="jta">
>>>>>         <service-properties>
>>>>>             <entry key="osgi.jndi.service.name"
>>>>> value="jdbc/reportincidentdbXA"/>
>>>>>         </service-properties>
>>>>>     </service>
>>>>>
>>>>>     <service auto-export="interfaces" ref="nonJTA">
>>>>>         <service-properties>
>>>>>             <entry key="osgi.jndi.service.name" value="jdbc/reportincidentdb"/>
>>>>>         </service-properties>
>>>>>     </service>
>>>>>
>>>>>     <!-- ###### JDBC Data Source ###### -->
>>>>>     <bean id="jta" class="org.enhydra.jdbc.standard.StandardXADataSource">
>>>>>         <property name="driverName" value="${jdbc.driverClassName}"/>
>>>>>         <property name="url" value="${jdbc.url}"/>
>>>>>         <property name="user" value="${jdbc.username}"/>
>>>>>         <property name="password" value="${jdbc.password}"/>
>>>>>     </bean>
>>>>>
>>>>>     <bean class="org.apache.commons.dbcp.BasicDataSource" id="nonJTA">
>>>>>         <property name="driverClassName" value="${jdbc.driverClassName}"/>
>>>>>         <property name="url" value="${jdbc.url}"/>
>>>>>         <property name="username" value="${jdbc.username}"/>
>>>>>         <property name="password" value="${jdbc.password}"/>
>>>>>         <property name="initialSize" value="${jdbc.initialSize}"/>
>>>>>         <property name="maxActive" value="${jdbc.maxActive}"/>
>>>>>         <property name="maxIdle" value="${jdbc.maxIdle}"/>
>>>>>         <property name="defaultAutoCommit" value="false"/>
>>>>>         <property name="removeAbandoned" value="${jdbc.removeAbandoned}"/>
>>>>>         <property name="removeAbandonedTimeout"
>>>>>                   value="${jdbc.removeAbandonedTimeout}"/>
>>>>>         <property name="logAbandoned" value="${jdbc.logAbandoned}"/>
>>>>>     </bean>
>>>>>
>>>>> </blueprint>
>>>>>
>>>>> Persistence
>>>>>
>>>>> <?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/persistence_2_0.xsd"
>>>>>              version="2.0">
>>>>>
>>>>>     <persistence-unit name="reportincident" transaction-type="JTA">
>>>>>
>>>>>         <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
>>>>>         <jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/reportincidentdbXA)</jta-data-source>
>>>>>         <non-jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/reportincidentdb)</non-jta-data-source>
>>>>>
>>>>>
>>>>> generates this error in the log:
>>>>>
>>>>> Caused by: java.lang.ClassCastException: $Proxy65 cannot be cast to
>>>>> javax.sql.DataSource
>>>>>       at org.apache.aries.jpa.container.unit.impl.DelayedLookupDataSource.getDs(DelayedLookupDataSource.java:55)
>>>>>       at org.apache.aries.jpa.container.unit.impl.DelayedLookupDataSource.getConnection(DelayedLookupDataSource.java:74)
>>>>>       at org.apache.openjpa.lib.jdbc.DelegatingDataSource.getConnection(DelegatingDataSource.java:137)
>>>>>       at org.apache.openjpa.lib.jdbc.DecoratingDataSource.getConnection(DecoratingDataSource.java:112)
>>>>>       at org.apache.openjpa.jdbc.schema.DataSourceFactory.installDBDictionary(DataSourceFactory.java:239)
>>>>>       ... 115 more
>>>>>
>>>>>       at org.apache.openjpa.lib.conf.ConfigurationImpl.instantiateAll(ConfigurationImpl.java:309)
>>>>>       at org.apache.openjpa.conf.OpenJPAConfigurationImpl.instantiateAll(OpenJPAConfigurationImpl.java:1652)
>>>>>       at org.apache.openjpa.kernel.AbstractBrokerFactory.makeReadOnly(AbstractBrokerFactory.java:645)
>>>>>       at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:204)
>>>>>
>>>>> Regards,
>>>>>
>>>>> Charles Moulliard
>>>>>
>>>>> Apache Committer
>>>>>
>>>>> Blog : http://cmoulliard.blogspot.com
>>>>> Twitter : http://twitter.com/cmoulliard
>>>>> Linkedin : http://www.linkedin.com/in/charlesmoulliard
>>>>> Skype: cmoulliard
>>>>
>>
>>
>

Re: Issue with Aries JPA

Posted by Charles Moulliard <cm...@gmail.com>.
If you mean by Aries Proxy, the following bundle, then the response is yes

[   8] [Active     ] [            ] [       ] [   20] Apache Aries
Proxy Bundle (0.3.0)

What do you mean by "You can use the BP component lookup" ?


On Tue, Oct 25, 2011 at 5:34 PM, Johan Edstrom <se...@gmail.com> wrote:
> You can use the BP component lookup and use it as a service.
> Do you have aries proxy happily installed?
>
> On Oct 25, 2011, at 9:27 AM, Charles Moulliard wrote:
>
>> I will make a new test but I don't think that declaring
>> interface="javax.sql.DataSource" or "javax.sql.XaDatasource" solves
>> the issue.
>>
>> What should I do to by pass jndi ? Do we have a example in Aries ?
>>
>> On Tue, Oct 25, 2011 at 1:24 PM, Timothy Ward <ti...@apache.org> wrote:
>>>
>>> Hi,
>>>
>>> What interfaces are actually registered by your auto-export="interfaces" setting? It feels like it would be safer to simply register javax.sql.DataSource or javax.sql.XADataSource as appropriate? I also don't know how the JNDI code copes with multiple interfaces. It's possible the answer is not well.
>>>
>>> Regards,
>>>
>>> Tim
>>>
>>>> Date: Tue, 25 Oct 2011 08:56:09 +0200
>>>> Subject: Issue with Aries JPA
>>>> From: cmoulliard@gmail.com
>>>> To: dev@aries.apache.org
>>>>
>>>> Hi,
>>>>
>>>> The following config
>>>>
>>>> Datasource
>>>>
>>>> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
>>>>           xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0">
>>>>
>>>>    <cm:property-placeholder persistent-id="database" id="database">
>>>>        <cm:default-properties>
>>>>
>>>>            <!-- JDBC Drivers -->
>>>>            <cm:property name="jdbc.driverClassName" value="org.h2.Driver"/>
>>>>            <cm:property name="jdbc.url"
>>>> value="jdbc:h2:tcp://localhost/~/reportdb"/>
>>>>            <cm:property name="jdbc.username" value="sa"/>
>>>>            <cm:property name="jdbc.password" value=""/>
>>>>
>>>>            <!-- Connection Pooling DBCP -->
>>>>            <cm:property name="jdbc.initialSize" value="5"/>
>>>>            <cm:property name="jdbc.maxActive" value="10"/>
>>>>            <cm:property name="jdbc.maxIdle" value="10"/>
>>>>            <cm:property name="jdbc.defaultAutoCommit" value="false"/>
>>>>            <cm:property name="jdbc.removeAbandoned" value="false"/>
>>>>            <cm:property name="jdbc.removeAbandonedTimeout" value="300"/>
>>>>            <cm:property name="jdbc.logAbandoned" value="false"/>
>>>>
>>>>        </cm:default-properties>
>>>>    </cm:property-placeholder>
>>>>
>>>>     <!--
>>>>     <bean id="reportdb"
>>>> class="org.apache.commons.dbcp.BasicDataSource"
>>>> destroy-method="close">
>>>>         <property name="driverClassName" value="org.h2.Driver"/>
>>>>         <property name="url" value="jdbc:h2:tcp://localhost/~/reportdb"/>
>>>>         <property name="username" value="sa"/>
>>>>         <property name="password" value=""/>
>>>>     </bean>
>>>>
>>>>     <service ref="reportdb" interface="javax.sql.DataSource">
>>>>         <service-properties>
>>>>             <entry key="osgi.jndi.service.name" value="jdbc/reportincidentdb"/>
>>>>         </service-properties>
>>>>     </service>
>>>>     -->
>>>>
>>>>
>>>>     <service auto-export="interfaces" ref="jta">
>>>>         <service-properties>
>>>>             <entry key="osgi.jndi.service.name"
>>>> value="jdbc/reportincidentdbXA"/>
>>>>         </service-properties>
>>>>     </service>
>>>>
>>>>     <service auto-export="interfaces" ref="nonJTA">
>>>>         <service-properties>
>>>>             <entry key="osgi.jndi.service.name" value="jdbc/reportincidentdb"/>
>>>>         </service-properties>
>>>>     </service>
>>>>
>>>>     <!-- ###### JDBC Data Source ###### -->
>>>>     <bean id="jta" class="org.enhydra.jdbc.standard.StandardXADataSource">
>>>>         <property name="driverName" value="${jdbc.driverClassName}"/>
>>>>         <property name="url" value="${jdbc.url}"/>
>>>>         <property name="user" value="${jdbc.username}"/>
>>>>         <property name="password" value="${jdbc.password}"/>
>>>>     </bean>
>>>>
>>>>     <bean class="org.apache.commons.dbcp.BasicDataSource" id="nonJTA">
>>>>         <property name="driverClassName" value="${jdbc.driverClassName}"/>
>>>>         <property name="url" value="${jdbc.url}"/>
>>>>         <property name="username" value="${jdbc.username}"/>
>>>>         <property name="password" value="${jdbc.password}"/>
>>>>         <property name="initialSize" value="${jdbc.initialSize}"/>
>>>>         <property name="maxActive" value="${jdbc.maxActive}"/>
>>>>         <property name="maxIdle" value="${jdbc.maxIdle}"/>
>>>>         <property name="defaultAutoCommit" value="false"/>
>>>>         <property name="removeAbandoned" value="${jdbc.removeAbandoned}"/>
>>>>         <property name="removeAbandonedTimeout"
>>>>                   value="${jdbc.removeAbandonedTimeout}"/>
>>>>         <property name="logAbandoned" value="${jdbc.logAbandoned}"/>
>>>>     </bean>
>>>>
>>>> </blueprint>
>>>>
>>>> Persistence
>>>>
>>>> <?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/persistence_2_0.xsd"
>>>>              version="2.0">
>>>>
>>>>     <persistence-unit name="reportincident" transaction-type="JTA">
>>>>
>>>>         <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
>>>>         <jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/reportincidentdbXA)</jta-data-source>
>>>>         <non-jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/reportincidentdb)</non-jta-data-source>
>>>>
>>>>
>>>> generates this error in the log:
>>>>
>>>> Caused by: java.lang.ClassCastException: $Proxy65 cannot be cast to
>>>> javax.sql.DataSource
>>>>       at org.apache.aries.jpa.container.unit.impl.DelayedLookupDataSource.getDs(DelayedLookupDataSource.java:55)
>>>>       at org.apache.aries.jpa.container.unit.impl.DelayedLookupDataSource.getConnection(DelayedLookupDataSource.java:74)
>>>>       at org.apache.openjpa.lib.jdbc.DelegatingDataSource.getConnection(DelegatingDataSource.java:137)
>>>>       at org.apache.openjpa.lib.jdbc.DecoratingDataSource.getConnection(DecoratingDataSource.java:112)
>>>>       at org.apache.openjpa.jdbc.schema.DataSourceFactory.installDBDictionary(DataSourceFactory.java:239)
>>>>       ... 115 more
>>>>
>>>>       at org.apache.openjpa.lib.conf.ConfigurationImpl.instantiateAll(ConfigurationImpl.java:309)
>>>>       at org.apache.openjpa.conf.OpenJPAConfigurationImpl.instantiateAll(OpenJPAConfigurationImpl.java:1652)
>>>>       at org.apache.openjpa.kernel.AbstractBrokerFactory.makeReadOnly(AbstractBrokerFactory.java:645)
>>>>       at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:204)
>>>>
>>>> Regards,
>>>>
>>>> Charles Moulliard
>>>>
>>>> Apache Committer
>>>>
>>>> Blog : http://cmoulliard.blogspot.com
>>>> Twitter : http://twitter.com/cmoulliard
>>>> Linkedin : http://www.linkedin.com/in/charlesmoulliard
>>>> Skype: cmoulliard
>>>
>
>

Re: Issue with Aries JPA

Posted by Johan Edstrom <se...@gmail.com>.
You can use the BP component lookup and use it as a service.
Do you have aries proxy happily installed?

On Oct 25, 2011, at 9:27 AM, Charles Moulliard wrote:

> I will make a new test but I don't think that declaring
> interface="javax.sql.DataSource" or "javax.sql.XaDatasource" solves
> the issue.
> 
> What should I do to by pass jndi ? Do we have a example in Aries ?
> 
> On Tue, Oct 25, 2011 at 1:24 PM, Timothy Ward <ti...@apache.org> wrote:
>> 
>> Hi,
>> 
>> What interfaces are actually registered by your auto-export="interfaces" setting? It feels like it would be safer to simply register javax.sql.DataSource or javax.sql.XADataSource as appropriate? I also don't know how the JNDI code copes with multiple interfaces. It's possible the answer is not well.
>> 
>> Regards,
>> 
>> Tim
>> 
>>> Date: Tue, 25 Oct 2011 08:56:09 +0200
>>> Subject: Issue with Aries JPA
>>> From: cmoulliard@gmail.com
>>> To: dev@aries.apache.org
>>> 
>>> Hi,
>>> 
>>> The following config
>>> 
>>> Datasource
>>> 
>>> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
>>>           xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0">
>>> 
>>>    <cm:property-placeholder persistent-id="database" id="database">
>>>        <cm:default-properties>
>>> 
>>>            <!-- JDBC Drivers -->
>>>            <cm:property name="jdbc.driverClassName" value="org.h2.Driver"/>
>>>            <cm:property name="jdbc.url"
>>> value="jdbc:h2:tcp://localhost/~/reportdb"/>
>>>            <cm:property name="jdbc.username" value="sa"/>
>>>            <cm:property name="jdbc.password" value=""/>
>>> 
>>>            <!-- Connection Pooling DBCP -->
>>>            <cm:property name="jdbc.initialSize" value="5"/>
>>>            <cm:property name="jdbc.maxActive" value="10"/>
>>>            <cm:property name="jdbc.maxIdle" value="10"/>
>>>            <cm:property name="jdbc.defaultAutoCommit" value="false"/>
>>>            <cm:property name="jdbc.removeAbandoned" value="false"/>
>>>            <cm:property name="jdbc.removeAbandonedTimeout" value="300"/>
>>>            <cm:property name="jdbc.logAbandoned" value="false"/>
>>> 
>>>        </cm:default-properties>
>>>    </cm:property-placeholder>
>>> 
>>>     <!--
>>>     <bean id="reportdb"
>>> class="org.apache.commons.dbcp.BasicDataSource"
>>> destroy-method="close">
>>>         <property name="driverClassName" value="org.h2.Driver"/>
>>>         <property name="url" value="jdbc:h2:tcp://localhost/~/reportdb"/>
>>>         <property name="username" value="sa"/>
>>>         <property name="password" value=""/>
>>>     </bean>
>>> 
>>>     <service ref="reportdb" interface="javax.sql.DataSource">
>>>         <service-properties>
>>>             <entry key="osgi.jndi.service.name" value="jdbc/reportincidentdb"/>
>>>         </service-properties>
>>>     </service>
>>>     -->
>>> 
>>> 
>>>     <service auto-export="interfaces" ref="jta">
>>>         <service-properties>
>>>             <entry key="osgi.jndi.service.name"
>>> value="jdbc/reportincidentdbXA"/>
>>>         </service-properties>
>>>     </service>
>>> 
>>>     <service auto-export="interfaces" ref="nonJTA">
>>>         <service-properties>
>>>             <entry key="osgi.jndi.service.name" value="jdbc/reportincidentdb"/>
>>>         </service-properties>
>>>     </service>
>>> 
>>>     <!-- ###### JDBC Data Source ###### -->
>>>     <bean id="jta" class="org.enhydra.jdbc.standard.StandardXADataSource">
>>>         <property name="driverName" value="${jdbc.driverClassName}"/>
>>>         <property name="url" value="${jdbc.url}"/>
>>>         <property name="user" value="${jdbc.username}"/>
>>>         <property name="password" value="${jdbc.password}"/>
>>>     </bean>
>>> 
>>>     <bean class="org.apache.commons.dbcp.BasicDataSource" id="nonJTA">
>>>         <property name="driverClassName" value="${jdbc.driverClassName}"/>
>>>         <property name="url" value="${jdbc.url}"/>
>>>         <property name="username" value="${jdbc.username}"/>
>>>         <property name="password" value="${jdbc.password}"/>
>>>         <property name="initialSize" value="${jdbc.initialSize}"/>
>>>         <property name="maxActive" value="${jdbc.maxActive}"/>
>>>         <property name="maxIdle" value="${jdbc.maxIdle}"/>
>>>         <property name="defaultAutoCommit" value="false"/>
>>>         <property name="removeAbandoned" value="${jdbc.removeAbandoned}"/>
>>>         <property name="removeAbandonedTimeout"
>>>                   value="${jdbc.removeAbandonedTimeout}"/>
>>>         <property name="logAbandoned" value="${jdbc.logAbandoned}"/>
>>>     </bean>
>>> 
>>> </blueprint>
>>> 
>>> Persistence
>>> 
>>> <?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/persistence_2_0.xsd"
>>>              version="2.0">
>>> 
>>>     <persistence-unit name="reportincident" transaction-type="JTA">
>>> 
>>>         <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
>>>         <jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/reportincidentdbXA)</jta-data-source>
>>>         <non-jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/reportincidentdb)</non-jta-data-source>
>>> 
>>> 
>>> generates this error in the log:
>>> 
>>> Caused by: java.lang.ClassCastException: $Proxy65 cannot be cast to
>>> javax.sql.DataSource
>>>       at org.apache.aries.jpa.container.unit.impl.DelayedLookupDataSource.getDs(DelayedLookupDataSource.java:55)
>>>       at org.apache.aries.jpa.container.unit.impl.DelayedLookupDataSource.getConnection(DelayedLookupDataSource.java:74)
>>>       at org.apache.openjpa.lib.jdbc.DelegatingDataSource.getConnection(DelegatingDataSource.java:137)
>>>       at org.apache.openjpa.lib.jdbc.DecoratingDataSource.getConnection(DecoratingDataSource.java:112)
>>>       at org.apache.openjpa.jdbc.schema.DataSourceFactory.installDBDictionary(DataSourceFactory.java:239)
>>>       ... 115 more
>>> 
>>>       at org.apache.openjpa.lib.conf.ConfigurationImpl.instantiateAll(ConfigurationImpl.java:309)
>>>       at org.apache.openjpa.conf.OpenJPAConfigurationImpl.instantiateAll(OpenJPAConfigurationImpl.java:1652)
>>>       at org.apache.openjpa.kernel.AbstractBrokerFactory.makeReadOnly(AbstractBrokerFactory.java:645)
>>>       at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:204)
>>> 
>>> Regards,
>>> 
>>> Charles Moulliard
>>> 
>>> Apache Committer
>>> 
>>> Blog : http://cmoulliard.blogspot.com
>>> Twitter : http://twitter.com/cmoulliard
>>> Linkedin : http://www.linkedin.com/in/charlesmoulliard
>>> Skype: cmoulliard
>> 


Re: Issue with Aries JPA

Posted by Charles Moulliard <cm...@gmail.com>.
I will make a new test but I don't think that declaring
interface="javax.sql.DataSource" or "javax.sql.XaDatasource" solves
the issue.

What should I do to by pass jndi ? Do we have a example in Aries ?

On Tue, Oct 25, 2011 at 1:24 PM, Timothy Ward <ti...@apache.org> wrote:
>
> Hi,
>
> What interfaces are actually registered by your auto-export="interfaces" setting? It feels like it would be safer to simply register javax.sql.DataSource or javax.sql.XADataSource as appropriate? I also don't know how the JNDI code copes with multiple interfaces. It's possible the answer is not well.
>
> Regards,
>
> Tim
>
>> Date: Tue, 25 Oct 2011 08:56:09 +0200
>> Subject: Issue with Aries JPA
>> From: cmoulliard@gmail.com
>> To: dev@aries.apache.org
>>
>> Hi,
>>
>> The following config
>>
>> Datasource
>>
>> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
>>           xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0">
>>
>>    <cm:property-placeholder persistent-id="database" id="database">
>>        <cm:default-properties>
>>
>>            <!-- JDBC Drivers -->
>>            <cm:property name="jdbc.driverClassName" value="org.h2.Driver"/>
>>            <cm:property name="jdbc.url"
>> value="jdbc:h2:tcp://localhost/~/reportdb"/>
>>            <cm:property name="jdbc.username" value="sa"/>
>>            <cm:property name="jdbc.password" value=""/>
>>
>>            <!-- Connection Pooling DBCP -->
>>            <cm:property name="jdbc.initialSize" value="5"/>
>>            <cm:property name="jdbc.maxActive" value="10"/>
>>            <cm:property name="jdbc.maxIdle" value="10"/>
>>            <cm:property name="jdbc.defaultAutoCommit" value="false"/>
>>            <cm:property name="jdbc.removeAbandoned" value="false"/>
>>            <cm:property name="jdbc.removeAbandonedTimeout" value="300"/>
>>            <cm:property name="jdbc.logAbandoned" value="false"/>
>>
>>        </cm:default-properties>
>>    </cm:property-placeholder>
>>
>>     <!--
>>     <bean id="reportdb"
>> class="org.apache.commons.dbcp.BasicDataSource"
>> destroy-method="close">
>>         <property name="driverClassName" value="org.h2.Driver"/>
>>         <property name="url" value="jdbc:h2:tcp://localhost/~/reportdb"/>
>>         <property name="username" value="sa"/>
>>         <property name="password" value=""/>
>>     </bean>
>>
>>     <service ref="reportdb" interface="javax.sql.DataSource">
>>         <service-properties>
>>             <entry key="osgi.jndi.service.name" value="jdbc/reportincidentdb"/>
>>         </service-properties>
>>     </service>
>>     -->
>>
>>
>>     <service auto-export="interfaces" ref="jta">
>>         <service-properties>
>>             <entry key="osgi.jndi.service.name"
>> value="jdbc/reportincidentdbXA"/>
>>         </service-properties>
>>     </service>
>>
>>     <service auto-export="interfaces" ref="nonJTA">
>>         <service-properties>
>>             <entry key="osgi.jndi.service.name" value="jdbc/reportincidentdb"/>
>>         </service-properties>
>>     </service>
>>
>>     <!-- ###### JDBC Data Source ###### -->
>>     <bean id="jta" class="org.enhydra.jdbc.standard.StandardXADataSource">
>>         <property name="driverName" value="${jdbc.driverClassName}"/>
>>         <property name="url" value="${jdbc.url}"/>
>>         <property name="user" value="${jdbc.username}"/>
>>         <property name="password" value="${jdbc.password}"/>
>>     </bean>
>>
>>     <bean class="org.apache.commons.dbcp.BasicDataSource" id="nonJTA">
>>         <property name="driverClassName" value="${jdbc.driverClassName}"/>
>>         <property name="url" value="${jdbc.url}"/>
>>         <property name="username" value="${jdbc.username}"/>
>>         <property name="password" value="${jdbc.password}"/>
>>         <property name="initialSize" value="${jdbc.initialSize}"/>
>>         <property name="maxActive" value="${jdbc.maxActive}"/>
>>         <property name="maxIdle" value="${jdbc.maxIdle}"/>
>>         <property name="defaultAutoCommit" value="false"/>
>>         <property name="removeAbandoned" value="${jdbc.removeAbandoned}"/>
>>         <property name="removeAbandonedTimeout"
>>                   value="${jdbc.removeAbandonedTimeout}"/>
>>         <property name="logAbandoned" value="${jdbc.logAbandoned}"/>
>>     </bean>
>>
>> </blueprint>
>>
>> Persistence
>>
>> <?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/persistence_2_0.xsd"
>>              version="2.0">
>>
>>     <persistence-unit name="reportincident" transaction-type="JTA">
>>
>>         <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
>>         <jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/reportincidentdbXA)</jta-data-source>
>>         <non-jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/reportincidentdb)</non-jta-data-source>
>>
>>
>> generates this error in the log:
>>
>> Caused by: java.lang.ClassCastException: $Proxy65 cannot be cast to
>> javax.sql.DataSource
>>       at org.apache.aries.jpa.container.unit.impl.DelayedLookupDataSource.getDs(DelayedLookupDataSource.java:55)
>>       at org.apache.aries.jpa.container.unit.impl.DelayedLookupDataSource.getConnection(DelayedLookupDataSource.java:74)
>>       at org.apache.openjpa.lib.jdbc.DelegatingDataSource.getConnection(DelegatingDataSource.java:137)
>>       at org.apache.openjpa.lib.jdbc.DecoratingDataSource.getConnection(DecoratingDataSource.java:112)
>>       at org.apache.openjpa.jdbc.schema.DataSourceFactory.installDBDictionary(DataSourceFactory.java:239)
>>       ... 115 more
>>
>>       at org.apache.openjpa.lib.conf.ConfigurationImpl.instantiateAll(ConfigurationImpl.java:309)
>>       at org.apache.openjpa.conf.OpenJPAConfigurationImpl.instantiateAll(OpenJPAConfigurationImpl.java:1652)
>>       at org.apache.openjpa.kernel.AbstractBrokerFactory.makeReadOnly(AbstractBrokerFactory.java:645)
>>       at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:204)
>>
>> Regards,
>>
>> Charles Moulliard
>>
>> Apache Committer
>>
>> Blog : http://cmoulliard.blogspot.com
>> Twitter : http://twitter.com/cmoulliard
>> Linkedin : http://www.linkedin.com/in/charlesmoulliard
>> Skype: cmoulliard
>

RE: Issue with Aries JPA

Posted by Timothy Ward <ti...@apache.org>.
Hi,

What interfaces are actually registered by your auto-export="interfaces" setting? It feels like it would be safer to simply register javax.sql.DataSource or javax.sql.XADataSource as appropriate? I also don't know how the JNDI code copes with multiple interfaces. It's possible the answer is not well.

Regards,

Tim

> Date: Tue, 25 Oct 2011 08:56:09 +0200
> Subject: Issue with Aries JPA
> From: cmoulliard@gmail.com
> To: dev@aries.apache.org
> 
> Hi,
> 
> The following config
> 
> Datasource
> 
> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
>           xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0">
> 
>    <cm:property-placeholder persistent-id="database" id="database">
>        <cm:default-properties>
> 
>            <!-- JDBC Drivers -->
>            <cm:property name="jdbc.driverClassName" value="org.h2.Driver"/>
>            <cm:property name="jdbc.url"
> value="jdbc:h2:tcp://localhost/~/reportdb"/>
>            <cm:property name="jdbc.username" value="sa"/>
>            <cm:property name="jdbc.password" value=""/>
> 
>            <!-- Connection Pooling DBCP -->
>            <cm:property name="jdbc.initialSize" value="5"/>
>            <cm:property name="jdbc.maxActive" value="10"/>
>            <cm:property name="jdbc.maxIdle" value="10"/>
>            <cm:property name="jdbc.defaultAutoCommit" value="false"/>
>            <cm:property name="jdbc.removeAbandoned" value="false"/>
>            <cm:property name="jdbc.removeAbandonedTimeout" value="300"/>
>            <cm:property name="jdbc.logAbandoned" value="false"/>
> 
>        </cm:default-properties>
>    </cm:property-placeholder>
> 
>     <!--
>     <bean id="reportdb"
> class="org.apache.commons.dbcp.BasicDataSource"
> destroy-method="close">
>         <property name="driverClassName" value="org.h2.Driver"/>
>         <property name="url" value="jdbc:h2:tcp://localhost/~/reportdb"/>
>         <property name="username" value="sa"/>
>         <property name="password" value=""/>
>     </bean>
> 
>     <service ref="reportdb" interface="javax.sql.DataSource">
>         <service-properties>
>             <entry key="osgi.jndi.service.name" value="jdbc/reportincidentdb"/>
>         </service-properties>
>     </service>
>     -->
> 
> 
>     <service auto-export="interfaces" ref="jta">
>         <service-properties>
>             <entry key="osgi.jndi.service.name"
> value="jdbc/reportincidentdbXA"/>
>         </service-properties>
>     </service>
> 
>     <service auto-export="interfaces" ref="nonJTA">
>         <service-properties>
>             <entry key="osgi.jndi.service.name" value="jdbc/reportincidentdb"/>
>         </service-properties>
>     </service>
> 
>     <!-- ###### JDBC Data Source ###### -->
>     <bean id="jta" class="org.enhydra.jdbc.standard.StandardXADataSource">
>         <property name="driverName" value="${jdbc.driverClassName}"/>
>         <property name="url" value="${jdbc.url}"/>
>         <property name="user" value="${jdbc.username}"/>
>         <property name="password" value="${jdbc.password}"/>
>     </bean>
> 
>     <bean class="org.apache.commons.dbcp.BasicDataSource" id="nonJTA">
>         <property name="driverClassName" value="${jdbc.driverClassName}"/>
>         <property name="url" value="${jdbc.url}"/>
>         <property name="username" value="${jdbc.username}"/>
>         <property name="password" value="${jdbc.password}"/>
>         <property name="initialSize" value="${jdbc.initialSize}"/>
>         <property name="maxActive" value="${jdbc.maxActive}"/>
>         <property name="maxIdle" value="${jdbc.maxIdle}"/>
>         <property name="defaultAutoCommit" value="false"/>
>         <property name="removeAbandoned" value="${jdbc.removeAbandoned}"/>
>         <property name="removeAbandonedTimeout"
>                   value="${jdbc.removeAbandonedTimeout}"/>
>         <property name="logAbandoned" value="${jdbc.logAbandoned}"/>
>     </bean>
> 
> </blueprint>
> 
> Persistence
> 
> <?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/persistence_2_0.xsd"
>              version="2.0">
> 
>     <persistence-unit name="reportincident" transaction-type="JTA">
> 
>         <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
>         <jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/reportincidentdbXA)</jta-data-source>
>         <non-jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/reportincidentdb)</non-jta-data-source>
> 
> 
> generates this error in the log:
> 
> Caused by: java.lang.ClassCastException: $Proxy65 cannot be cast to
> javax.sql.DataSource
> 	at org.apache.aries.jpa.container.unit.impl.DelayedLookupDataSource.getDs(DelayedLookupDataSource.java:55)
> 	at org.apache.aries.jpa.container.unit.impl.DelayedLookupDataSource.getConnection(DelayedLookupDataSource.java:74)
> 	at org.apache.openjpa.lib.jdbc.DelegatingDataSource.getConnection(DelegatingDataSource.java:137)
> 	at org.apache.openjpa.lib.jdbc.DecoratingDataSource.getConnection(DecoratingDataSource.java:112)
> 	at org.apache.openjpa.jdbc.schema.DataSourceFactory.installDBDictionary(DataSourceFactory.java:239)
> 	... 115 more
> 
> 	at org.apache.openjpa.lib.conf.ConfigurationImpl.instantiateAll(ConfigurationImpl.java:309)
> 	at org.apache.openjpa.conf.OpenJPAConfigurationImpl.instantiateAll(OpenJPAConfigurationImpl.java:1652)
> 	at org.apache.openjpa.kernel.AbstractBrokerFactory.makeReadOnly(AbstractBrokerFactory.java:645)
> 	at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:204)
> 
> Regards,
> 
> Charles Moulliard
> 
> Apache Committer
> 
> Blog : http://cmoulliard.blogspot.com
> Twitter : http://twitter.com/cmoulliard
> Linkedin : http://www.linkedin.com/in/charlesmoulliard
> Skype: cmoulliard
 		 	   		  

RE: Issue with Aries JPA

Posted by Timothy Ward <ti...@apache.org>.
Hi,

No, it does not mean that. What it means is that in 0.3 Aries JPA expects the JTA datasource to be just that, a DataSource that is integrated with JTA transactions. If the DataSource isn't enlisted in transactions (by someone other than the JPA container) then it will not be transactional, and not work properly. This is the role that is performed by the transaction wrappers bundle, which detects XADataSources, wraps them with some magic, and re-registers them as JTA enabled DataSource services. This is why I didn't expect you to change the <jta-data-source> entry in your persistence.xml.

In JPA 0.4 the JPA container will include the magic from the transaction wrappers bundle, making it no longer necessary to do the magic service wrapping. At that point the JPA container will be able to use an XADataSource directly.

In summary, don't worry, the JPA container has been 2 phase safe since the 0.1 release. It's just about to get easier to use, that's all :)

Regards,

Tim


> Date: Wed, 26 Oct 2011 10:46:34 +0200
> Subject: Re: Issue with Aries JPA
> From: cmoulliard@gmail.com
> To: dev@aries.apache.org
> 
> Hi Timothy,
> 
> Does your remark means that Apache Aries JPA 0.3 cannot work with
> XADatasource (and only javax.sql.Datasource) and we have to wait Aries
> JPA 0.4 to fully support JTA with 2 phases commit (e.g jms + jdbc) ?
> 
> Regards,
> 
> Charles Moulliard
> 
> Apache Committer
> 
> Blog : http://cmoulliard.blogspot.com
> Twitter : http://twitter.com/cmoulliard
> Linkedin : http://www.linkedin.com/in/charlesmoulliard
> Skype: cmoulliard
> 
> 
> 
> On Wed, Oct 26, 2011 at 9:24 AM, Timothy Ward <ti...@apache.org> wrote:
> >
> > Hi,
> >
> > What you have below is was what I was suggesting, my guess is that JNDI gets a bit confused when you expose multiple interfaces for a single service and doesn't build the correct proxy. The reason that your previous attempt didn't work was because the JNDI lookup within JPA was for an XADataSource not a DataSource. This will only be allowed from the 0.4+ release of the Aries JPA container (at which point you should no longer need the transaction wrappers bundle)
> >
> > Regards,
> >
> > Tim
> >
> >> Date: Tue, 25 Oct 2011 19:56:35 +0200
> >> Subject: Re: Issue with Aries JPA
> >> From: cmoulliard@gmail.com
> >> To: dev@aries.apache.org
> >>
> >> I have found the good syntax
> >>
> >>     <service interface="javax.sql.XADataSource" ref="xaDataSource">
> >>         <service-properties>
> >>             <entry key="osgi.jndi.service.name"
> >> value="jdbc/reportincidentdbXA"/>
> >>             <entry key="datasource" value="reportincidentdbXA"/>
> >>         </service-properties>
> >>     </service>
> >>
> >>     <service interface="javax.sql.DataSource" ref="dataSource">
> >>         <service-properties>
> >>             <entry key="osgi.jndi.service.name" value="jdbc/reportincidentdb"/>
> >>             <entry key="datasource" value="reportincidentdb"/>
> >>         </service-properties>
> >>     </service>
> >>
> >>         <jta-data-source>osgi:service/javax.sql.DataSource/(datasource=reportincidentdbXA)</jta-data-source>
> >>         <non-jta-data-source>osgi:service/javax.sql.DataSource/(datasource=reportincidentdb)</non-jta-data-source>
> >>
> >>
> >> On Tue, Oct 25, 2011 at 8:56 AM, Charles Moulliard <cm...@gmail.com> wrote:
> >> > Hi,
> >> >
> >> > The following config
> >> >
> >> > Datasource
> >> >
> >> > <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
> >> >          xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0">
> >> >
> >> >   <cm:property-placeholder persistent-id="database" id="database">
> >> >       <cm:default-properties>
> >> >
> >> >           <!-- JDBC Drivers -->
> >> >           <cm:property name="jdbc.driverClassName" value="org.h2.Driver"/>
> >> >           <cm:property name="jdbc.url"
> >> > value="jdbc:h2:tcp://localhost/~/reportdb"/>
> >> >           <cm:property name="jdbc.username" value="sa"/>
> >> >           <cm:property name="jdbc.password" value=""/>
> >> >
> >> >           <!-- Connection Pooling DBCP -->
> >> >           <cm:property name="jdbc.initialSize" value="5"/>
> >> >           <cm:property name="jdbc.maxActive" value="10"/>
> >> >           <cm:property name="jdbc.maxIdle" value="10"/>
> >> >           <cm:property name="jdbc.defaultAutoCommit" value="false"/>
> >> >           <cm:property name="jdbc.removeAbandoned" value="false"/>
> >> >           <cm:property name="jdbc.removeAbandonedTimeout" value="300"/>
> >> >           <cm:property name="jdbc.logAbandoned" value="false"/>
> >> >
> >> >       </cm:default-properties>
> >> >   </cm:property-placeholder>
> >> >
> >> >    <!--
> >> >    <bean id="reportdb"
> >> > class="org.apache.commons.dbcp.BasicDataSource"
> >> > destroy-method="close">
> >> >        <property name="driverClassName" value="org.h2.Driver"/>
> >> >        <property name="url" value="jdbc:h2:tcp://localhost/~/reportdb"/>
> >> >        <property name="username" value="sa"/>
> >> >        <property name="password" value=""/>
> >> >    </bean>
> >> >
> >> >    <service ref="reportdb" interface="javax.sql.DataSource">
> >> >        <service-properties>
> >> >            <entry key="osgi.jndi.service.name" value="jdbc/reportincidentdb"/>
> >> >        </service-properties>
> >> >    </service>
> >> >    -->
> >> >
> >> >
> >> >    <service auto-export="interfaces" ref="jta">
> >> >        <service-properties>
> >> >            <entry key="osgi.jndi.service.name"
> >> > value="jdbc/reportincidentdbXA"/>
> >> >        </service-properties>
> >> >    </service>
> >> >
> >> >    <service auto-export="interfaces" ref="nonJTA">
> >> >        <service-properties>
> >> >            <entry key="osgi.jndi.service.name" value="jdbc/reportincidentdb"/>
> >> >        </service-properties>
> >> >    </service>
> >> >
> >> >    <!-- ###### JDBC Data Source ###### -->
> >> >    <bean id="jta" class="org.enhydra.jdbc.standard.StandardXADataSource">
> >> >        <property name="driverName" value="${jdbc.driverClassName}"/>
> >> >        <property name="url" value="${jdbc.url}"/>
> >> >        <property name="user" value="${jdbc.username}"/>
> >> >        <property name="password" value="${jdbc.password}"/>
> >> >    </bean>
> >> >
> >> >    <bean class="org.apache.commons.dbcp.BasicDataSource" id="nonJTA">
> >> >        <property name="driverClassName" value="${jdbc.driverClassName}"/>
> >> >        <property name="url" value="${jdbc.url}"/>
> >> >        <property name="username" value="${jdbc.username}"/>
> >> >        <property name="password" value="${jdbc.password}"/>
> >> >        <property name="initialSize" value="${jdbc.initialSize}"/>
> >> >        <property name="maxActive" value="${jdbc.maxActive}"/>
> >> >        <property name="maxIdle" value="${jdbc.maxIdle}"/>
> >> >        <property name="defaultAutoCommit" value="false"/>
> >> >        <property name="removeAbandoned" value="${jdbc.removeAbandoned}"/>
> >> >        <property name="removeAbandonedTimeout"
> >> >                  value="${jdbc.removeAbandonedTimeout}"/>
> >> >        <property name="logAbandoned" value="${jdbc.logAbandoned}"/>
> >> >    </bean>
> >> >
> >> > </blueprint>
> >> >
> >> > Persistence
> >> >
> >> > <?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/persistence_2_0.xsd"
> >> >             version="2.0">
> >> >
> >> >    <persistence-unit name="reportincident" transaction-type="JTA">
> >> >
> >> >        <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
> >> >        <jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/reportincidentdbXA)</jta-data-source>
> >> >        <non-jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/reportincidentdb)</non-jta-data-source>
> >> >
> >> >
> >> > generates this error in the log:
> >> >
> >> > Caused by: java.lang.ClassCastException: $Proxy65 cannot be cast to
> >> > javax.sql.DataSource
> >> >        at org.apache.aries.jpa.container.unit.impl.DelayedLookupDataSource.getDs(DelayedLookupDataSource.java:55)
> >> >        at org.apache.aries.jpa.container.unit.impl.DelayedLookupDataSource.getConnection(DelayedLookupDataSource.java:74)
> >> >        at org.apache.openjpa.lib.jdbc.DelegatingDataSource.getConnection(DelegatingDataSource.java:137)
> >> >        at org.apache.openjpa.lib.jdbc.DecoratingDataSource.getConnection(DecoratingDataSource.java:112)
> >> >        at org.apache.openjpa.jdbc.schema.DataSourceFactory.installDBDictionary(DataSourceFactory.java:239)
> >> >        ... 115 more
> >> >
> >> >        at org.apache.openjpa.lib.conf.ConfigurationImpl.instantiateAll(ConfigurationImpl.java:309)
> >> >        at org.apache.openjpa.conf.OpenJPAConfigurationImpl.instantiateAll(OpenJPAConfigurationImpl.java:1652)
> >> >        at org.apache.openjpa.kernel.AbstractBrokerFactory.makeReadOnly(AbstractBrokerFactory.java:645)
> >> >        at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:204)
> >> >
> >> > Regards,
> >> >
> >> > Charles Moulliard
> >> >
> >> > Apache Committer
> >> >
> >> > Blog : http://cmoulliard.blogspot.com
> >> > Twitter : http://twitter.com/cmoulliard
> >> > Linkedin : http://www.linkedin.com/in/charlesmoulliard
> >> > Skype: cmoulliard
> >> >
> >
 		 	   		  

Re: Issue with Aries JPA

Posted by Charles Moulliard <cm...@gmail.com>.
Hi Timothy,

Does your remark means that Apache Aries JPA 0.3 cannot work with
XADatasource (and only javax.sql.Datasource) and we have to wait Aries
JPA 0.4 to fully support JTA with 2 phases commit (e.g jms + jdbc) ?

Regards,

Charles Moulliard

Apache Committer

Blog : http://cmoulliard.blogspot.com
Twitter : http://twitter.com/cmoulliard
Linkedin : http://www.linkedin.com/in/charlesmoulliard
Skype: cmoulliard



On Wed, Oct 26, 2011 at 9:24 AM, Timothy Ward <ti...@apache.org> wrote:
>
> Hi,
>
> What you have below is was what I was suggesting, my guess is that JNDI gets a bit confused when you expose multiple interfaces for a single service and doesn't build the correct proxy. The reason that your previous attempt didn't work was because the JNDI lookup within JPA was for an XADataSource not a DataSource. This will only be allowed from the 0.4+ release of the Aries JPA container (at which point you should no longer need the transaction wrappers bundle)
>
> Regards,
>
> Tim
>
>> Date: Tue, 25 Oct 2011 19:56:35 +0200
>> Subject: Re: Issue with Aries JPA
>> From: cmoulliard@gmail.com
>> To: dev@aries.apache.org
>>
>> I have found the good syntax
>>
>>     <service interface="javax.sql.XADataSource" ref="xaDataSource">
>>         <service-properties>
>>             <entry key="osgi.jndi.service.name"
>> value="jdbc/reportincidentdbXA"/>
>>             <entry key="datasource" value="reportincidentdbXA"/>
>>         </service-properties>
>>     </service>
>>
>>     <service interface="javax.sql.DataSource" ref="dataSource">
>>         <service-properties>
>>             <entry key="osgi.jndi.service.name" value="jdbc/reportincidentdb"/>
>>             <entry key="datasource" value="reportincidentdb"/>
>>         </service-properties>
>>     </service>
>>
>>         <jta-data-source>osgi:service/javax.sql.DataSource/(datasource=reportincidentdbXA)</jta-data-source>
>>         <non-jta-data-source>osgi:service/javax.sql.DataSource/(datasource=reportincidentdb)</non-jta-data-source>
>>
>>
>> On Tue, Oct 25, 2011 at 8:56 AM, Charles Moulliard <cm...@gmail.com> wrote:
>> > Hi,
>> >
>> > The following config
>> >
>> > Datasource
>> >
>> > <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
>> >          xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0">
>> >
>> >   <cm:property-placeholder persistent-id="database" id="database">
>> >       <cm:default-properties>
>> >
>> >           <!-- JDBC Drivers -->
>> >           <cm:property name="jdbc.driverClassName" value="org.h2.Driver"/>
>> >           <cm:property name="jdbc.url"
>> > value="jdbc:h2:tcp://localhost/~/reportdb"/>
>> >           <cm:property name="jdbc.username" value="sa"/>
>> >           <cm:property name="jdbc.password" value=""/>
>> >
>> >           <!-- Connection Pooling DBCP -->
>> >           <cm:property name="jdbc.initialSize" value="5"/>
>> >           <cm:property name="jdbc.maxActive" value="10"/>
>> >           <cm:property name="jdbc.maxIdle" value="10"/>
>> >           <cm:property name="jdbc.defaultAutoCommit" value="false"/>
>> >           <cm:property name="jdbc.removeAbandoned" value="false"/>
>> >           <cm:property name="jdbc.removeAbandonedTimeout" value="300"/>
>> >           <cm:property name="jdbc.logAbandoned" value="false"/>
>> >
>> >       </cm:default-properties>
>> >   </cm:property-placeholder>
>> >
>> >    <!--
>> >    <bean id="reportdb"
>> > class="org.apache.commons.dbcp.BasicDataSource"
>> > destroy-method="close">
>> >        <property name="driverClassName" value="org.h2.Driver"/>
>> >        <property name="url" value="jdbc:h2:tcp://localhost/~/reportdb"/>
>> >        <property name="username" value="sa"/>
>> >        <property name="password" value=""/>
>> >    </bean>
>> >
>> >    <service ref="reportdb" interface="javax.sql.DataSource">
>> >        <service-properties>
>> >            <entry key="osgi.jndi.service.name" value="jdbc/reportincidentdb"/>
>> >        </service-properties>
>> >    </service>
>> >    -->
>> >
>> >
>> >    <service auto-export="interfaces" ref="jta">
>> >        <service-properties>
>> >            <entry key="osgi.jndi.service.name"
>> > value="jdbc/reportincidentdbXA"/>
>> >        </service-properties>
>> >    </service>
>> >
>> >    <service auto-export="interfaces" ref="nonJTA">
>> >        <service-properties>
>> >            <entry key="osgi.jndi.service.name" value="jdbc/reportincidentdb"/>
>> >        </service-properties>
>> >    </service>
>> >
>> >    <!-- ###### JDBC Data Source ###### -->
>> >    <bean id="jta" class="org.enhydra.jdbc.standard.StandardXADataSource">
>> >        <property name="driverName" value="${jdbc.driverClassName}"/>
>> >        <property name="url" value="${jdbc.url}"/>
>> >        <property name="user" value="${jdbc.username}"/>
>> >        <property name="password" value="${jdbc.password}"/>
>> >    </bean>
>> >
>> >    <bean class="org.apache.commons.dbcp.BasicDataSource" id="nonJTA">
>> >        <property name="driverClassName" value="${jdbc.driverClassName}"/>
>> >        <property name="url" value="${jdbc.url}"/>
>> >        <property name="username" value="${jdbc.username}"/>
>> >        <property name="password" value="${jdbc.password}"/>
>> >        <property name="initialSize" value="${jdbc.initialSize}"/>
>> >        <property name="maxActive" value="${jdbc.maxActive}"/>
>> >        <property name="maxIdle" value="${jdbc.maxIdle}"/>
>> >        <property name="defaultAutoCommit" value="false"/>
>> >        <property name="removeAbandoned" value="${jdbc.removeAbandoned}"/>
>> >        <property name="removeAbandonedTimeout"
>> >                  value="${jdbc.removeAbandonedTimeout}"/>
>> >        <property name="logAbandoned" value="${jdbc.logAbandoned}"/>
>> >    </bean>
>> >
>> > </blueprint>
>> >
>> > Persistence
>> >
>> > <?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/persistence_2_0.xsd"
>> >             version="2.0">
>> >
>> >    <persistence-unit name="reportincident" transaction-type="JTA">
>> >
>> >        <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
>> >        <jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/reportincidentdbXA)</jta-data-source>
>> >        <non-jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/reportincidentdb)</non-jta-data-source>
>> >
>> >
>> > generates this error in the log:
>> >
>> > Caused by: java.lang.ClassCastException: $Proxy65 cannot be cast to
>> > javax.sql.DataSource
>> >        at org.apache.aries.jpa.container.unit.impl.DelayedLookupDataSource.getDs(DelayedLookupDataSource.java:55)
>> >        at org.apache.aries.jpa.container.unit.impl.DelayedLookupDataSource.getConnection(DelayedLookupDataSource.java:74)
>> >        at org.apache.openjpa.lib.jdbc.DelegatingDataSource.getConnection(DelegatingDataSource.java:137)
>> >        at org.apache.openjpa.lib.jdbc.DecoratingDataSource.getConnection(DecoratingDataSource.java:112)
>> >        at org.apache.openjpa.jdbc.schema.DataSourceFactory.installDBDictionary(DataSourceFactory.java:239)
>> >        ... 115 more
>> >
>> >        at org.apache.openjpa.lib.conf.ConfigurationImpl.instantiateAll(ConfigurationImpl.java:309)
>> >        at org.apache.openjpa.conf.OpenJPAConfigurationImpl.instantiateAll(OpenJPAConfigurationImpl.java:1652)
>> >        at org.apache.openjpa.kernel.AbstractBrokerFactory.makeReadOnly(AbstractBrokerFactory.java:645)
>> >        at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:204)
>> >
>> > Regards,
>> >
>> > Charles Moulliard
>> >
>> > Apache Committer
>> >
>> > Blog : http://cmoulliard.blogspot.com
>> > Twitter : http://twitter.com/cmoulliard
>> > Linkedin : http://www.linkedin.com/in/charlesmoulliard
>> > Skype: cmoulliard
>> >
>

RE: Issue with Aries JPA

Posted by Timothy Ward <ti...@apache.org>.
Hi,

What you have below is was what I was suggesting, my guess is that JNDI gets a bit confused when you expose multiple interfaces for a single service and doesn't build the correct proxy. The reason that your previous attempt didn't work was because the JNDI lookup within JPA was for an XADataSource not a DataSource. This will only be allowed from the 0.4+ release of the Aries JPA container (at which point you should no longer need the transaction wrappers bundle)

Regards,

Tim

> Date: Tue, 25 Oct 2011 19:56:35 +0200
> Subject: Re: Issue with Aries JPA
> From: cmoulliard@gmail.com
> To: dev@aries.apache.org
> 
> I have found the good syntax
> 
>     <service interface="javax.sql.XADataSource" ref="xaDataSource">
>         <service-properties>
>             <entry key="osgi.jndi.service.name"
> value="jdbc/reportincidentdbXA"/>
>             <entry key="datasource" value="reportincidentdbXA"/>
>         </service-properties>
>     </service>
> 
>     <service interface="javax.sql.DataSource" ref="dataSource">
>         <service-properties>
>             <entry key="osgi.jndi.service.name" value="jdbc/reportincidentdb"/>
>             <entry key="datasource" value="reportincidentdb"/>
>         </service-properties>
>     </service>
> 
>         <jta-data-source>osgi:service/javax.sql.DataSource/(datasource=reportincidentdbXA)</jta-data-source>
>         <non-jta-data-source>osgi:service/javax.sql.DataSource/(datasource=reportincidentdb)</non-jta-data-source>
> 
> 
> On Tue, Oct 25, 2011 at 8:56 AM, Charles Moulliard <cm...@gmail.com> wrote:
> > Hi,
> >
> > The following config
> >
> > Datasource
> >
> > <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
> >          xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0">
> >
> >   <cm:property-placeholder persistent-id="database" id="database">
> >       <cm:default-properties>
> >
> >           <!-- JDBC Drivers -->
> >           <cm:property name="jdbc.driverClassName" value="org.h2.Driver"/>
> >           <cm:property name="jdbc.url"
> > value="jdbc:h2:tcp://localhost/~/reportdb"/>
> >           <cm:property name="jdbc.username" value="sa"/>
> >           <cm:property name="jdbc.password" value=""/>
> >
> >           <!-- Connection Pooling DBCP -->
> >           <cm:property name="jdbc.initialSize" value="5"/>
> >           <cm:property name="jdbc.maxActive" value="10"/>
> >           <cm:property name="jdbc.maxIdle" value="10"/>
> >           <cm:property name="jdbc.defaultAutoCommit" value="false"/>
> >           <cm:property name="jdbc.removeAbandoned" value="false"/>
> >           <cm:property name="jdbc.removeAbandonedTimeout" value="300"/>
> >           <cm:property name="jdbc.logAbandoned" value="false"/>
> >
> >       </cm:default-properties>
> >   </cm:property-placeholder>
> >
> >    <!--
> >    <bean id="reportdb"
> > class="org.apache.commons.dbcp.BasicDataSource"
> > destroy-method="close">
> >        <property name="driverClassName" value="org.h2.Driver"/>
> >        <property name="url" value="jdbc:h2:tcp://localhost/~/reportdb"/>
> >        <property name="username" value="sa"/>
> >        <property name="password" value=""/>
> >    </bean>
> >
> >    <service ref="reportdb" interface="javax.sql.DataSource">
> >        <service-properties>
> >            <entry key="osgi.jndi.service.name" value="jdbc/reportincidentdb"/>
> >        </service-properties>
> >    </service>
> >    -->
> >
> >
> >    <service auto-export="interfaces" ref="jta">
> >        <service-properties>
> >            <entry key="osgi.jndi.service.name"
> > value="jdbc/reportincidentdbXA"/>
> >        </service-properties>
> >    </service>
> >
> >    <service auto-export="interfaces" ref="nonJTA">
> >        <service-properties>
> >            <entry key="osgi.jndi.service.name" value="jdbc/reportincidentdb"/>
> >        </service-properties>
> >    </service>
> >
> >    <!-- ###### JDBC Data Source ###### -->
> >    <bean id="jta" class="org.enhydra.jdbc.standard.StandardXADataSource">
> >        <property name="driverName" value="${jdbc.driverClassName}"/>
> >        <property name="url" value="${jdbc.url}"/>
> >        <property name="user" value="${jdbc.username}"/>
> >        <property name="password" value="${jdbc.password}"/>
> >    </bean>
> >
> >    <bean class="org.apache.commons.dbcp.BasicDataSource" id="nonJTA">
> >        <property name="driverClassName" value="${jdbc.driverClassName}"/>
> >        <property name="url" value="${jdbc.url}"/>
> >        <property name="username" value="${jdbc.username}"/>
> >        <property name="password" value="${jdbc.password}"/>
> >        <property name="initialSize" value="${jdbc.initialSize}"/>
> >        <property name="maxActive" value="${jdbc.maxActive}"/>
> >        <property name="maxIdle" value="${jdbc.maxIdle}"/>
> >        <property name="defaultAutoCommit" value="false"/>
> >        <property name="removeAbandoned" value="${jdbc.removeAbandoned}"/>
> >        <property name="removeAbandonedTimeout"
> >                  value="${jdbc.removeAbandonedTimeout}"/>
> >        <property name="logAbandoned" value="${jdbc.logAbandoned}"/>
> >    </bean>
> >
> > </blueprint>
> >
> > Persistence
> >
> > <?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/persistence_2_0.xsd"
> >             version="2.0">
> >
> >    <persistence-unit name="reportincident" transaction-type="JTA">
> >
> >        <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
> >        <jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/reportincidentdbXA)</jta-data-source>
> >        <non-jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/reportincidentdb)</non-jta-data-source>
> >
> >
> > generates this error in the log:
> >
> > Caused by: java.lang.ClassCastException: $Proxy65 cannot be cast to
> > javax.sql.DataSource
> >        at org.apache.aries.jpa.container.unit.impl.DelayedLookupDataSource.getDs(DelayedLookupDataSource.java:55)
> >        at org.apache.aries.jpa.container.unit.impl.DelayedLookupDataSource.getConnection(DelayedLookupDataSource.java:74)
> >        at org.apache.openjpa.lib.jdbc.DelegatingDataSource.getConnection(DelegatingDataSource.java:137)
> >        at org.apache.openjpa.lib.jdbc.DecoratingDataSource.getConnection(DecoratingDataSource.java:112)
> >        at org.apache.openjpa.jdbc.schema.DataSourceFactory.installDBDictionary(DataSourceFactory.java:239)
> >        ... 115 more
> >
> >        at org.apache.openjpa.lib.conf.ConfigurationImpl.instantiateAll(ConfigurationImpl.java:309)
> >        at org.apache.openjpa.conf.OpenJPAConfigurationImpl.instantiateAll(OpenJPAConfigurationImpl.java:1652)
> >        at org.apache.openjpa.kernel.AbstractBrokerFactory.makeReadOnly(AbstractBrokerFactory.java:645)
> >        at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:204)
> >
> > Regards,
> >
> > Charles Moulliard
> >
> > Apache Committer
> >
> > Blog : http://cmoulliard.blogspot.com
> > Twitter : http://twitter.com/cmoulliard
> > Linkedin : http://www.linkedin.com/in/charlesmoulliard
> > Skype: cmoulliard
> >
 		 	   		  

Re: Issue with Aries JPA

Posted by Charles Moulliard <cm...@gmail.com>.
I have found the good syntax

    <service interface="javax.sql.XADataSource" ref="xaDataSource">
        <service-properties>
            <entry key="osgi.jndi.service.name"
value="jdbc/reportincidentdbXA"/>
            <entry key="datasource" value="reportincidentdbXA"/>
        </service-properties>
    </service>

    <service interface="javax.sql.DataSource" ref="dataSource">
        <service-properties>
            <entry key="osgi.jndi.service.name" value="jdbc/reportincidentdb"/>
            <entry key="datasource" value="reportincidentdb"/>
        </service-properties>
    </service>

        <jta-data-source>osgi:service/javax.sql.DataSource/(datasource=reportincidentdbXA)</jta-data-source>
        <non-jta-data-source>osgi:service/javax.sql.DataSource/(datasource=reportincidentdb)</non-jta-data-source>


On Tue, Oct 25, 2011 at 8:56 AM, Charles Moulliard <cm...@gmail.com> wrote:
> Hi,
>
> The following config
>
> Datasource
>
> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
>          xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0">
>
>   <cm:property-placeholder persistent-id="database" id="database">
>       <cm:default-properties>
>
>           <!-- JDBC Drivers -->
>           <cm:property name="jdbc.driverClassName" value="org.h2.Driver"/>
>           <cm:property name="jdbc.url"
> value="jdbc:h2:tcp://localhost/~/reportdb"/>
>           <cm:property name="jdbc.username" value="sa"/>
>           <cm:property name="jdbc.password" value=""/>
>
>           <!-- Connection Pooling DBCP -->
>           <cm:property name="jdbc.initialSize" value="5"/>
>           <cm:property name="jdbc.maxActive" value="10"/>
>           <cm:property name="jdbc.maxIdle" value="10"/>
>           <cm:property name="jdbc.defaultAutoCommit" value="false"/>
>           <cm:property name="jdbc.removeAbandoned" value="false"/>
>           <cm:property name="jdbc.removeAbandonedTimeout" value="300"/>
>           <cm:property name="jdbc.logAbandoned" value="false"/>
>
>       </cm:default-properties>
>   </cm:property-placeholder>
>
>    <!--
>    <bean id="reportdb"
> class="org.apache.commons.dbcp.BasicDataSource"
> destroy-method="close">
>        <property name="driverClassName" value="org.h2.Driver"/>
>        <property name="url" value="jdbc:h2:tcp://localhost/~/reportdb"/>
>        <property name="username" value="sa"/>
>        <property name="password" value=""/>
>    </bean>
>
>    <service ref="reportdb" interface="javax.sql.DataSource">
>        <service-properties>
>            <entry key="osgi.jndi.service.name" value="jdbc/reportincidentdb"/>
>        </service-properties>
>    </service>
>    -->
>
>
>    <service auto-export="interfaces" ref="jta">
>        <service-properties>
>            <entry key="osgi.jndi.service.name"
> value="jdbc/reportincidentdbXA"/>
>        </service-properties>
>    </service>
>
>    <service auto-export="interfaces" ref="nonJTA">
>        <service-properties>
>            <entry key="osgi.jndi.service.name" value="jdbc/reportincidentdb"/>
>        </service-properties>
>    </service>
>
>    <!-- ###### JDBC Data Source ###### -->
>    <bean id="jta" class="org.enhydra.jdbc.standard.StandardXADataSource">
>        <property name="driverName" value="${jdbc.driverClassName}"/>
>        <property name="url" value="${jdbc.url}"/>
>        <property name="user" value="${jdbc.username}"/>
>        <property name="password" value="${jdbc.password}"/>
>    </bean>
>
>    <bean class="org.apache.commons.dbcp.BasicDataSource" id="nonJTA">
>        <property name="driverClassName" value="${jdbc.driverClassName}"/>
>        <property name="url" value="${jdbc.url}"/>
>        <property name="username" value="${jdbc.username}"/>
>        <property name="password" value="${jdbc.password}"/>
>        <property name="initialSize" value="${jdbc.initialSize}"/>
>        <property name="maxActive" value="${jdbc.maxActive}"/>
>        <property name="maxIdle" value="${jdbc.maxIdle}"/>
>        <property name="defaultAutoCommit" value="false"/>
>        <property name="removeAbandoned" value="${jdbc.removeAbandoned}"/>
>        <property name="removeAbandonedTimeout"
>                  value="${jdbc.removeAbandonedTimeout}"/>
>        <property name="logAbandoned" value="${jdbc.logAbandoned}"/>
>    </bean>
>
> </blueprint>
>
> Persistence
>
> <?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/persistence_2_0.xsd"
>             version="2.0">
>
>    <persistence-unit name="reportincident" transaction-type="JTA">
>
>        <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
>        <jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/reportincidentdbXA)</jta-data-source>
>        <non-jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/reportincidentdb)</non-jta-data-source>
>
>
> generates this error in the log:
>
> Caused by: java.lang.ClassCastException: $Proxy65 cannot be cast to
> javax.sql.DataSource
>        at org.apache.aries.jpa.container.unit.impl.DelayedLookupDataSource.getDs(DelayedLookupDataSource.java:55)
>        at org.apache.aries.jpa.container.unit.impl.DelayedLookupDataSource.getConnection(DelayedLookupDataSource.java:74)
>        at org.apache.openjpa.lib.jdbc.DelegatingDataSource.getConnection(DelegatingDataSource.java:137)
>        at org.apache.openjpa.lib.jdbc.DecoratingDataSource.getConnection(DecoratingDataSource.java:112)
>        at org.apache.openjpa.jdbc.schema.DataSourceFactory.installDBDictionary(DataSourceFactory.java:239)
>        ... 115 more
>
>        at org.apache.openjpa.lib.conf.ConfigurationImpl.instantiateAll(ConfigurationImpl.java:309)
>        at org.apache.openjpa.conf.OpenJPAConfigurationImpl.instantiateAll(OpenJPAConfigurationImpl.java:1652)
>        at org.apache.openjpa.kernel.AbstractBrokerFactory.makeReadOnly(AbstractBrokerFactory.java:645)
>        at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:204)
>
> Regards,
>
> Charles Moulliard
>
> Apache Committer
>
> Blog : http://cmoulliard.blogspot.com
> Twitter : http://twitter.com/cmoulliard
> Linkedin : http://www.linkedin.com/in/charlesmoulliard
> Skype: cmoulliard
>