Hi Michael,
that is a tricky part.. At the beginning I tried to use something like:

<bean id="contextWithProps">
    <jpa:context property="em">
      <map>
        <entry key="one" value="eins" />
        <entry key="two" value="zwo" />
      </map>
    </jpa:context></bean>

But it looks like aries has some troubles (there should be a post in the
mailing list about that).
The easy solution is to delegate the connection pooling to an additional
library so you can ave a bundle that export a DataSource:

<bean id="DS" class="com.jolbox.bonecp.BoneCPDataSource"
destroy-method="close">
        <property name="driverClass"
value="${db.class}"/>
        <property name="jdbcUrl"
value="${db.url}"/>
        <property name="username"
value="${db.usr}"/>
        <property name="password"
value="${db.pwd}"/>
        <property name="minConnectionsPerPartition"
value="${pool.min}"/>
        <property name="maxConnectionsPerPartition"
value="${pool.max}"/>
        <property name="acquireIncrement"
value="${pool.partitions}"/>
        <property name="partitionCount"
value="${pool.inc}"/>
        <property name="idleConnectionTestPeriodInSeconds"
value="${connection.idle.test.period}"/>
        <property name="connectionTestStatement"
value="${connection.idle.test.query}"/>
        <property name="acquireRetryDelayInMs"
value="${connection.acquire.delay}"/>
        <property name="acquireRetryAttempts"
value="${connection.acquire.attempts}"/>
</bean>

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

Then in the persistence.xml you can use the DS trough Aries JNDI:

<persistence-unit name="TheUnitName" transaction-type="RESOURCE_LOCAL">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <non-jta-data-source>osgi:service/javax.sql.DataSource/(
osgi.jndi.service.name=jdbc/DS)</non-jta-data-source>
        <class>x.y.z</class>
        <exclude-unlisted-classes>true</exclude-unlisted-classes>
        <properties>
            <property name="eclipselink.logging.level"
value="FINEST"/>
            <property name="eclipselink.logging.parameters"
value="true"/>
            <property name="eclipselink.logging.timestamp"
value="false"/>
            <property name="eclipselink.logging.session"
value="false"/>
            <property name="eclipselink.logging.thread"
value="false"/>
            <property name="eclipselink.logging.exceptions"
value="true"/>
            <property name="eclipselink.session.include.descriptor.queries"
value="true"/>
    </properties>
</persistence-unit>

Not the best and flexible solution, but it is the best one I0ve found so
far.

Ciao,
Luca


On Fri, Oct 5, 2012 at 2:49 PM, Michael Täschner <[email protected]>wrote:

