[jboss-remoting-issues] [JBoss JIRA] (JBREM-1322) Cannot set up serverBindAddress for secondarySocket in bisocket transport

Igor Kostromin (JIRA) jira-events at lists.jboss.org
Wed Aug 21 09:31:26 EDT 2013


    [ https://issues.jboss.org/browse/JBREM-1322?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12798231#comment-12798231 ] 

Igor Kostromin edited comment on JBREM-1322 at 8/21/13 9:30 AM:
----------------------------------------------------------------

I thought it is not implemented yet.. But when you ask me about closing this issue, I decided to try one more time this method.
And I found that it doesn't work. I don't remember 100% about trying it already (month ago) but I tried a lot of configuration keys, and
no one have successed.

My code:

String locatorURI = "bisocket" + "://" + host + ":" + port;
	    InvokerLocator locator = new InvokerLocator(locatorURI);
	    locator.getParameters().put(InvokerLocator.CLIENT_LEASE, "true");
	    
	    Client remotingClient = new Client(locator);
        remotingClient.connect();

        // Set up push callbacks.  Tell the Connector created by Client.addListener()
        // that it is a callback Connector, which tells the BisocketServerInvoker
        // not to create a ServerSocket.
        HashMap metadata = new HashMap();
        metadata.put( Bisocket.IS_CALLBACK_SERVER, "true" );
        metadata.put( ServerInvoker.CLIENT_CONNECT_ADDRESS_KEY, host ); // doesn't work - jboss remoting ignores them
        metadata.put( ServerInvoker.CLIENT_CONNECT_PORT_KEY, Integer.toString( port) );
        callbackHandler = new TestCallbackHandler();
        remotingClient.addListener( callbackHandler, metadata );
                
      was (Author: elw00d):
    I thought it is not implemented yet.. But when you ask me about closing this issue, I decided to try one more time this method.
And I found that it doesn't work. I don't remember 100% about trying it already (month ago) but I tried a lot of configuration keys, and
no one have successed.

My code:

String locatorURI = "bisocket" + "://" + host + ":" + port;
	    InvokerLocator locator = new InvokerLocator(locatorURI);
	    locator.getParameters().put(InvokerLocator.CLIENT_LEASE, "true");
	    
	    Client remotingClient = new Client(locator);
        remotingClient.connect();

        // Set up push callbacks.  Tell the Connector created by Client.addListener()
        // that it is a callback Connector, which tells the BisocketServerInvoker
        // not to create a ServerSocket.
        HashMap metadata = new HashMap();
        metadata.put( Bisocket.IS_CALLBACK_SERVER, "true" );
        metadata.put( ServerInvoker.CLIENT_CONNECT_ADDRESS_KEY, host ); // doesn't work - jboss remoting ignores them
        callbackHandler = new TestCallbackHandler();
        remotingClient.addListener( callbackHandler, metadata );
                  
> Cannot set up serverBindAddress for secondarySocket in bisocket transport
> -------------------------------------------------------------------------
>
>                 Key: JBREM-1322
>                 URL: https://issues.jboss.org/browse/JBREM-1322
>             Project: JBoss Remoting
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: transport
>    Affects Versions: 2.5.4.SP4
>            Reporter: Igor Kostromin
>            Assignee: Ron Sigal
>             Fix For: 2.5.4.SP5
>
>
> Using IS_CALLBACK_SERVER = true.
> In BisocketClientInvoker.java:355
> InvokerLocator getSecondaryLocator() throws Throwable {
> ...
> 355: Object o = invoke(r);
> ...
> }
> It retrieves host from server, but if you want to use original client invoker host, you cannot do this (it is necessary if server is behind translating firewall). If you want to do this, you have to patch this code manually to
> Object o = invoke(r);
> // DZ: patch to use original server address for creating secondary connection
> // instead of address retrieved from server (because server will return jboss bind address
> // that can be local address, inaccessible from client)
> InvokerLocator patchedLocator = new InvokerLocator( (( InvokerLocator ) o).getOriginalURI().replace( 
>   (( InvokerLocator ) o).getHost(), this.getLocator().getHost() )
> );
> log.debug("secondary locator: " + o);
> log.debug("patched secondary locator: " + patchedLocator);
> return patchedLocator;
> and rebuild jboss-remoting project.
> For ports there are settings SECONDARY_BIND_PORT, SECONDARY_CONNECT_PORT allowing to set up them as you want. For address there is no one to do this.

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


More information about the jboss-remoting-issues mailing list