geronimo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Oleg Nitz ...@ibis.ua>
Subject IOException during JNDI lookup()
Date Tue, 07 Aug 2007 09:07:43 GMT
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/%3C97d040ba7193938d5e1ae6817476d29b@yahoo.com%3E

>>>>>>
>>>>>> 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/%3C3da992810605180835o38e2dd22i9a93012d6b939ce6@mail.gmail.com%3E

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



Mime
View raw message