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

6 respostas
LuksS

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();
		}
	}

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

}
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]

6 Respostas

lusilva1982

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

Thank’s

LuksS

rpz,
se tu perceber meu DOCTYPE tinha

substitui por :

ñ sei explicar o porquê, mais deu certo!

D

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

LuksS

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

D

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.

O

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.

Criado 25 de maio de 2008
Ultima resposta 8 de nov. de 2010
Respostas 6
Participantes 4