Creat EJB 2.1 no Jboss 4

6 respostas
O

Pessoal estou com o seguinte problema tenho uma aplicação que roda no jboss 3.2 e por definição do cliente tenho que migrar para o Jboss 4.
Acontece que no jboss 4 eu não consigo realizar o lookup ele dá um erro de castException, isso para a interface remota, se eu mudar para a interface local ele aceita porém dá erro no creat.

Isso seria por que o jboss 4 não aceita o ejb 2.1 ???

6 Respostas

dgouvea

Eu estou trabalhando num projeto que utiliza EJB 2.1 no JBoss 4.05, ainda não tive nenhum problema.

Context ctx = new InitialContext(propriedades);
Object objeto = ctx.lookup(nomeJndi);
        	
EjbInvolutoServicoHome home = (EjbInvolutoServicoHome) PortableRemoteObject.narrow(objeto, EjbInvolutoServicoHome.class);
EjbInvolutoServico executor = home.create();

Caso esteja com problema posta o seu código aqui.

Abraços,
David

O

vou tentar seguir esse código seu…

O

Segue o meu código:

Hashtable props = new Hashtable();

props.put(InitialContext.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
props.put(InitialContext.PROVIDER_URL,"jnp://127.0.0.1:1099");

try{

InitialContext initialContext = new InitialContext(props);
Object object = initialContext.lookup(FornecedorSessionHome.JNDI_NAME);
		
FornecedorSessionHome home =
			(FornecedorSessionHome) PortableRemoteObject.narrow(
				object,	FornecedorSessionHome.class);
		
FornecedorSession fornecedor = home.create();
		
System.out.println("RETORNO ==&gt " + fornecedor.buscarFornecedor().size());
} catch (NamingException e) {

System.out.println("ERROR ==&gt "+e.getMessage());

} catch (CreateException e) {

System.out.println("ERROR ==&gt "+e.getMessage());

} catch (RemoteException e) {

System.out.println("ERROR ==&gt "+e.getMessage());

}

JBOSS 3.2.2

20:58:40,718 INFO [EARDeployer] Started J2EE application: file:/C:/jboss/server
/default/deploy/fornecedor.ear
20:58:40,718 INFO [MainDeployer] Deployed package: file:/C:/jboss/server/defaul
t/deploy/fornecedor.ear
20:58:40,734 INFO [URLDeploymentScanner] Started jboss.deployment:type=Deployme
ntScanner,flavor=URL
20:58:40,796 INFO [MainDeployer] Deployed package: file:/C:/jboss/server/defaul
t/conf/jboss-service.xml
20:58:40,812 INFO [Server] JBoss (MX MicroKernel) [3.2.3 (build: CVSTag=JBoss_3
_2_3 date=200311301445)] Started in 36s:297ms
20:59:01,796 INFO [STDOUT] RETORNO ==&gt 0

JBOSS 4.0.4.GA

21:19:33,562 ERROR [LogInterceptor] EJBException in method: public abstract br.c

om.rocha.ejb.session.FornecedorSession br.com.rocha.ejb.session.FornecedorSessio

nHome.create() throws javax.ejb.CreateException,java.rmi.RemoteException:

javax.ejb.EJBException: Invalid invocation, check your deployment packaging, met

hod=public abstract br.com.rocha.ejb.session.FornecedorSession br.com.rocha.ejb.

session.FornecedorSessionHome.create() throws javax.ejb.CreateException,java.rmi

.RemoteException

at org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invokeHo

me(StatelessSessionContainer.java:175)

at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invo

keHome(CachedConnectionInterceptor.java:189)

at org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invokeHome(

StatelessSessionInstanceInterceptor.java:98)

at org.jboss.ejb.plugins.AbstractInterceptor.invokeHome(AbstractIntercep

tor.java:105)

at org.jboss.ejb.plugins.CallValidationInterceptor.invokeHome(CallValida

tionInterceptor.java:56)

at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInte

rceptor.java:125)

at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxIntercep

torCMT.java:350)

at org.jboss.ejb.plugins.TxInterceptorCMT.invokeHome(TxInterceptorCMT.ja

va:161)

at org.jboss.ejb.plugins.SecurityInterceptor.invokeHome(SecurityIntercep

tor.java:145)

at org.jboss.ejb.plugins.LogInterceptor.invokeHome(LogInterceptor.java:1

32)

at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invokeHome(ProxyF

actoryFinderInterceptor.java:107)

at org.jboss.ejb.SessionContainer.internalInvokeHome(SessionContainer.ja

va:637)

at org.jboss.ejb.Container.invoke(Container.java:975)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.

java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces

sorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:324)

at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatch

er.java:155)

at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)

at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)

at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.

java:264)

at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)

at org.jboss.invocation.local.LocalInvoker$MBeanServerAction.invoke(Loca

lInvoker.java:169)

at org.jboss.invocation.local.LocalInvoker.invoke(LocalInvoker.java:118)
at org.jboss.invocation.InvokerInterceptor.invokeLocal(InvokerIntercepto
r.java:206)

at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.jav

a:192)

at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.

java:61)

at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:7

0)

at org.jboss.proxy.ejb.HomeInterceptor.invoke(HomeInterceptor.java:184)

at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:100)

at $Proxy260.create(Unknown Source)

at br.com.rocha.util.Teste.exce(Teste.java:91)

at org.apache.jsp.index_jsp._jspService(index_jsp.java:57)

at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)

at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper

.java:332)

at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:3

14)

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl

icationFilterChain.java:252)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF

ilterChain.java:173)

at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFi

lter.java:96)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl

icationFilterChain.java:202)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF

ilterChain.java:173)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV

alve.java:213)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV

alve.java:178)

at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(Securit

yAssociationValve.java:175)

at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValv

e.java:74)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j

ava:126)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j

ava:105)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal

ve.java:107)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav

a:148)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java

:869)

at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.p

rocessConnection(Http11BaseProtocol.java:664)

at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpo

int.java:527)

at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWor

kerThread.java:112)

at java.lang.Thread.run(Thread.java:534)

21:19:33,718 INFO  [STDOUT] ERROR ==&gt EJBException:; nested exception is:

javax.ejb.EJBException: Invalid invocation, check your deployment packag

ing, method=public abstract br.com.rocha.ejb.session.FornecedorSession <a href="http://br.com.ro">br.com.ro</a>

cha.ejb.session.FornecedorSessionHome.create() throws javax.ejb.CreateException,

java.rmi.RemoteException

Sabe o que pode estar acontecendo ???

dgouvea

Parece que tem um erro na implementação do EJB, tem como você postar o código das interfaces Home e Remote e do Bean?

dgouvea

Existe um método create no seu Bean com a mesma assinatura do método create da interface Home ??

O

Valeu galera pela atenção mais já conseguir resolver o problema.
Na verdade não mudei nada na implementação para o EJB fuuncionar nos dois servidores, o que ocorre é que usando o plugin lomboz ele cópia os ejbs para dentro do módulo web e na verdade teria que só ficar no arquivo .jar. Eu removi os ejbs do módulo web e fiz o deploy.
Pronto funcionou.

Fica aqui registrado para conhecimento geral da comunidade.

Valeu :slight_smile:

Criado 21 de março de 2007
Ultima resposta 23 de mar. de 2007
Respostas 6
Participantes 2