[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico]
[Índice de assunto]
Re: EP3
- Subject: Re: EP3
- From: Giuliano Mega <megag@xxxxxxxxxxxx>
- Date: Wed, 08 Dec 2004 19:48:06 -0200
Oi!
Pois é... pilhas assim não aparecem no meu computador. Eu fiz o
seguinte teste:
1 - Implantei dois beans, um de sessão e um de entidade, em um SA
(vou chamá-lo de SA 1)
2 - Implantei os mesmos dois beans, um de sessão e um de entidade,
em outro SA (vou chamá-lo de SA 2)
3 - Enfiei um breakpoint no send_request.
4 - Criei um cliente bobão que chama um bean em SA 1.
O código (inicial) do método do Bean implantado em SA 1 que o
cliente chama é (era) o seguinte:
Object obj =
initCtx.lookup("java:comp/env/external/itau/ejb/BankingSessionHome");
BankingSessionHome ih =
(BankingSessionHome)PortableRemoteObject.narrow(obj,
BankingSessionHome.class);
BankingSession itau =
(BankingSession)PortableRemoteObject.narrow(ih.create(),
BankingSession.class);
/* Faz a transferência */
this.add(-quantity); // Tira - isto chama um bean de
entidade colocado
itau.add(quantity); // Põe - isto chama um bean de sessão
remoto, que por sua vez chama um bean de entidade remoto
Essa referência em java:comp/env aponta para a raíz do serviço de
nomes CORBA em SA 2. Quando uso o código desse jeito, a chamada vai para
o SA 2, entra no bean, etc, etc, mas o TxServerClientInterceptor não é
executado.
Resolvi, portanto, mudar o código acima para:
Properties props = new Properties();
props.setProperty("java.naming.factory.initial",
"com.sun.jndi.cosnaming.CNCtxFactory");
props.setProperty("java.naming.provider.url",
"corbaloc::localhost:3628/JBoss/Naming/root");
InitialContext initCtx = new InitialContext(props);
/* Cria uma seção para o outro JBoss */
Object obj = initCtx.lookup("jboss/banking/BankingSessionHome");
BankingSessionHome ih =
(BankingSessionHome)PortableRemoteObject.narrow(obj,
BankingSessionHome.class);
Object inter = ih.create();
BankingSession itau =
(BankingSession)PortableRemoteObject.narrow(inter, BankingSession.class);
/* Faz a transferência */
this.add(-quantity); // Tira
itau.add(quantity); // Põe
Quando chego na linha em que o método BankingSessionHome#create vai
ser chamado, tomo uma:
19:32:41,309 INFO [STDOUT] java.lang.ClassCastException
19:32:41,310 INFO [STDOUT] at
com.sun.corba.se.internal.iiop.ShutdownUtilDelegate.isLocal(ShutdownUtilDelegate.java:39)
19:32:41,311 INFO [STDOUT] at
javax.rmi.CORBA.Util.isLocal(Util.java:262)
19:32:41,312 INFO [STDOUT] at
ejbtest.interfaces._BankingSessionHome_Stub.create(Unknown Source)
19:32:41,335 INFO [STDOUT] at
org.jboss.proxy.ejb.EjbObjectCorbaServant._invoke(EjbObjectCorbaServant.java:255)
....
19:32:41,336 INFO [STDOUT] at
org.jacorb.poa.RequestProcessor.invokeOperation(RequestProcessor.java:300)
19:32:41,337 INFO [STDOUT] at
org.jacorb.poa.RequestProcessor.process(RequestProcessor.java:595)
19:32:41,338 INFO [STDOUT] at
org.jacorb.poa.RequestProcessor.run(RequestProcessor.java:737)
Meus stubs RMI/IIOP estão sendo gerados e inseridos em JARs contidos
nos EARs que contêm os beans. Portanto não deve ser isso.
Meu jboss.xml é:
<jboss>
<enterprise-beans>
<session>
<ejb-name>BankingSession</ejb-name>
<jndi-name>jboss/banking/BankingSessionHome</jndi-name>
<!-- Vamos usar IIOP -->
<invoker-bindings>
<invoker>
<invoker-proxy-binding-name>iiop</invoker-proxy-binding-name>
</invoker>
</invoker-bindings>
<!-- Referência para um Entity Bean co-locado -->
<ejb-local-ref>
<ejb-ref-name>ejb/MoneySourceLocalHome</ejb-ref-name>
<local-jndi-name>jboss/banking/MoneySourceLocalHome</local-jndi-name>
</ejb-local-ref>
</session>
<entity>
<ejb-name>MoneySource</ejb-name>
<local-jndi-name>jboss/banking/MoneySourceLocalHome</local-jndi-name>
</entity>
</enterprise-beans>
</jboss>
Gente, faz uns bons três dias que estou em cima dessas coisas e não
consigo fazê-las funcionar. Estou quase jogando tudo o que eu fiz até
agora no lixo e começando do zero de novo. Alguém aí tem alguma idéia?
Abraços,
Giuliano, já tendo um chilique.
>Ola Raphael,
>tudo bom cara?
>
>On Wed, Dec 08, 2004 at 04:12:55PM -0200, Raphael Camargo wrote:
>
>
>>Estamos com problemas para rodar nosso teste. Nosso interceptador do
>>lado serivdor, ServerClientInterceptor, não está sendo chamado chamado
>>de jeito nenhum.
>>
>>
>Pelo que eu testei, se o EJB implantado no Servidor de Aplicacoes (SA) nao
>acessar EJBs em outro SA, dai ele nunca chama esse metodo mesmo. Mas no meu
>teste, fiz um lookup do home de outro EJB em outro SA e dei um create nesse
>home. Dai ele chama o ServerClientInterceptor.send_request(ClientRequestInfo
>ri). Da uma olhada no stacktrace e tenta ver ate onde seu JBoss ta indo (isso
>e do lado do SA que chama um EJB em outro SA):
>
>17:33:29,012 INFO [STDOUT] at org.jboss.tm.iiop.TxServerClientInterceptor.send_request(TxServerClientInterceptor.java:107)
>17:33:29,013 INFO [STDOUT] at org.jacorb.orb.portableInterceptor.ClientInterceptorIterator.invoke(ClientInterceptorIterator.java:86)
>17:33:29,013 INFO [STDOUT] at org.jacorb.orb.portableInterceptor.AbstractInterceptorIterator.iterate(AbstractInterceptorIterator.java:67)
>17:33:29,014 INFO [STDOUT] at org.jacorb.orb.portableInterceptor.ClientInterceptorIterator.iterate(ClientInterceptorIterator.java:62)
>17:33:29,015 INFO [STDOUT] at org.jacorb.orb.ClientInterceptorHandler.invokeInterceptors(ClientInterceptorHandler.java:237)
>17:33:29,015 INFO [STDOUT] at org.jacorb.orb.ClientInterceptorHandler.handle_send_request(ClientInterceptorHandler.java:76)
>17:33:29,016 INFO [STDOUT] at org.jacorb.orb.Delegate.invoke_internal(Delegate.java:880)
>17:33:29,017 INFO [STDOUT] at org.jacorb.orb.Delegate.invoke(Delegate.java:857)
>17:33:29,019 INFO [STDOUT] at org.omg.CORBA.portable.ObjectImpl._invoke(ObjectImpl.java:457)
>17:33:29,020 INFO [STDOUT] at org.omg.CosTransactions._ResourceStub.prepare(_ResourceStub.java:150)
>17:33:29,020 INFO [STDOUT] at org.jboss.tm.TransactionImpl$EnlistedCorbaResource.prepare(TransactionImpl.java:2202)
>17:33:29,020 INFO [STDOUT] at org.jboss.tm.TransactionImpl.prepareResources(TransactionImpl.java:1569)
>17:33:29,021 INFO [STDOUT] at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:326)
>17:33:29,021 INFO [STDOUT] at org.jboss.ejb.plugins.TxInterceptorCMT.endTransaction(TxInterceptorCMT.java:457)
>17:33:29,022 INFO [STDOUT] at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:325)
>17:33:29,022 INFO [STDOUT] at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:149)
>17:33:29,022 INFO [STDOUT] at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:128)
>17:33:29,023 INFO [STDOUT] at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:191)
>17:33:29,023 INFO [STDOUT] at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:122)
>17:33:29,024 INFO [STDOUT] at org.jboss.ejb.EntityContainer.internalInvoke(EntityContainer.java:514)
>17:33:29,024 INFO [STDOUT] at org.jboss.ejb.Container.invoke(Container.java:854)
>17:33:29,025 INFO [STDOUT] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>17:33:29,025 INFO [STDOUT] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>17:33:29,025 INFO [STDOUT] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>17:33:29,026 INFO [STDOUT] at java.lang.reflect.Method.invoke(Method.java:324)
>17:33:29,026 INFO [STDOUT] at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
>17:33:29,027 INFO [STDOUT] at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
>17:33:29,027 INFO [STDOUT] at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
>17:33:29,027 INFO [STDOUT] at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:242)
>17:33:29,028 INFO [STDOUT] at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:642)
>17:33:29,028 INFO [STDOUT] at org.jboss.proxy.ejb.EjbObjectCorbaServant._invoke(EjbObjectCorbaServant.java:255)
>17:33:29,039 INFO [STDOUT] at org.jacorb.poa.RequestProcessor.invokeOperation(RequestProcessor.java:300)
>17:33:29,042 INFO [STDOUT] at org.jacorb.poa.RequestProcessor.process(RequestProcessor.java:595)
>17:33:29,042 INFO [STDOUT] at org.jacorb.poa.RequestProcessor.run(RequestProcessor.java:737)
>
>
>
>
>>Estamos achando que pode ser um bug no JBoss. Vc conseguiu fazer este
>>interceptador rodar?
>>
>>
>Aqui pelo menos parece que esse interceptador esta sendo chamado. Mas nem
>sei mais que que eu to fazendo direito... To meio perdido... :-)
>
>Nao sei se deu pra entender. Mas manda a mensagem para a lista, as vezes mais
>alguem pode estar com o mesmo problema que voce.
>
>Abracos e bom trabalho!
>
>
>