[
https://issues.apache.org/jira/browse/CAMEL-11590?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Rafał Gała updated CAMEL-11590:
-------------------------------
Description:
When using a custom *AS400ConnectionPool* for *Jt400Component*
(*connectionPool* URI parameter), an unnecessary connection is opened to an
AS400 system nevertheless. This happens only when the
*resolvePropertyPlaceholders* property is set to *true* (there are getters
called by reflection at some point from *IntrospectionSupport* class).
This connection will never be used when using a custom *AS400ConnectionPool*,
as the *createEndpoint* method in Jt400Component class checks if we use custom
or default pool:
{code:java}
@Override
protected Endpoint createEndpoint(String uri, String remaining, Map<String,
Object> properties) throws Exception {
AS400ConnectionPool connectionPool;
if (properties.containsKey(CONNECTION_POOL)) {
LOG.trace("AS400ConnectionPool instance specified in the URI - will
look it up.");
// We have chosen to handle the connectionPool option ourselves, so
// we must remove it from the given parameter list (see
// http://camel.apache.org/writing-components.html)
String poolId = properties.remove(CONNECTION_POOL).toString();
connectionPool =
EndpointHelper.resolveReferenceParameter(getCamelContext(), poolId,
AS400ConnectionPool.class, true);
} else {
LOG.trace("No AS400ConnectionPool instance specified in the URI - one
will be provided.");
connectionPool = getConnectionPool();
}
String type = remaining.substring(remaining.lastIndexOf(".") +
1).toUpperCase();
Jt400Endpoint endpoint = new Jt400Endpoint(uri, this, connectionPool);
setProperties(endpoint, properties);
endpoint.setType(Jt400Type.valueOf(type));
return endpoint;
}
{code}
and uses the one provided instead.
I've attached a patch which changes behaviour of the *createEndpoint* method to
close the previously initialized default connection when the provided one
should be used instead. This is not a very elegant solution though.
was:
When using a custom *AS400ConnectionPool* for *Jt400Component*
(*connectionPool* URI parameter), an unnecessary connection is opened to an
AS400 system nevertheless. This happens only when the
*resolvePropertyPlaceholders* property is set to *true* (there are getters
called by reflection at some point from *IntrospectionSupport* class).
This connection will never be used when using a custom *AS400ConnectionPool*,
as the *createEndpoint* method in Jt400Component class checks if we use custom
or default pool:
{code:java}
@Override
protected Endpoint createEndpoint(String uri, String remaining, Map<String,
Object> properties) throws Exception {
AS400ConnectionPool connectionPool;
if (properties.containsKey(CONNECTION_POOL)) {
LOG.trace("AS400ConnectionPool instance specified in the URI - will
look it up.");
// We have chosen to handle the connectionPool option ourselves, so
// we must remove it from the given parameter list (see
// http://camel.apache.org/writing-components.html)
String poolId = properties.remove(CONNECTION_POOL).toString();
connectionPool =
EndpointHelper.resolveReferenceParameter(getCamelContext(), poolId,
AS400ConnectionPool.class, true);
} else {
LOG.trace("No AS400ConnectionPool instance specified in the URI - one
will be provided.");
connectionPool = getConnectionPool();
}
String type = remaining.substring(remaining.lastIndexOf(".") +
1).toUpperCase();
Jt400Endpoint endpoint = new Jt400Endpoint(uri, this, connectionPool);
setProperties(endpoint, properties);
endpoint.setType(Jt400Type.valueOf(type));
return endpoint;
}
{code}
and uses the one provided instead.
I've attached a patch which changes behaviour of the *createEndpoint* method to
close the previously initialized default connection when the provided one
should be used instead.
> Unnecessary connection opened when using custom AS400ConnectionPool
> -------------------------------------------------------------------
>
> Key: CAMEL-11590
> URL: https://issues.apache.org/jira/browse/CAMEL-11590
> Project: Camel
> Issue Type: Bug
> Components: camel-jt400
> Reporter: Rafał Gała
> Priority: Minor
> Attachments: Jt400Component.patch
>
> Original Estimate: 24h
> Remaining Estimate: 24h
>
> When using a custom *AS400ConnectionPool* for *Jt400Component*
> (*connectionPool* URI parameter), an unnecessary connection is opened to an
> AS400 system nevertheless. This happens only when the
> *resolvePropertyPlaceholders* property is set to *true* (there are getters
> called by reflection at some point from *IntrospectionSupport* class).
> This connection will never be used when using a custom *AS400ConnectionPool*,
> as the *createEndpoint* method in Jt400Component class checks if we use
> custom or default pool:
> {code:java}
> @Override
> protected Endpoint createEndpoint(String uri, String remaining, Map<String,
> Object> properties) throws Exception {
> AS400ConnectionPool connectionPool;
> if (properties.containsKey(CONNECTION_POOL)) {
> LOG.trace("AS400ConnectionPool instance specified in the URI - will
> look it up.");
>
> // We have chosen to handle the connectionPool option ourselves, so
> // we must remove it from the given parameter list (see
> // http://camel.apache.org/writing-components.html)
> String poolId = properties.remove(CONNECTION_POOL).toString();
> connectionPool =
> EndpointHelper.resolveReferenceParameter(getCamelContext(), poolId,
> AS400ConnectionPool.class, true);
> } else {
> LOG.trace("No AS400ConnectionPool instance specified in the URI - one
> will be provided.");
> connectionPool = getConnectionPool();
> }
> String type = remaining.substring(remaining.lastIndexOf(".") +
> 1).toUpperCase();
> Jt400Endpoint endpoint = new Jt400Endpoint(uri, this, connectionPool);
> setProperties(endpoint, properties);
> endpoint.setType(Jt400Type.valueOf(type));
> return endpoint;
> }
> {code}
> and uses the one provided instead.
> I've attached a patch which changes behaviour of the *createEndpoint* method
> to close the previously initialized default connection when the provided one
> should be used instead. This is not a very elegant solution though.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)