[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