[jboss-jira] [JBoss JIRA] (JBJCA-1380) XAManagedConnectionFactory screws up Datasource urls containing ;
Chris Poulsen (JIRA)
issues at jboss.org
Wed Aug 1 04:54:04 EDT 2018
[ https://issues.jboss.org/browse/JBJCA-1380?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Chris Poulsen updated JBJCA-1380:
---------------------------------
Description:
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;MODE=Oracle"
I was unable to deploy the datasource using:
<xa-datasource-property name="url">jdbc:h2:mem:unit-test;MODE=Oracle</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}
was:
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}
> 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;MODE=Oracle"
> I was unable to deploy the datasource using:
> <xa-datasource-property name="url">jdbc:h2:mem:unit-test;MODE=Oracle</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