David, I am dumb, I set JNDI port on client to 1099 instead of 4201.
Now lookup works, I'm moving forward.
Thank you very much for your patience!
Regards,
Oleg
Oleg Nitz wrote:
David, the original ClassCastException has gone once I removed
the second instance of EJBNetworkService. Probably I should rename the
subject... done :)
The current exception has two variants:
Caused by: javax.naming.AuthenticationException: Cannot deternmine
server protocol version: Received null/0.0; nested exception is:
java.io.IOException: Unable to read protocol version. Reached
the end of the stream.
at
org.openejb.client.JNDIContext.authenticate(JNDIContext.java:196)
at
org.openejb.client.JNDIContext.getInitialContext(JNDIContext.java:181)
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.<init>(InitialContext.java:175)
at
ua.odessa.ibis.core.user.registry.UserRegistryClient.<init>(UserRegistryClient.java:81)
and
Caused by: javax.naming.AuthenticationException: Cannot open object
output stream to server: ; nested exception is:
java.net.SocketException: Broken pipe
at
org.openejb.client.JNDIContext.authenticate(JNDIContext.java:196)
at
org.openejb.client.JNDIContext.getInitialContext(JNDIContext.java:181)
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.<init>(InitialContext.java:175)
at
ua.odessa.ibis.core.user.registry.UserRegistryClient.<init>(UserRegistryClient.java:81)
The first one is what I get during normal run, the second is what I get
under debugger.
Still hoping for new guidelines from you,
Oleg
David Jencks wrote:
Going back to your original stack trace:
java.lang.ClassCastException: org.openejb.GenericEJBContainer
at
org.openejb.EJBContainer$$EnhancerByCGLIB$$964163d7.getUnmanagedReference(<generated>)
at org.openejb.ContainerIndex.doStart(ContainerIndex.java:123)
I think you will need to debug ContainerIndex line 123 and find out
what classloaders are involved. I'm pretty sure the
GenericEJBContainer from your application is being loaded from a
different copy of openejb than the one ContainerIndex is in.
It's hard for me to imagine how this could happen unless you had a
combination of factors including <inverse-classloading/> set in the
environment element of you geronimo plan. Showing what your geronimo
plan is could be helpful.
thanks
david jencks
On Aug 6, 2007, at 7:14 AM, Oleg Nitz wrote:
Hi David, I'm back :)
I was mistaken about JAAS login. First JAAS login succeeds in a usual
way. Then JNDI lookup() is performed and it fails.
Trace info: class org.openejb.client.Client, method request(),
conn = ConnectionManager.getConnection( server ); - OK
out = conn.getOuputStream(); - OK
PROTOCOL_VERSION.writeExternal(out); - OK
out.write( req.getRequestType() ); - OK
objectOut = new ObjectOutputStream( out ); - FAILS
with IOException("Broken pipe");
Hoping for new guidelines from you,
Oleg
Oleg Nitz wrote:
More info: client request reaches server, server (during JNDI
lookup) performs JAAS login (I have configured my own LoginModule,
but of course something can be wrong there), login succeeds. I don't
know what happens then. I guess some unexpected exception happens
there, and it isn't transferred to client correctly, but leads to
"unexpected EOF"-like error.
Okay, David, thank you again, conversation with you was really helpful,
it cleared the picture for me, so I think for now I will better stop
taking more of you time and continue my investigation and experiments.
I'll be back ;)
Oleg
Oleg Nitz wrote:
No, this is not the case. Client and server take jars from the same
place, and both use OpenEJB 2.1.1 which comes with Geronimo 1.1.1.
Thanks for you time,
Oleg
David Jencks wrote:
The first thing that comes to mind is that perhaps you are trying
to use incompatible openejb client and server jars? IIUC geronimo
1.1.1 needs openejb2 client jars and geronimo 2 needs openejb3
client jars and they are not interoperable. However I am not the
most expert on this subject. Knowing exactly which openejb jar
versions are in your client classpath would definitely be helpful
though.
thanks
david jencks
On Aug 3, 2007, at 9:00 AM, Oleg Nitz wrote:
Thank you for your answer, David. You are right, I already had
EJBNetworkService and have installed the second one. The idea to
do this came to me when I got the following exception during JNDI
lookup of my bean from standalone client app:
Cannot deternmine server protocol version: Received null/0.0;
nested exception is:
java.io.IOException: Unable to read protocol version.
Reached the end of the stream.
at
org.openejb.client.JNDIContext.authenticate(JNDIContext.java:196)
at
org.openejb.client.JNDIContext.getInitialContext(JNDIContext.java:181)
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.<init>(InitialContext.java:175)
at
ua.odessa.ibis.core.user.registry.UserRegistryClient.<init>(UserRegistryClient.java:81)
Then I found this message
http://mail-archives.apache.org/mod_mbox/geronimo-user/200512.mbox/[EMAIL PROTECTED]
but didn't understand where to put "allowHosts" and decided to
add a new EJBNetworkService for that :-/
Okay, now I've got it: I've added
<attribute name="allowHosts">0.0.0.0</attribute>
to EJBNetworkService gbean in config.xml, now it looks this way:
<module name="geronimo/openejb/1.1.1/car">
<gbean name="EJBNetworkService">
<attribute name="host">0.0.0.0</attribute>
<attribute name="port">4201</attribute>
<attribute name="allowHosts">0.0.0.0</attribute>
</gbean>
</module>
But nothing changes, I get the same exception during lookup().
Please, advise me the next step.
Thank you for your help,
Oleg
David Jencks wrote:
I don't understand what you are saying about needing to deploy
the EJBNetworkService... I can see needing to change the port or
host but there's one already started out of the box.
Your error is caused by having 2 classloaders that load the
openejb classes independently. There should be only one such
classloader per jvm, the one from the openejb config (module).
Can you figure out what the other one is? If you really need
another listener you should be sure that the openejb
configuration (car) is a parent (dependency) of the
configuration you put it in. Openejb is extremely unlikely to
work if you have more than one ContainerIndex running since most
references to it are through a static variable.
hope this helps
david jencks
On Aug 3, 2007, at 5:35 AM, Oleg Nitz wrote:
Hello all,
First I have successfully deployed my EJB, but couldn't connect
to it from standalone application. Then I found that I also
need to deploy EJBNetworkService/EJBServer stuff. Okay, did
that and got
java.lang.ClassCastException: org.openejb.GenericEJBContainer
at
org.openejb.EJBContainer$$EnhancerByCGLIB$$964163d7.getUnmanagedReference(<generated>)
at
org.openejb.ContainerIndex.doStart(ContainerIndex.java:123)
Then I undeployed my EJB and successfully deployed
EJBNetworkService. Now deployment of the EJB causes the same
error.
I've found such error in the mail archives:
http://mail-archives.apache.org/mod_mbox/geronimo-user/200605.mbox/[EMAIL PROTECTED]
but that message left unanswered.
Did anyone have such problems?
Any guidelines for me on what to do next?
Thanks in advance,
Oleg
P.S. Geronimo 1.1.1 (actually, WAS CE)