Adrain , while making the changes related to JBAS-4662 in the trunk I noticed that
1) The ha behavior in the xa-datasource configuration is not working as expected .
I tested the following configuration
<xa-datasource>
|
| <jndi-name>XAOracleDS1</jndi-name>
|
<reauthentication-mechanism>org.jboss.resource.adapter.jdbc.vendor.DummyReauthenticationMechanism</reauthentication-mechanism>
| <user-name>scott</user-name>
| <password>tiger</password>
| <track-connection-by-tx/>
| <isSameRM-override-value>false</isSameRM-override-value>
| <connection-property
name="connectionProperties">key=Value</connection-property>
|
<xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
| <xa-datasource-property
name="URL">jdbc:oracle:thin:@localhost:1527|jdbc:oracle:thin:@localhost:1523|jdbc:oracle:thin:@localhost:1524|jdbc:oracle:thin:@localhost:1521</xa-datasource-property>
| <url-delimiter>|</url-delimiter>
| <url-property>URL</url-property>
| <!-- xa-datasource-property
name="User">scott</xa-datasource-property -->
| <!-- xa-datasource-property
name="Password">tiger</xa-datasource-property -->
| <!-- xa-datasource-property
name="ConnectionProperties">XATransLoose=true</xa-datasource-property
-->
| <min-pool-size>1</min-pool-size>
| <max-pool-size>5</max-pool-size>
| <prefill>true</prefill>
| <!-- Uses the pingDatabase method to check a connection is still valid before
handing it out from the pool -->
|
<!--valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleValidConnectionChecker</valid-connection-checker-class-name-->
| <!-- Checks the Oracle error codes and messages for fatal errors -->
| <!--
exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name
-->
| <!-- Oracles XA datasource cannot reuse a connection outside a transaction once
enlisted in a global transaction and vice-versa -->
| <no-tx-separate-pools/>
| <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional)
-->
| <metadata>
| <type-mapping>Oracle9i</type-mapping>
| </metadata>
|
| </xa-datasource>
And I get this exception
08:04:40,585 INFO [ConnectionFactoryBindingService] Unbound ConnectionManager
'jboss.jca:service=DataSourceBinding,name=XAOracleDS1' from JNDI name
'java:XAOracleDS1'
| 08:04:48,109 WARN [JBossManagedConnectionPool] Unable to fill pool
| org.jboss.resource.JBossResourceException: Could not create connection; - nested
throwable: (java.sql.SQLException: Io exception: Invalid connection string format, a valid
format is: "host:port:sid" )
| at
org.jboss.resource.adapter.jdbc.xa.XAManagedConnectionFactory.getXAManagedConnection(XAManagedConnectionFactory.java:452)
| at
org.jboss.resource.adapter.jdbc.xa.XAManagedConnectionFactory.createManagedConnection(XAManagedConnectionFactory.java:405)
| at
org.jboss.resource.connectionmanager.InternalManagedConnectionPool.createConnectionEventListener(InternalManagedConnectionPool.java:611)
| at
org.jboss.resource.connectionmanager.InternalManagedConnectionPool.fillToMin(InternalManagedConnectionPool.java:527)
| at org.jboss.resource.connectionmanager.PoolFiller.run(PoolFiller.java:74)
| at java.lang.Thread.run(Thread.java:595)
| Caused by: java.sql.SQLException: Io exception: Invalid connection string format, a
valid format is: "host:port:sid"
| at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
| at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
| at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
| at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
| at
oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:414)
| 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
oracle.jdbc.pool.OracleDataSource.getPhysicalConnection(OracleDataSource.java:297)
| at
oracle.jdbc.xa.client.OracleXADataSource.getPooledConnection(OracleXADataSource.java:456)
| at
oracle.jdbc.xa.client.OracleXADataSource.getXAConnection(OracleXADataSource.java:143)
| at
oracle.jdbc.xa.client.OracleXADataSource.getXAConnection(OracleXADataSource.java:129)
| at
org.jboss.resource.adapter.jdbc.xa.XAManagedConnectionFactory.getXAManagedConnection(XAManagedConnectionFactory.java:444)
| ... 5 more
| 08:04:49,844 INFO [ConnectionFactoryBindingService] Bound ConnectionManager
'jboss.jca:service=DataSourceBinding,name=XAOracleDS1' to JNDI name
'java:XAOracleDS1'
In the above configuration the last URL is valid so it should have been considered but the
deployment does not consider the chain of URL's seperated by url delimiter .
2) The similar changes in the local-tx-datasource works as expected .
I have noticed that this from the logs
2008-04-23 08:04:43,856 DEBUG
[org.jboss.resource.adapter.jdbc.xa.XAManagedConnectionFactory] (HDScanner) inside the
initSelectornull
|
which appears to be coming from
private void initSelector() throws JBossResourceException
| {
| log.debug("inside the initSelector"+urlProperty);
| if(urlProperty != null && urlProperty.length() > 0)
| {
| String urlsStr = xaProps.getProperty(urlProperty);
| if(urlsStr != null && urlsStr.trim().length() > 0 &&
urlDelimiter != null && urlDelimiter.trim().length() > 0)
| {
| List xaDataList = new ArrayList();
I also confirmed that the JBAS-4662 changes are not causing this issue , will have to see
how the Deployment builder populate the values from the MetaData into the MBeanService
through the ServiceMetaData .
Any thoughts here ?
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4146020#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...