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" 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" value="DefaultDataSource"/>
      <entry key="aries.xa.name" value="DefaultDataSource" />
      <entry key="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" value="DefaultDataSource"/>
      <entry key="aries.xa.name" value="DefaultDataSource" />
      <entry key="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=DefaultDataS
 ource;aries.xa.name=DefaultDataSource;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]>
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]
> http://blog.nanthrax.net
> Talend - http://www.talend.com
>

Reply via email to