Error: Creating a Connection Pool: issue with valid transaction levels

Server: SunOS 5.8 Generic_117350-27 sun4u sparc SUNW,UltraAX-MP

App Server: Sun Java System Application Server 8.2

Jar: ojdbc14.jar

Datasource Classname: oracle.jdbc.pool.OracleConnectionPoolDataSource

Resource Type: javax.sql.ConnectionPoolDataSource

Using /SUNWappserver/lib/ojdbc14.jar, when I create my connection pool in Sun Java System Application Server 8.2, I return the following error each time I try to start the domain:

[#|2006-07-28T14:53:56.169-0500|WARNING|sun-appserver-pe8.2|javax.enterprise.re source.resourceadapter|_ThreadID=11;|RAR5117 : Failed to obtain/create connection. Reason : The isolation level could not be set: READ_COMMITTED and SERIALIZABLE are the only valid transaction levels|#]

When I change the value to "SERIALIZABLE" in my domain.xml file, I receive the following error in my server.log:

Caused by: org.xml.sax.SAXParseException: Attribute "transaction-isolation-level" with value "SERIALIZABLE" must have a value from the list "read-uncommitted read-committed repeatable-read serializable ".

So, I'm stuck!

I can't use the values READ_COMMITTED or SERIALIZABLE since the valid values are "read-uncommitted read-committed repeatable-read serializable ".

Case sensitivity matters.

Any thoughts or help would be greatly appreciated.

Thanks,

--Todd

[1378 byte] By [jtp512] at [2007-11-14]
# 1

Hi Todd,

Different databases will allow different transaction isolation levels.

Oracle allows only READ_COMMITTED and SERIALIZABLE isolation levels by default.

" READ_COMMITTED and SERIALIZABLE are the only valid transaction levels "

is the exception thrown by Oracle driver.

Through app. server values are set as "read-uncommitted read-committed repeatable-read serializable".

Internally app. server might set the transaction isolation level for a connection using JDBC API.

eg:

con.setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ );

This is not a bug/error

Thanks,

-Jagadish

JagadishPrasath at 2007-7-6 > top of java,Application & Integration Servers,Application Servers...
# 2
I agree, I don't think it's a bug or error.I just had thought that since I could set the transaction level in the app server some without going back and touching my source code.Thanks,--Todd
jtp512 at 2007-7-6 > top of java,Application & Integration Servers,Application Servers...
# 3
I set the transaction level when creating the Pool as read-comitted from the asaadmin console.Yet i am getting this error.
chanakya_iitkgp at 2007-7-6 > top of java,Application & Integration Servers,Application Servers...
# 4
Can you please post the connection pool configuration from domain.xml and the exceptions that you get in server.log ?
JagadishPrasath at 2007-7-6 > top of java,Application & Integration Servers,Application Servers...
# 5

<jdbc-connection-pool allow-non-component-callers="false" connection-validation-method="table" datasource-classname="oracle.jdbc.xa.client.OracleXADataSource" fail-all-

connections="true" idle-timeout-in-seconds="300" is-connection-validation-required="true" is-isolation-level-guaranteed="false" max-pool-size="32" max-wait-time-in-millis="

60000" name="MyPoolOracle" non-transactional-connections="false" pool-resize-quantity="2" res-type="javax.sql.XADataSource" steady-pool-size="8" transaction-isolation

-level="serializable" validation-table-name="DUAL">

<property name="password" value="mostsecret"/>

<property name="user" value="system"/>

<property name="SID" value="xe"/>

<property name="portNumber" value="1521"/>

<property name="serverName" value="myhost"/>

<property name="URL" value="jdbc:oracle:oci:@myhost:1521:xe"/>

</jdbc-connection-pool>

What happens is that the Ping works fine with this (it does not if I change the isolation level to something not supported), but deploy fails when Toplink tries to create the tables for entities.

hvesalai at 2007-7-6 > top of java,Application & Integration Servers,Application Servers...
# 6

And the log:

