Per Jørgen Walstrøm created CAMEL-6636:
------------------------------------------
Summary: HttpClient 4.3 sets a global port to be re-used by
endpoints that do not have port defined
Key: CAMEL-6636
URL: https://issues.apache.org/jira/browse/CAMEL-6636
Project: Camel
Issue Type: Bug
Components: camel-http
Affects Versions: 2.11.0
Reporter: Per Jørgen Walstrøm
two routes within the same camel-context are configured as shown below. They
post to two different URLs; route1 stating no port (implicitly, this should
mean port 80) and route2 stating port 81.
During start-up, the following is logged
{{
12:06:52.316 [main] INFO o.a.c.component.http4.HttpComponent - Registering
PLAIN scheme http4 on port 80
12:06:52.372 [main] INFO o.a.c.component.http4.HttpComponent - Registering
PLAIN scheme http4 on port 81
}}
when the post is actually done, the following is logged
{{
12:18:46.437 [Camel (d-2) thread #8 - Threads] DEBUG
o.a.h.i.c.DefaultClientConnectionOperator - Connecting to bar.com:81
12:18:46.465 [Camel (d-2) thread #7 - Threads] DEBUG
o.a.h.i.c.DefaultClientConnectionOperator - Connecting to example.com:81
}}
Port 81 is re-used also for route1. There are some workarounds for this:
- the order of the route configuration is significant. If route2 was configured
before route1, everything would work ok
- if we explicitly set port 80 in route1 (example.com:80), everything works fine
The DefaultClientConnectionOperator.openConnection() finds the port from the
registry.getScheme(target.getSchemeName()) which returns port 81. This is used
as default port if no port is set.
The DefaultClientConnectionOperator is deprecated in 4.3, you may want to use
PoolingHttpClientConnectionManager (don't know if this solves the problem,
though).
Or maybe this is not a Camel problem but a HttpClient bug?
{quote}
from("activemq:topic:foo")
.routeId("route1")
.threads()
.setHeader(HTTP_METHOD, constant("POST"))
.to("http4://example.com");
from("activemq:topic:foo")
.routeId("route2")
.threads()
.setHeader(HTTP_METHOD, constant("POST"))
.to("http4://bar.com:81");
{quote}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira