JBossRemotingGateway listener should support multiple listeners for the same host port
combination
--------------------------------------------------------------------------------------------------
Key: JBESB-1557
URL:
http://jira.jboss.com/jira/browse/JBESB-1557
Project: JBoss ESB
Issue Type: Feature Request
Security Level: Public (Everyone can see)
Components: Transports
Affects Versions: 4.3
Reporter: Daniel Bevenius
Assigned To: Daniel Bevenius
Fix For: 4.3
Add support for having multiple jbr listeners listen to the same host port combination:
<jbr-provider name="JBR-Http" protocol="http"
host="localhost" path="service1">
<jbr-bus busid="Http-1" port="8765" />
</jbr-provider>
<jbr-provider name="JBR-Http2" protocol="http"
host="localhost" path="service2">
<jbr-bus busid="Http-2" port="8765"/>
</jbr-provider>
Also notice the addition of the path configuration parameter. This is intended to identify
the path that will be used by a ws client that calls the service. Talked to Tom and he
suggested placing the path property on the jbr-bus element so I'll change that. The
attached example uses this way just as a proof-of-concept (too lazy to change it right
now)
The path is used by the JBossRemoteGatewayListener as the subsystem when adding
InvokationHandlers to a Connector. So we are bascically keeping track of JBoss Remting
Connectors that share the same host/port combination, and adding InvokationHandlers to
them with the above specifed path as their subsystem.
This solution requires that the JBoss Remoting ServerInvoker be modified and adding
something like this:
String subsystem = invocation.getSubsystem();
String clientId = invocation.getSessionId();
Map requestPayload = invocation.getRequestPayload();
if ( subsystem == null && requestPayload != null )
{
String path = (String) requestPayload.get( HTTPMetadataConstants.PATH );
subsystem = path.substring( path.indexOf( '/' ) + 1 );
}
log.info( "subsystem : " + subsystem );
This is needed so it can set the incoming path as the target subsystem.
I'm not sure if this is the best way to do this but I'll ask in the Remoting forum
if they have a better suggestion.
Really, the gain with this is that we can have multiple webservice running in a ESB
instance using the same port. This is important because we it becomes difficult opening a
separate port for every web service. This is the issue we are facing at the moment.
Note that this solution does not work when running multiple ESB instances on the same
machine, as this would still cause a port conflict. The solution is specific to a single
JVM.
Any thought or comments on this?
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira