Thank you for supplying the code you are actually running. With this
available the mistake is rather obvious:
//Object is a MEJBHome
Object object=ctx.lookup("ejb/mgmt/
MEJBRemoteHome");
//You are casting it to DemoHome
My.DemoHome ejbHome=(My.DemoHome)
PortableRemoteObject.narrow(object,My.DemoHome.class);
The easiest way to determine the correct jndi name to look up is to
examine the server log when you deploy your ejbs, as there will be
log messages indicating where the ejbs are bound.
Many people find it more convenient to rely on the openejb transport
and avoid corba and just cast the result of the jndi lookup rather
than using PortableRemoteObject.narrow. Both will work using the
proprietary openejb transport but the error messages from PRO.narrow
can sometimes be difficult to decipher.
While I doubt it would make any difference in this use of PRO.narrow
to perform a cast using the yoko corba implementation we ship with
geronimo may produce fewer corba related errors.
thanks
david jencks
On Apr 6, 2008, at 11:43 PM, atul12345 wrote:
>
> Dear Sir,
>
> Thanks for help but this is not my solution. Anyway
> according
> to u i am showing the ENTIRE stack trace for this exception and
> include the
> exact source code........
>
>
> This is my Exception which is generated during the client program
> execute.......
> java.lang.ClassCastException
> at
> com.sun.corba.se.impl.javax.rmi.PortableRemoteObject.narrow
> (PortableR
> at
> javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:137)
> at HelloWorld.main(HelloWorld.java:31)
> Caused by: java.lang.ClassCastException: $Proxy0 cannot be cast to
> org.omg.CORBA
> at
> com.sun.corba.se.impl.javax.rmi.PortableRemoteObject.narrow(PortableR
> ... 2 more
>
> Could anyone tell me what I’m doing wrong? Thanks a lot. Looking
> forward to
> hearing from you.
>
> These are my code..........
>
> ********remote interface*******
> package My;
>
> import java.rmi.*;
>
> import javax.ejb.*;
>
> public interface DemoInter extends EJBObject
> {
> public int add() throws RemoteException;
> }
>
> ************home interface***********
> package My;
>
> import javax.ejb.*;
> import java.rmi.*;
>
>
>
> public interface DemoHome extends EJBHome
> {
> public DemoInter create(int a, int b) throws
> CreateException,RemoteException;
> }
> *************bean class*************
>
> package My;
>
> import javax.ejb.*;
> import java.rmi.*;
>
> public class DemoBean implements SessionBean
> {
> int a,b;
> private SessionContext context;
> public void setSessionContext(SessionContext ctx){this.context=ctx}
>
> public void ejbCreate( int a,int b)
> {
> this.a=a;
> this.b=b;
> System.out.println("ejb Created");
> }
>
> public void ejbActivate(){System.out.println("ejbActivate()");}
> public void ejbPassivate(){System.out.println("ejbPassivate()");}
> public void ejbRemove(){System.out.println("distroyed");}
> public int add() throws RemoteException
> {
> return(a+b);
> }
> }
>
> **********ejb-jar.xml****************
>
>
> <ejb-jar id="ejb-jar_1" xmlns="http://java.sun.com/xml/ns/j2ee"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
> http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd" version="2.1">
> <description>Example of a session bean</description>
> <display-name>MyTimeBeanEJBName</display-name>
> <enterprise-beans>
> <session id="Session_MyTime">
>
> <ejb-name>My.DemoEJB</ejb-name>
> <home>My.DemoHome</home>
> <remote>My.DemoInter</remote>
> <ejb-class>My.DemoBean</ejb-class>
>
> <session-type>Stateful</session-type>
> <transaction-type>Container</transaction-type>
> </session>
> </enterprise-beans>
> </ejb-jar>
>
> *************openejb.xml***********
>
>
> <openejb-jar xmlns="http://www.openejb.org/xml/ns/openejb-jar-2.1"
> xmlns:nam="http://geronimo.apache.org/xml/ns/naming-1.1"
> xmlns:pkgen="http://www.openejb.org/xml/ns/pkgen-2.0"
> xmlns:security="http://geronimo.apache.org/xml/ns/security-1.1"
> xmlns:sys="http://geronimo.apache.org/xml/ns/deployment-1.1">
>
>
> <enterprise-beans>
> <session>
> <ejb-name>My.DemoEJB</ejb-name>
> <jndi-name>ejb/mgmt/MEJBRemoteHome</jndi-name>
> </session>
> </enterprise-beans>
> </openejb-jar>
>
>
> ***********my client**************
>
>
>
>
> import java.util.*;
> import javax.rmi.PortableRemoteObject;
> import javax.naming.*;
> import javax.rmi.*;
> import My.*;
>
>
> public class Client {
>
> /**
> * @param args
> */
> public static void main(String[] args) {
> // TODO Auto-generated method stub
> try {
>
> Properties properties=new Properties();
> properties.setProperty(Context.INITIAL_CONTEXT_FACTORY,
> "org.apache.openejb.client.RemoteInitialContextFactory");
> properties.put("java.naming.provider.url","ejbd://localhost:
> 4201");
>
> Context ctx=new InitialContext(properties);
> System.out.println("ic = " + ctx);
>
> //MyTimeLocal myTimeLocal =
> (MyTimeLocal)context.lookup("java:comp/env/ejb/MyTimeBean");
> // My.DemoInter remoteObj
> =(My.DemoInter)ctx.lookup("ejb/mgmt/MEJBRemoteHome");
> Object object=ctx.lookup("ejb/mgmt/
> MEJBRemoteHome");
> // System.out.println("hello" +object);
> My.DemoHome ejbHome
> =(My.DemoHome)PortableRemoteObject.narrow(object,My.DemoHome.class);
> System.out.println("hello" +ejbHome);
> My.DemoInter obj1=ejbHome.create(4,5);
> System.out.println(obj1.add());
>
>
>
>
>
> } catch (Exception e) {
> System.out.println(e);
> // TODO: handle exception
> }
>
>
>
> }
>
> }
>
>
>
|