[#|2007-02-22T12:50:41.357+0200|WARNING|sun-appserver-pe9.0|javax.enterprise.re source.resourceadapter|_ThreadID=18;_ThreadName=Thread-59;The isolation level could not be se

t: READ_COMMITTED and SERIALIZABLE are the only valid transaction levels;_RequestID=993fc463-133b-45bc-983b-b44c287b04d9;|RAR5117 : Failed to obtain/create connection. Reas

on : The isolation level could not be set: READ_COMMITTED and SERIALIZABLE are the only valid transaction levels|#]

[#|2007-02-22T12:50:41.358+0200|WARNING|sun-appserver-pe9.0|javax.enterprise.re source.resourceadapter|_ThreadID=18;_ThreadName=Thread-59;Error in allocating a connection. C

ause: The isolation level could not be set: READ_COMMITTED and SERIALIZABLE are the only valid transaction levels;_RequestID=993fc463-133b-45bc-983b-b44c287b04d9;|RAR5114 :

Error allocating connection : [Error in allocating a connection. Cause: The isolation level could not be set: READ_COMMITTED and SERIALIZABLE are the only valid transactio

n levels]|#]

[#|2007-02-22T12:50:41.389+0200|SEVERE|sun-appserver-pe9.0|javax.enterprise.sys tem.tools.deployment|_ThreadID=18;_ThreadName=Thread-59;_RequestID=993fc463-133b -45bc-983b-b4

4c287b04d9;|Exception occured in J2EEC Phase

com.sun.enterprise.deployment.backend.IASDeploymentException:

Internal Exception: java.sql.SQLException: Error in allocating a connection. Cause: The isolation level could not be set: READ_COMMITTED and SERIALIZABLE are the only valid

transaction levelsError Code: 0

at oracle.toplink.essentials.exceptions.DatabaseException.sqlException(DatabaseExc eption.java:289)

at oracle.toplink.essentials.jndi.JNDIConnector.connect(JNDIConnector.java:135)

at oracle.toplink.essentials.sessions.DatasourceLogin.connectToDatasource(Datasour ceLogin.java:170)

at oracle.toplink.essentials.internal.sessions.DatabaseSessionImpl.loginAndDetectD atasource(DatabaseSessionImpl.java:537)

at oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider.login(EntityMan agerFactoryProvider.java:180)

at oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerSetupImpl.deploy(Entit yManagerSetupImpl.java:191)

at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerFactoryImpl.getSe rverSession(EntityManagerFactoryImpl.java:78)

at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerFactoryImpl.creat eEntityManagerImpl(EntityManagerFactoryImpl.java:113)

at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerFactoryImpl.creat eEntityManagerImpl(EntityManagerFactoryImpl.java:107)

at oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerFactoryImpl.createEnti tyManager(EntityManagerFactoryImpl.java:76)

at com.sun.jdo.spi.persistence.support.ejb.ejbc.PersistenceProcessor.loadPersisten ceUnitBundle(PersistenceProcessor.java:468)

at com.sun.jdo.spi.persistence.support.ejb.ejbc.PersistenceProcessor.createTablesI nDB(PersistenceProcessor.java:325)

at com.sun.jdo.spi.persistence.support.ejb.ejbc.PersistenceProcessor.processAppBun dle(PersistenceProcessor.java:190)

at com.sun.jdo.spi.persistence.support.ejb.ejbc.PersistenceProcessor.processApplic ation(PersistenceProcessor.java:125)

at com.sun.jdo.spi.persistence.support.ejb.ejbc.DeploymentEventListenerImpl.proces sApplication(DeploymentEventListenerImpl.java:193)

at com.sun.jdo.spi.persistence.support.ejb.ejbc.DeploymentEventListenerImpl.proces sEvent(DeploymentEventListenerImpl.java:152)

at com.sun.jdo.spi.persistence.support.ejb.ejbc.DeploymentEventListenerImpl.notify DeploymentEvent(DeploymentEventListenerImpl.java:109)

at com.sun.enterprise.deployment.backend.DeploymentEventManager.notifyDeploymentEv ent(DeploymentEventManager.java:66)

at com.sun.enterprise.deployment.backend.AppDeployer.postDeploy(AppDeployer.java:4 29)

at com.sun.enterprise.deployment.backend.AppDeployer.deploy(AppDeployer.java:225)

at com.sun.enterprise.deployment.backend.AppDeployer.doRequestFinish(AppDeployer.j ava:129)

at com.sun.enterprise.deployment.phasing.J2EECPhase.runPhase(J2EECPhase.java:169)

at com.sun.enterprise.deployment.phasing.DeploymentPhase.executePhase(DeploymentPh ase.java:95)

at com.sun.enterprise.deployment.phasing.PEDeploymentService.executePhases(PEDeplo ymentService.java:871)

at com.sun.enterprise.deployment.phasing.PEDeploymentService.deploy(PEDeploymentSe rvice.java:266)

at com.sun.enterprise.deployment.phasing.PEDeploymentService.deploy(PEDeploymentSe rvice.java:739)

at com.sun.enterprise.management.deploy.DeployThread.deploy(DeployThread.java:174)

at com.sun.enterprise.management.deploy.DeployThread.run(DeployThread.java:210)

|#]

hvesalai at 2007-7-6 > top of java,Application & Integration Servers,Application Servers...
# 7

This exception comes from oracle/ oracle jdbc driver.

"ORA-17030

READ_COMMITTED and SERIALIZABLE are the only valid transaction levels "

can be found in :

http://download-east.oracle.com/docs/cd/A97688_16/generic.903/a96654/ermesap.ht m

Ping utility is used to check whether database settings are correct to talk to the database.

Try setting the same isolation levels (READ_COMMITTED, SERIALIZABLE) with a standalone java program. You might get the same exception.

Thanks,

-Jagadish

JagadishPrasath at 2007-7-6 > top of java,Application & Integration Servers,Application Servers...