Skip to Content
0
Former Member
Jan 20, 2012 at 12:59 AM

ClassCastException in remote EJB call

615 Views

hi experts!

I have created j2ee application with remote EJB interface.

@Stateless
@Remote(CommonPortType.class)
public class CommonServiceImpl implements CommonPortType {
...
}

When I try to call this EJB from test console application

public static void main(String[] args) {
		// TODO Auto-generated method stub
		Properties props = new Properties();
		props.put(Context.INITIAL_CONTEXT_FACTORY,	"com.sap.engine.services.jndi.InitialContextFactoryImpl");
		props.put(Context.PROVIDER_URL, "....:50204");
		props.put(Context.SECURITY_PRINCIPAL, "....");
		props.put(Context.SECURITY_CREDENTIALS, "...");
		try {
			Context ctx = new InitialContext(props);
			Object o = ctx.lookup("evola.ru/presale~bnk_ejb_ear/REMOTE/CommonServiceImpl");
			CommonPortType ref = (CommonPortType) PortableRemoteObject.narrow(o, CommonPortType.class);
			List<DictionaryItem> values = ref.getDictionaryValues();
			System.out.println("succeed");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

I'm getting the error:

java.lang.ClassCastException

at com.sun.corba.se.impl.javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:229)

at javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:137)

at ru.evola.util.jpa.TestClass.main(TestClass.java:29)

Caused by: java.lang.ClassCastException: com.sap.engine.services.jndi.implclient.ClientContext cannot be cast to org.omg.CORBA.Object

at com.sun.corba.se.impl.javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:212)

... 2 more

on line PortableRemoteObject.narrow(...).

Narrowing doesn't work.

Can anybody explain me where I'm wrong?

P.S. Interfaces on server and client are the same.