ClassCastException: org.jnp.interfaces.NamingContext cannot be cast to org.omg.CORBA.Object

alguém pode me dar uma luz??


package ejbAccess;

import java.rmi.RemoteException;
import java.util.Properties;

import javax.ejb.CreateException;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.rmi.PortableRemoteObject;

import ejb.home.CalculadoraHome;
import ejb.remote.CalculadoraRemote;

public class Acessando {
	
	public static void main(String[] args) {
		Properties prop = new Properties();
		prop.put("java.naming.factory.initial",
				"org.jnp.interfaces.NamingContextFactory");
		prop.put(InitialContext.URL_PKG_PREFIXES,
				"org.jboss.naming:org.jnp.interfaces");
		prop.put(InitialContext.PROVIDER_URL, "jnp://localhost:1099");

		InitialContext jndi;
		try {
			jndi = new InitialContext(prop);
			Object ref = jndi.lookup("Add");
			CalculadoraHome home = (CalculadoraHome) PortableRemoteObject
					.narrow(ref, CalculadoraHome.class);
			CalculadoraRemote calc = home.create();
			System.out.println(calc.add(2, 2));

		} catch (NamingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (CreateException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

[code]
public class CalculadoraBean implements SessionBean {

public float add(float a,float b){
	return a+b;
}


@Override
public void ejbActivate() throws EJBException, RemoteException {
	System.out.println("EJB ativado");
}

@Override
public void ejbPassivate() throws EJBException, RemoteException {
	// TODO Auto-generated method stub
	
}

@Override
public void ejbRemove() throws EJBException, RemoteException {
	// TODO Auto-generated method stub
	
}

@Override
public void setSessionContext(SessionContext arg0) throws EJBException,
		RemoteException {
	// TODO Auto-generated method stub
	
}

}[/code]



public interface CalculadoraHome extends EJBHome {
	public CalculadoraRemote create() throws RemoteException,CreateException;
}

public interface CalculadoraRemote extends EJBObject { public float add(float a,float b) throws RemoteException; }


<ejb-jar version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd">

<enterprise-beans>
	<session>
		<ejb-name>Add</ejb-name>
		<home>ejb.home.CalculadoraHome</home>
		<remote>ejb.remote.CalculadoraRemote</remote>
		<ejb-class>ejb.beans.CalculadoraBean</ejb-class>
		<session-type>Stateless</session-type>
		<transaction-type>Bean</transaction-type>
	</session>
</enterprise-beans>

</ejb-jar>

Qusando eu executeo o main da classe Acessando ele informa:

[color=red]
Exception in thread “main” java.lang.ClassCastException
at com.sun.corba.se.impl.javax.rmi.PortableRemoteObject.narrow(Unknown Source)
at javax.rmi.PortableRemoteObject.narrow(Unknown Source)
at ejbAccess.Acessando.main(Acessando.java:32)
Caused by: java.lang.ClassCastException: org.jnp.interfaces.NamingContext cannot be cast to org.omg.CORBA.Object
… 3 more[/color]

LuksS, vc conseguiu resolver este problema?
Estou passando por uma situação semelhante!

Thank’s

rpz,
se tu perceber meu DOCTYPE tinha

substitui por :

ñ sei explicar o porquê, mais deu certo!

Alguém conseguiu resolver esse problema???
Desesperadamente, Dayse.

já tentou fazer o que recomendo na msg anterior??

Já resolvi! Havia duas instâncias das classes ejb rodando no servidor, uma dentro do arquivo .war e outra num .jar, engraçado que a versão anterior do JBoss que usávamos, a 3.2, não reclamava de tal redundância, somente no JBoss 5 tal problema foi encontrado. Mas, já corrigi, obrigada pela atenção!

Dayse Rocha.

Eu tive o mesmo problema.

Obrigada Dayse, a sua resposta me ajudou muito.

O problema era que estava incluindo na construção do .war ejb’s que já estavam no diretório/pasta deploy.

Na hora da aplicação funcionar, a aplicação via o ejb duplicado e isso dava erros (não sei o motivo, mas dava erro =/)

Ahn, e não se esqueçam de limpar o diretório/pasta tmp, enquanto eu não limpei o tmp o erro persistiu.