[jboss-jira] [JBoss JIRA] (JBJCA-1380) XAManagedConnectionFactory screws up Datasource urls containing ;

Chris Poulsen (JIRA) issues at jboss.org
Wed Aug 1 04:51:03 EDT 2018


Chris Poulsen created JBJCA-1380:
------------------------------------

             Summary: 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


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