> Hi LB,
>
> sorry to come back to this topic again but I have another questions. How
> can I manage the eclipselink pool settings to make them configurable at
> runtime (exchanging blueprint.xml would be an option). Right now I have
> configured them with compile-time filter in persistence.xml. Any other
> option possible ?
>
> EclipseLink Pool config:
>       <property name="eclipselink.jdbc.read-connections.min"
> value="${jdbc.read-connections.min}" />
>       <property name="eclipselink.jdbc.read-connections.max"
> value="${jdbc.read-connections.max}" />
>       <property name="eclipselink.jdbc.read-connections.shared"
> value="${jdbc.read-connections.shared}" />
>       <property name="eclipselink.jdbc.write-connections.min"
> value="${jdbc.write-connections.min}" />
>       <property name="eclipselink.jdbc.write-connections.max"
> value="${jdbc.write-connections.max}" />
>
>
> Thanks and Regards,
> Michael
>
>
> 2012/9/11 lb <[email protected]>
>
>> Hi,
>> to make Aries 0.3 to work with EclipseLink (on karaf 2.1.7) I had to
>> export the service via blueprint as:
>>
>> <blueprint
>>     xmlns    = "http://www.osgi.org/xmlns/blueprint/v1.0.0";
>>     xmlns:jpa="http://aries.apache.org/xmlns/jpa/v1.0.0";
>>     xmlns:tx="http://aries.apache.org/xmlns/transactions/v1.0.0";
>>     xmlns:cm = "
>> http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0";>
>>
>>     <bean
>>         id    = "ELINK_PP"
>>         class = "org.eclipse.persistence.jpa.PersistenceProvider"
>>         scope = "prototype"/>
>>
>>     <service interface="javax.persistence.spi.PersistenceProvider"
>> ref="ELINK_PP">
>>         <service-properties>
>>             <entry
>>                 key  ="javax.persistence.provider"
>>                 value="org.eclipse.persistence.jpa.PersistenceProvider"/>
>>         </service-properties>
>>     </service>
>> </blueprint>
>>
>> Not the best way I think, but it works :-)
>>
>>
>> On Mon, Sep 10, 2012 at 9:16 PM, Charles Moulliard <[email protected]>wrote:
>>
>>> This message is related to the fact that Aries JPA is not able to find
>>> the JPA service from OSGI service
>>>
>>>
>>> http://grepcode.com/file/repo1.maven.org/maven2/org.apache.aries.jpa/org.apache.aries.jpa.container/0.3/org/apache/aries/jpa/container/impl/PersistenceBundleManager.java
>>> See line 556
>>>
>>> Can you check if EclipseLink well register an OSGI service with
>>> Interface name = "javax.persistence.provider" ?
>>>
>>>
>>> On Mon, Sep 10, 2012 at 3:20 PM, Michael Täschner <[email protected]
>>> > wrote:
>>>
>>>> Update,
>>>>
>>>> I installed the EclipseLink JPA OSGi bundle
>>>> (org.eclipse.persistence.osgi) containing persistenceProvider
>>>> implementation as declared in persistence.xml:
>>>> "<provider>org.eclipse.persistence.jpa.osgi.PersistenceProvider</provider>".
>>>>
>>>> Now the aries error message "There are no suitable providers for the
>>>> provider class name org.eclipse.persistence.jpa.osgi.PersistenceProvider
>>>> and version range null" turned into "There are no providers available" :
>>>> 2012-09-10 15:14:19,279 | WARN  | Event Dispatcher |
>>>> container                        | 239 - org.apache.aries.jpa.container -
>>>> 0.3.0 | There are no providers available.
>>>> 2012-09-10 15:14:19,281 | WARN  | Event Dispatcher |
>>>> container                        | 239 - org.apache.aries.jpa.container -
>>>> 0.3.0 | There are no providers available.
>>>> 2012-09-10 15:14:19,303 | INFO  | rint Extender: 3 |
>>>> BlueprintContainerImpl           | 9 - org.apache.aries.blueprint - 0.3.2 |
>>>> Bundle org.example.osgi.dao is waiting for dependencies
>>>> [(&(&(!(org.apache.aries.jpa.proxy.factory=*))(osgi.unit.name
>>>> =Customers))(objectClass=javax.persistence.EntityManagerFactory))]
>>>>
>>>> Yet still no idea, why it can't find the provider ? It is declared in
>>>> persistence.xml
>>>>
>>>> Any idea ?
>>>>
>>>> Thanks and Regards,
>>>> Michael
>>>>
>>>>
>>>> 2012/9/10 Michael Täschner <[email protected]>
>>>>
>>>>> Well, according to osgi:list they are also started (the previous
>>>>> output was from features:list):
>>>>> karaf@root> list -t 0 | grep JPA
>>>>> [ 195] [Active     ] [            ] [       ] [   30] Apache Geronimo
>>>>> JSR-317 JPA 2.0 Spec API (1.1)
>>>>> [ 196] [Active     ] [            ] [       ] [   30] Aries JPA
>>>>> Container API (0.3.0)
>>>>> [ 197] [Active     ] [Created     ] [       ] [   30] Aries JPA
>>>>> Container blueprint integration for Aries blueprint (0.3.0)
>>>>> [ 198] [Active     ] [            ] [       ] [   30] Aries JPA
>>>>> Container (0.3.0)
>>>>> [ 199] [Active     ] [            ] [       ] [   30] Aries JPA
>>>>> Container Managed Contexts (0.3.0)
>>>>>
>>>>> [ 209] [Active     ] [            ] [       ] [   80] EclipseLink JPA
>>>>> (2.0.0.v20091127-r5931)
>>>>>
>>>>> karaf@root> list -t 0 | grep JNDI
>>>>> [  72] [Active     ] [            ] [       ] [   30] Jetty :: JNDI
>>>>> Naming (7.5.4.v20111024)
>>>>> [ 175] [Active     ] [            ] [       ] [   30] Apache Aries
>>>>> JNDI API (0.3.0)
>>>>> [ 176] [Active     ] [            ] [       ] [   30] Apache Aries
>>>>> JNDI Core (0.3.0)
>>>>> [ 177] [Active     ] [            ] [       ] [   30] Apache Aries
>>>>> JNDI RMI Handler (0.3.0)
>>>>> [ 178] [Active     ] [            ] [       ] [   30] Apache Aries
>>>>> JNDI URL Handler (0.3.0)
>>>>> [ 179] [Active     ] [            ] [       ] [   30] Apache Aries
>>>>> JNDI Support for Legacy Runtimes (0.3.0)
>>>>>
>>>>>
>>>>> Regards,
>>>>> Michael
>>>>>
>>>>> 2012/9/10 Charles Moulliard <[email protected]>
>>>>>
>>>>>> They are installed but not started.
>>>>>>
>>>>>>
>>>>>> On Mon, Sep 10, 2012 at 1:47 PM, Michael Täschner <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> Hi,
>>>>>>> yes, I installed Aries JPA and JNDI features via console:
>>>>>>> [installed  ] [0.3            ] jpa
>>>>>>> karaf-enterprise-2.2.9 OSGi Persistence Container
>>>>>>> [installed  ] [0.3            ] jndi
>>>>>>> karaf-enterprise-2.2.9 OSGi Service Registry JNDI access
>>>>>>>
>>>>>>> Anything else required ?
>>>>>>>
>>>>>>> Regards,
>>>>>>> Michael
>>>>>>>
>>>>>>>
>>>>>>> 2012/9/10 Charles Moulliard <[email protected]>
>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> Have you also installed Aries JPA feature as you need it ?
>>>>>>>>
>>>>>>>> Regards,
>>>>>>>>
>>>>>>>>
>>>>>>>> On Mon, Sep 10, 2012 at 1:33 PM, Michael Täschner <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> I am trying to get Aries JPA running with EclipseLink (2.0.3) in
>>>>>>>>> Karaf container. DataSource is implemented as blueprint file and 
>>>>>>>>> referenced
>>>>>>>>> via Aries JNDI in persistence.xml.
>>>>>>>>>
>>>>>>>>> The bundles start ok (OSGi) but the bluepint for the DAO does not
>>>>>>>>> get initialized ("Failure"). There are also entries in the log ("not
>>>>>>>>> suitable providers") for which I have not found any info in google:
>>>>>>>>> 2012-09-10 11:25:02,070 | INFO  | raf-2.2.9/deploy |
>>>>>>>>> fileinstall                      | 6 - org.apache.felix.fileinstall - 
>>>>>>>>> 3.2.4
>>>>>>>>> | Started bundle:
>>>>>>>>> blueprint:file:/D:/work/karaf/apache-karaf-2.2.9/deploy/datasource_blueprint.xml
>>>>>>>>> 2012-09-10 11:25:07,178 | INFO  | raf-2.2.9/deploy |
>>>>>>>>> fileinstall                      | 6 - org.apache.felix.fileinstall - 
>>>>>>>>> 3.2.4
>>>>>>>>> | Uninstalled
>>>>>>>>> D:\work\karaf\apache-karaf-2.2.9\deploy\org.eclipse.equinox.console_1.0.0.v20120522-1841.jar
>>>>>>>>> 2012-09-10 13:06:19,558 | WARN  | raf-2.2.9/deploy |
>>>>>>>>> container                        | 198 - 
>>>>>>>>> org.apache.aries.jpa.container -
>>>>>>>>> 0.3.0 | There are no suitable providers for the provider class name
>>>>>>>>> org.eclipse.persistence.jpa.osgi.PersistenceProvider and version 
>>>>>>>>> range null.
>>>>>>>>> 2012-09-10 13:06:19,584 | INFO  | raf-2.2.9/deploy |
>>>>>>>>> fileinstall                      | 6 - org.apache.felix.fileinstall - 
>>>>>>>>> 3.2.4
>>>>>>>>> | Installed 
>>>>>>>>> D:\work\karaf\apache-karaf-2.2.9\deploy\dao-1.0.0-SNAPSHOT.jar
>>>>>>>>> 2012-09-10 13:06:19,825 | WARN  | Refresh Packages |
>>>>>>>>> container                        | 198 - 
>>>>>>>>> org.apache.aries.jpa.container -
>>>>>>>>> 0.3.0 | There are no suitable providers for the provider class name
>>>>>>>>> org.eclipse.persistence.jpa.osgi.PersistenceProvider and version 
>>>>>>>>> range null.
>>>>>>>>> 2012-09-10 13:06:19,863 | WARN  | raf-2.2.9/deploy |
>>>>>>>>> container                        | 198 - 
>>>>>>>>> org.apache.aries.jpa.container -
>>>>>>>>> 0.3.0 | There are no suitable providers for the provider class name
>>>>>>>>> org.eclipse.persistence.jpa.osgi.PersistenceProvider and version 
>>>>>>>>> range null.
>>>>>>>>> 2012-09-10 13:06:19,879 | WARN  | raf-2.2.9/deploy |
>>>>>>>>> container                        | 198 - 
>>>>>>>>> org.apache.aries.jpa.container -
>>>>>>>>> 0.3.0 | There are no suitable providers for the provider class name
>>>>>>>>> org.eclipse.persistence.jpa.osgi.PersistenceProvider and version 
>>>>>>>>> range null.
>>>>>>>>> 2012-09-10 13:06:19,879 | INFO  | raf-2.2.9/deploy |
>>>>>>>>> fileinstall                      | 6 - org.apache.felix.fileinstall - 
>>>>>>>>> 3.2.4
>>>>>>>>> | Started bundle:
>>>>>>>>> file:/D:/work/karaf/apache-karaf-2.2.9/deploy/dao-1.0.0-SNAPSHOT.jar
>>>>>>>>> 2012-09-10 13:06:19,992 | INFO  | rint Extender: 1 |
>>>>>>>>> BlueprintContainerImpl           | 9 - org.apache.aries.blueprint - 
>>>>>>>>> 0.3.2 |
>>>>>>>>> Bundle org.example.osgi.dao is waiting for dependencies
>>>>>>>>> [(&(&(!(org.apache.aries.jpa.proxy.factory=*))(osgi.unit.name
>>>>>>>>> =Customers))(objectClass=javax.persistence.EntityManagerFactory))]
>>>>>>>>> 2012-09-10 13:11:20,028 | ERROR | rint Extender: 1 |
>>>>>>>>> BlueprintContainerImpl           | 9 - org.apache.aries.blueprint - 
>>>>>>>>> 0.3.2 |
>>>>>>>>> Unable to start blueprint container for bundle org.example.osgi.dao 
>>>>>>>>> due to
>>>>>>>>> unresolved dependencies 
>>>>>>>>> [(&(&(!(org.apache.aries.jpa.proxy.factory=*))(
>>>>>>>>> osgi.unit.name
>>>>>>>>> =Customers))(objectClass=javax.persistence.EntityManagerFactory))]
>>>>>>>>> java.util.concurrent.TimeoutException
>>>>>>>>>     at
>>>>>>>>> org.apache.aries.blueprint.container.BlueprintContainerImpl$1.run(BlueprintContainerImpl.java:293)[9:org.apache.aries.blueprint:0.3.2]
>>>>>>>>>     at
>>>>>>>>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)[:1.6.0_31]
>>>>>>>>>     at
>>>>>>>>> java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)[:1.6.0_31]
>>>>>>>>>     at
>>>>>>>>> java.util.concurrent.FutureTask.run(FutureTask.java:138)[:1.6.0_31]
>>>>>>>>>     at
>>>>>>>>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)[:1.6.0_31]
>>>>>>>>>     at
>>>>>>>>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206)[:1.6.0_31]
>>>>>>>>>     at
>>>>>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)[:1.6.0_31]
>>>>>>>>>     at
>>>>>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)[:1.6.0_31]
>>>>>>>>>     at java.lang.Thread.run(Thread.java:662)[:1.6.0_31]
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> bundles:
>>>>>>>>> karaf@root> list
>>>>>>>>> START LEVEL 100 , List Threshold: 50
>>>>>>>>>    ID   State         Blueprint      Spring    Level  Name
>>>>>>>>> [  54] [Active     ] [            ] [       ] [   80] Apache Felix
>>>>>>>>> Declarative Services (1.6.1.SNAPSHOT)
>>>>>>>>> [  55] [Active     ] [            ] [       ] [   80] Sun
>>>>>>>>> Microsystems' JDBC Driver for MySQL (5.1.20)
>>>>>>>>> [ 173] [Active     ] [            ] [       ] [   50] Apache CXF
>>>>>>>>> Compatibility Bundle Jar (2.6.1)
>>>>>>>>> [ 203] [Active     ] [Created     ] [       ] [   80]
>>>>>>>>> datasource_blueprint.xml (0.0.0)
>>>>>>>>> [ 204] [Active     ] [            ] [       ] [   80]
>>>>>>>>> eclipselink_feature.xml (0.0.0)
>>>>>>>>> [ 205] [Active     ] [            ] [       ] [   80] Java
>>>>>>>>> Persistence API 2.0 (2.0.3.v201010191057)
>>>>>>>>> [ 206] [Active     ] [            ] [       ] [   80] EclipseLink
>>>>>>>>> ANTLR (2.0.0.v20091127-r5931)
>>>>>>>>> [ 207] [Active     ] [            ] [       ] [   80] EclipseLink
>>>>>>>>> ASM (2.0.0.v20091127-r5931)
>>>>>>>>> [ 208] [Active     ] [            ] [       ] [   80] EclipseLink
>>>>>>>>> Core (2.0.0.v20091127-r5931)
>>>>>>>>> [ 209] [Active     ] [            ] [       ] [   80] EclipseLink
>>>>>>>>> JPA (2.0.0.v20091127-r5931)
>>>>>>>>> [ 212] [Active     ] [Failure     ] [       ] [   80] dao
>>>>>>>>> (1.0.0.SNAPSHOT)
>>>>>>>>>
>>>>>>>>> Any hint would be welcome.
>>>>>>>>>
>>>>>>>>> Thanks and Regards,
>>>>>>>>> Michael
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Charles Moulliard
>>>>>>>> Apache Committer / Sr. Pr. Consultant at FuseSource.com
>>>>>>>> Twitter : @cmoulliard
>>>>>>>> Blog : http://cmoulliard.blogspot.com
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Charles Moulliard
>>>>>> Apache Committer / Sr. Pr. Consultant at FuseSource.com
>>>>>> Twitter : @cmoulliard
>>>>>> Blog : http://cmoulliard.blogspot.com
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>>
>>> --
>>> Charles Moulliard
>>> Apache Committer / Sr. Pr. Consultant at FuseSource.com
>>> Twitter : @cmoulliard
>>> Blog : http://cmoulliard.blogspot.com
>>>
>>>
>>>
>>
>

Reply via email to