David,
The incompatibility between 3.0 and 3.1 is not mentioned on the release
announcement[1] or on the download page[2]. Although I understand the
need to "break some eggs", at a bare minimum please document it in the
release notes.
Also, thanks to the OpenEJB team for their work on the code,
documentation, mailing list, ...
Paul Spencer
[1]http://openejb.apache.org/2008/11/05/apache-openejb-31-released.html
[2]http://openejb.apache.org/download.html
[3]http://openejb.apache.org/remote-server.html
David Blevins wrote:
Hi Paul,
The client and server versions have to match. We did a major overhaul
of the client/server communication between 3.0 and 3.1. The remote
client/server performance of 3.1 is many times faster than 3.0 and I'd
definitely recommend switching all clients over. We *try* to keep the
client/server protocol and connection management stable between
versions, but to get the improvements in we had to break some eggs.
-David
On Nov 18, 2008, at 5:35 AM, Paul Spencer wrote:
I am getting the following exception when connecting a OpenEJB 3.0
remote client to an OpenEJB 3.1 standalone server. The exception is
thrown when the client is getting the IntialContext.
***
* Code that does gets the initial context
* Note: This was copied from OpenEJB's remote client example
***
Properties p = new Properties();
p.put("java.naming.factory.initial",
"org.apache.openejb.client.RemoteInitialContextFactory");
p.put("java.naming.provider.url", "ejbd://localhost:4201");
p.put("java.naming.security.principal", "");
p.put("java.naming.security.credentials", "");
InitialContext ctx = new InitialContext(p);
***
* Exception on OpenEJB 3.0 remote Client end
***
javax.naming.AuthenticationException: Cannot open object output stream
to server: ;
nested exception is:
java.net.SocketException: Broken pipe
at
org.apache.openejb.client.JNDIContext.authenticate(JNDIContext.java:176)
at
org.apache.openejb.client.JNDIContext.getInitialContext(JNDIContext.java:129)
at
javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
at
javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
at javax.naming.InitialContext.init(InitialContext.java:223)
at javax.naming.InitialContext.(InitialContext.java:197)
***
* Exception on OpenEJB 3.1 Server End
***
java.io.IOException: Unexpected byte 79
at
org.apache.openejb.server.ejbd.KeepAliveServer$Session.service(KeepAliveServer.java:221)
at
org.apache.openejb.server.ejbd.KeepAliveServer.service(KeepAliveServer.java:233)
at
org.apache.openejb.server.ejbd.EjbServer.service(EjbServer.java:66)
at org.apache.openejb.server.ServicePool$2.run(ServicePool.java:91)
at org.apache.openejb.server.ServicePool$3.run(ServicePool.java:120)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
at java.lang.Thread.run(Thread.java:613)
When I change openejb-client version from 3.0 to 3.1, the client
successfully get the initial context and connects to the server.
Is this a bug in 3.1, 3.0, or both?
Paul Spencer