[jboss-jira] [JBoss JIRA] (JBJCA-1380) XAManagedConnectionFactory screws up Datasource urls containing ;
Chris Poulsen (JIRA)
issues at jboss.org
Wed Aug 1 04:53:00 EDT 2018
[ https://issues.jboss.org/browse/JBJCA-1380?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Chris Poulsen updated JBJCA-1380:
---------------------------------
Attachment: XAManagedConnectionFactory-h2-error.txt
> XAManagedConnectionFactory screws up Datasource urls containing ;
> -----------------------------------------------------------------
>
> Key: JBJCA-1380
> URL: https://issues.jboss.org/browse/JBJCA-1380
> Project: IronJacamar
> Issue Type: Bug
> Components: JDBC
> Affects Versions: 1.4.9
> Environment: Unit testing using an embedded ironjacamar
> Reporter: Chris Poulsen
> Attachments: XAManagedConnectionFactory-h2-error.txt
>
>
> While trying to adjust settings on the H2 data source we use for a corner of our system during testing, I ran into problems.
> H2 accepts parameters appended to the url on the form ";<name>=<value>" for example:
> "jdbc:h2:mem:unit-test;DB_CLOSE_DELAY=-1"
> I was unable to deploy the datasource using:
> <xa-datasource-property name="url">jdbc:h2:mem:unit-test;DB_CLOSE_DELAY=-1</xa-datasource-property>
> Ironjacamar keeps complaining about:
> Caused by: java.lang.NoSuchMethodException: Method setMODE not found some setter not being found.
> My initial thought was that <url-delimiter> was the cause, but no dice.
> Following the trace into the sources, I guess the offending line is:
> {code:java}
> xaDataSourceProperties = xaDataSourceProperties.replace(';', '\n');
> {code}
> In XAManagedConnectionFactory around line: 174 (see following snippet)
> {code:java}
> public void setXADataSourceProperties(String xaDataSourceProperties) throws ResourceException
> {
> this.xaDataSourceProperties = xaDataSourceProperties;
> xaProps.clear();
> if (xaDataSourceProperties != null)
> {
> // Map any \ to \\
> xaDataSourceProperties = xaDataSourceProperties.replaceAll("\\\\", "\\\\\\\\");
> // Map any ; to \n
> xaDataSourceProperties = xaDataSourceProperties.replace(';', '\n');
> InputStream is = new ByteArrayInputStream(xaDataSourceProperties.getBytes());
> try
> {
> Properties p = new Properties();
> p.load(is);
> for (Map.Entry<Object, Object> entry : p.entrySet())
> {
> xaProps.put((String)entry.getKey(), (String)entry.getValue());
> }
> }
> {code}
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
More information about the jboss-jira
mailing list