Are you using clustering?

Quintin Beukes



On Thu, Oct 29, 2009 at 1:05 AM, bitz <[email protected]> wrote:
>
> I'm using Geronimo 2.2 which uses OpenEJB 3.1.2.  I have a client application
> which retrieves a remote EJB reference and makes a remote EJB method call.
> I'm seeing the following message being logged by the OpenEJB client on the
> client side...
>
> Oct 28, 2009 3:36:03 PM org.apache.openejb.client.StickyConnectionStrategy
> connect
> WARNING: Failover: Cannot connect to server(s): ejbd://0.0.0.0:4201
> Exception: Cannot connect to server 'ejbd://0.0.0.0:4201'.  Check that the
> server is started and that the specified serverURL is correct..  Trying
> next.
>
> Well, the serverURL is not correct, and it's also not the one I provided.
> Here's a snippet of the client code...
>
> final URI serverURI = new URI( "ejbd", null, "192.168.0.1", 4201, null,
> null, null );
> final Properties contextProperties = new Properties( );
> contextProperties.put( Context.INITIAL_CONTEXT_FACTORY,
> "org.apache.openejb.client.RemoteInitialContextFactory" );
> contextProperties.put( Context.PROVIDER_URL, serverURI.toString( ) );
>
> final InitialContext ctx = new InitialContext( contextProperties );
> final MyEjbService remote = (MyEjbService)ctx.lookup("MyEjbRemote");
> final String serverTime = remote.getServerTime();
>
> In
> org.apache.openejb.client.StickyConnectionStrategy.connect(ClusterMetaData
> cluster, ServerMetaData server), the ctx.lookup("MyEjbRemote") call is
> successful, but the next call to remote.getServerTime() produces the error
> message indicated above, yet still succeeds.  Further calls to
> remote.getServerTime() work fine and do not produce any error messages.
>
> I debugged enough to find the cause.  I'll try to explain... The first
> client-server communication involves a handshake where ClusterRequest and
> ClusterResponse objects are exchanged.  During this handshake the server
> returns a URI of "ejbd://0.0.0.0:4201".  On the next communication to the
> server, for the remote.getServerTime() method call, the
> org.apache.openejb.client.StickyConnectionStrategy.connect(ClusterMetaData
> cluster, ServerMetaData server) code attempts to use the URI returned by the
> server, which obviously fails, resulting in the message, then it falls back
> to the original, correct URI, which is successful.
>
> My question:  What is the reason for the ClusterRequest/ClusterResponse
> handshake, and why does the OpenEJB client try to connect using an invalid
> URI provided by server?
>
>
> --
> View this message in context: 
> http://www.nabble.com/OpenEJB-3.1.2---%22Cannot-connect-to-server%22-WARNING-message-tp26103713p26103713.html
> Sent from the OpenEJB User mailing list archive at Nabble.com.
>
>

Reply via email to