geronimo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Jencks <david_jen...@yahoo.com>
Subject Re: ClassCastException during EJB deployment
Date Mon, 06 Aug 2007 20:47:48 GMT
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