You can use blueprint:cm to use ConfigAdmin in the blueprint datasource.

Regards
JB

On 12/03/2015 04:20 PM, Marc Durand wrote:
Hi JB,

I believe it is the connection pool.  I was creating the datasource with
blueprint like so:

    <bean id="DefaultDataSource"
class="com.microsoft.sqlserver.jdbc.SQLServerConnectionPoolDataSource">
       <property name="serverName" value="${Default.server}" />
       <property name="user" value="${Default.username}" />
       <property name="password" value="${Default.password}" />
    </bean>
    <bean id="DefaultDataSourcePool"
class="org.apache.commons.dbcp.datasources.SharedPoolDataSource"
destroy-method="close">
       <property name="connectionPoolDataSource" ref="DefaultDataSource" />
       <property name="maxActive" value="${Default.pool.maxActive}" />
       <property name="maxIdle" value="${Default.pool.maxIdle}" />
       <property name="maxWait" value="${Default.pool.maxWait}" />
       <property name="validationQuery"
value="${Default.pool.validationQuery}" />
    </bean>
    <service ref="DefaultDataSourcePool" interface="javax.sql.DataSource">
       <service-properties>
          <entry key="osgi.jndi.service.name
<http://osgi.jndi.service.name>" value="DefaultDataSource" />
       </service-properties>
    </service>

I now know that it is incorrect because that configuration is for the
Apache DBCP.  So I changed it to this which works:

<bean id="DefaultDataSource"
class="com.microsoft.sqlserver.jdbc.SQLServerConnectionPoolDataSource">
    <property name="serverName" value="${Default.server}" />
    <property name="user" value="${Default.username}" />
    <property name="password" value="${Default.password}" />
</bean>
<service ref="DefaultDataSource" interface="javax.sql.DataSource">
    <service-properties>
       <entry key="osgi.jndi.service.name <http://osgi.jndi.service.name>"
value="DefaultDataSource"/>
       <entry key="aries.xa.name <http://aries.xa.name>" value="DefaultDataSource" 
/>
       <entry key="datasource.name <http://datasource.name>"
value="DefaultDataSource"/>
       <entry key="aries.xa.poolMaxSize" value="200" />
    </service-properties>
</service>

But, I don't want to hardcode the pool size in the blueprint.xml file.
I would like to use config admin and do something like this:

<bean id="DefaultDataSource"
class="com.microsoft.sqlserver.jdbc.SQLServerConnectionPoolDataSource">
    <property name="serverName" value="${Default.server}" />
    <property name="user" value="${Default.username}" />
    <property name="password" value="${Default.password}" />
</bean>
<service ref="DefaultDataSource" interface="javax.sql.DataSource">
    <service-properties>
       <entry key="osgi.jndi.service.name <http://osgi.jndi.service.name>"
value="DefaultDataSource"/>
       <entry key="aries.xa.name <http://aries.xa.name>" value="DefaultDataSource" 
/>
       <entry key="datasource.name <http://datasource.name>"
value="DefaultDataSource"/>
       <entry key="aries.xa.poolMaxSize" value="${Default.aries.xa.poolMaxSize}" 
/>
    </service-properties>
</service>


The Maven bundle plugin complains about it:

003: No translation found for macro:
Default.aries.xa.connectionMaxWaitMilliseconds, in -----------------
Warnings
000: Unused Private-Package instructions, no such package(s) on the
class path: [!*]
001: No translation found for macro: Default.aries.xa.exceptionSorter,
in -----------------
Warnings
000: Unused Private-Package instructions, no such package(s) on the
class path: [!*]


And with 4 similar data sources, the build takes over 30 seconds and
eventually runs out of memory.  I noticed that those macros (like
${Default.aries.xa.poolMaxSize}) then get included in the MANIFEST.MF
file, which is not what I want:

Export-Service: javax.sql.DataSource;osgi.jndi.service.name
<http://osgi.jndi.service.name>=DefaultDataS
  ource;aries.xa.name
<http://aries.xa.name>=DefaultDataSource;datasource.name
<http://datasource.name>=DefaultDataSource
  ;aries.xa.exceptionSorter=${Default.aries.xa.exceptionSorter};aries.xa.
  connectionMadIdleMinutes=${Default.aries.xa.connectionMadIdleMinutes};a
  ries.xa.connectionMaxWaitMilliseconds=${Default.aries.xa.connectionMaxW
  aitMilliseconds};aries.xa.pooling=${Default.aries.xa.pooling};aries.xa.
  poolMaxSize=${Default.aries.xa.poolMaxSize};aries.xa.poolMinSize=${Defa
  ult.aries.xa.poolMinSize};aries.xa.validateOnMatch=${Default.aries.xa.v
  alidateOnMatch};aries.xa.backgroundValidation=${Default.aries.xa.backgr
  oundValidation};aries.xa.backgroundValidationMilliseconds=${Default.ari
  es.xa.backgroundValidationMilliseconds}


So, is it possible to configure a data source in blueprint when using
the pax-jdbc-pool-aries where the configuration would be in the etc
directory?

Thanks in advance,
Marc


On Thu, Dec 3, 2015 at 12:36 AM, Jean-Baptiste Onofré <[email protected]
<mailto:[email protected]>> wrote:

    Hi Marc,

    do you think it's the transaction pool ? Maybe it's the connection
    pool ?

    For transaction, you can override the default value by creating
    etc/org.apache.aries.transaction.cfg file (or using the config:*
    commands).

    The default values provided by the feature are:

                 aries.transaction.recoverable = true
                 aries.transaction.timeout = 600
                 aries.transaction.howl.logFileDir = ${karaf.data}/txlog
                 aries.transaction.howl.maxLogFiles = 2
                 aries.transaction.howl.maxBlocksPerFile = 512
                 aries.transaction.howl.bufferSize = 4

    For the datasource, it depends how you created the datasource.

    Did you use the jdbc:* commands to create the datasource ?

    Regards
    JB


    On 12/03/2015 03:57 AM, Marc Durand wrote:

        Hello - I am using Karaf 3.0.5 and noticed that I cannot run
        more than 10
        simultaneous database queries because the pool runs out of
        connections.  I
        found the limit to be set to 10 in
        org.apache.aries.transaction.jdbc-2.1.0.jar
        (org.apache.aries.transaction.jdbc.internal.ConnectionManagerFactory)
        where
        I found this line: "private int poolMaxSize = 10;" and also in
        ManagedDataSourceFactory class:
        "cm.setPoolMaxSize(getInt("aries.xa.poolMaxSize", 10));"

        My question is, how can I increase this value?

        Thanks,
        Marc







        --
        View this message in context:
        http://karaf.922171.n3.nabble.com/Aries-pool-max-size-tp4044047.html
        Sent from the Karaf - User mailing list archive at Nabble.com.


    --
    Jean-Baptiste Onofré
    [email protected] <mailto:[email protected]>
    http://blog.nanthrax.net
    Talend - http://www.talend.com



--
Jean-Baptiste Onofré
[email protected]
http://blog.nanthrax.net
Talend - http://www.talend.com

Reply via email to