If you are going to used Managed Data Source the transaction manager is required. However, you are not forced to. I just pasted you with a working example of my own.
Regarding the transaction manager bean, you can you aries transaction (which is a wrapper of the geronimo transaction manager). On Thu, Oct 28, 2010 at 8:53 PM, Mike Van <[email protected]> wrote: > > > > I added all of your properties with the exception of "validationQuery" and > "transactionManager. > > > > We dont' use a validation query, so I didn't include it. Is that required > for OSGI/Oracle? > > > > Could you please include your transaction manager bean? Is that required? > > > > v/r, > > > > Mike Van > > > > > ----- Original Message ----- > From: "iocanel [via Karaf]" < > [email protected]<ml-node%[email protected]> > > > To: "Mike Van" <[email protected]> > Sent: Thursday, October 28, 2010 4:36:43 AM > Subject: Re: Karaf Spring Hibernate DBCP issue > > Hi Mike, > > I have seen a similar (if not the same error). When you use dbcpb & spring > you must keep in mind that the properties will be set on the JDBC driver > instance using reflection. In some cases this can be source of problems. > > Anyway here is something that works for me (using managed datasource): > > <bean id="myDataSource" > class="org.apache.commons.dbcp.managed.BasicManagedDataSource" > destroy-method="close"> > <property name="driverClassName" > value="${db.driver.class}"/> > <property name="url" value="${db.url}"/> > <property name="username" value="${db.user}"/> > <property name="password" value="${db.password}"/> > <property name="maxIdle" value="10"/> > <property name="maxActive" value="100"/> > <property name="maxWait" value="10000"/> > <property name="validationQuery" value="select 1 from > dual"/> > <property name="testOnBorrow" value="false"/> > <property name="testWhileIdle" value="true"/> > <property name="timeBetweenEvictionRunsMillis" > value="1200000"/> > <property name="minEvictableIdleTimeMillis" > value="1800000"/> > <property name="numTestsPerEvictionRun" value="5"/> > <property name="defaultAutoCommit" value="false"/> > <property name="transactionManager" > ref="transactionManager"/> > </bean> > > I have tried that using version 10.2.0.2 oracle driver from springsource > ebr and dbcp version 1.4. > db.url = jdbc:oracle:thin:@${IP}:${PORT}:${DB} > db.driver.class = oracle.jdbc.driver.OracleDriver > > I have successfully deployed that inside karaf. > > > > On Thu, Oct 28, 2010 at 5:46 AM, Mike Van < [hidden email] > wrote: > > > > > > All, > > > > I believe this is an issue caused by a property not being set when > initializing Oracle. To verify this, I posted the following to the > http://forums.oracle.com/forums/thread.jspa?threadID=1981858&tstart=0 . > I've seen this bug on a number of help-sites with no clear answer, so lets > hope I can nudge them and tell me what I'm missing!! And, apologies for the > truncated message. > > > > > > ------------- Posted to Oracle Forums ---------------- > When connecting to Oracle 10G from Java using Hibernate through Karaf, I > recieve the following exception string: > > > Caused by: org.springframework.beans.factor.BeanCreationException: Error > creating bean with name 'myAppSessionFactory' defined in class path > > resource [myApp/util/dataSource/applicationContext.xml]: Invocation of init > method failed; nexted exception is > > java.lang.ArrayIndexOutOfBoundsException: -1 > more exceptions > .. 58 more > Caused by: java.lang.ArrayIndexOutOfBoundsException: -1 > at > oracle.jdbc.driver.T4CTTIoauthenticate.setSessionFields(T4CTTI0authenticate.java:972) > at > oracle.jdbc.driver.T4CTTIoauthenticate.<init>(T4CTTI0authenticate.java:185) > at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:352) > at > oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:441) > at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165) > at > oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35) > at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801) > at > org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38) > at > org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:294) > at > org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1240) > at > org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1240) > at > org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:882) > at > org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getconnection(LocalDataSourceConnectionProvider.java:81) > > When tracing through the application with a debugger, I see that the > exception is a nullPointerException thrown right after > T4CTTIoauthenticate.setSessionFields sets the class value "aclValue" to an > empty array "[]". > > When T4CTTIoauthenticate.setSessionFields is called, the following > properties are passed in to it: > {user=myAppUser, password=myAppPwd, protocol=thin} > > The following is the spring code used to set-up the connection: > > <bean id="myAppPoolDataSource" > class="org.apache.commons.dbcp.BasicDataSource" > destroy-method="close > p:driverclassName="${myApp.db.driver}" > p:url="${myApp.url}" > p:username="${myApp.userName}" > p:password="${myApp.password}" > p:maxActive="${myApp.maxActive}" > p:initialSize="${myApp.initialSize}" > /> > > <bean id="myAppSessionFactory" > class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" > p:dataSource-ref="myAppPoolDataSource"> > <property name="mappingResources"> > <list> > <value>myApp/util/TableOne.hbm.xml</value> > <value>myApp/util/TableTwo.hbm.xml</value> > <value>myApp/util/TableThree.hbm.xml</value> > </list> > </property> > </bean> > > > > The oracle .jar is: > mvn:com.oracle/ojdbc14/10.2.0.4.0 > > The important properties are: > > myApp.db.driver is set to oracle.jdbc.driver.OracleDriver > myApp.url is set to: jdbc:oracle:thin:@<ip>:<port>:sandbox > > We are using Oracle10G, Spring 3.0.3.RELEASE, Karaf 2.0.0, and > org.apache.commons.dbcp for connection pooling. However, it appears to be > failing inside of the Oracle driver. Any help would be greatly appreciated. > I am unable to diagnose any further without source-code, and we would like > to continue using Oracle for our database. > > > > > > On Wed, Oct 27, 2010 at 19:41, Mike Van < [hidden email] > wrote: > > View message @ > http://karaf.922171.n3.nabble.com/Karaf-Spring-Hibernate-DBCP-issue-tp1781634p1781852.html > To start a new topic under Karaf - User, email [hidden email] > To unsubscribe from Karaf - User, click here . > > -- > View this message in context: > http://karaf.922171.n3.nabble.com/Karaf-Spring-Hibernate-DBCP-issue-tp1781634p1784093.html > > > > Sent from the Karaf - User mailing list archive at Nabble.com. > > > > -- > Ioannis Canellos > http://iocanel.blogspot.com > > Integration Engineer @ Upstream S.A. > > > > Ioannis Canellos > http://iocanel.blogspot.com > > > > View message @ > http://karaf.922171.n3.nabble.com/Karaf-Spring-Hibernate-DBCP-issue-tp1781634p1785067.html > To start a new topic under Karaf - User, email > [email protected]<ml-node%[email protected]> > To unsubscribe from Karaf - User, click here . > > -- > View this message in context: > http://karaf.922171.n3.nabble.com/Karaf-Spring-Hibernate-DBCP-issue-tp1781634p1787887.html > Sent from the Karaf - User mailing list archive at Nabble.com. > -- *Ioannis Canellos* http://iocanel.blogspot.com Integration Engineer @ Upstream S.A. <http://www.upstreamsystems.com>
