On Oct 29, 2009, at 10:19 AM, bitz wrote:


Good question. I haven't configured a cluster. I have one instance of Geronimo 2.2 running, and didn't make any changes to the default config. The client side code is a very simple test app. At this point, I'm only
doing some research and testing, nothing fancy.  Is clustering somehow
enabled by default?

It is enabled by default, though it is designed so that it (should) have no effect unless there actually *is* a cluster. Clearly something i s not lined up correctly. I'll have a look in the code.

Can you post your related server side config?


-David

Quintin Beukes-2 wrote:

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.





--
View this message in context: 
http://www.nabble.com/OpenEJB-3.1.2---%22Cannot-connect-to-server%22-WARNING-message-tp26103713p26117261.html
Sent from the OpenEJB User mailing list archive at Nabble.com.



Reply via email to