[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico]
[Índice de assunto]
Re: Prefixo automático
- Subject: Re: Prefixo automático
- From: Giuliano Mega <megag@xxxxxxxxxxxx>
- Date: Sat, 04 Dec 2004 13:59:47 -0200
Oi professor!
Estou fazendo exatamente isso, mas ao invés de uma referência para o
meu Home estou ganhando um
java.lang.ClassCastException
at
com.sun.corba.se.internal.javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:293)
at
javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:134)
at client.Main.move(Main.java:60)
at client.Main.main(Main.java:47)
Dei uma debugada e, apesar de acontecerem várias coisas complicadas
que não entendi muito bem (ele tenta carregar a classe de várias formas,
inclusive usando uma URL que contém o WebCL), parece que ele joga a
exceção porque não consegue achar a classe do stub. Eu estava tentando
gerá-los manualmente e colocá-los no classpath, mas não consigo
descobrir como fazer isso. Prá falar a verdade, não consigo nem imaginar
em qual classe eu tenho que rodar o rmic. Estou fazendo alguma bobagem?
Abraços,
Giuliano
>Hmm... Esta resposta vai ser longa...
>
>Se você especifica (no jboss.xml) que o seu bean usa IIOP, o comportamento
>default do JBoss é registrar o home do bean em dois lugares:
>
>(1) no contexto raiz do serviço de nomes CORBA
>(2) no serviço de nomes JNP do JBoss, no subcontexto especificado
> pelo elemento jnp-context do jboss.xml ou do standardjboss.xml.
> O standardjboss.xml define <jnp-context>iiop</jnp-context>.
>
>Você pode pegar o home com um lookup JNDI em (1) ou com um lookup JNDI
>em (2). Para pegar o home de (1), faça algo como
>
> Properties props = new Properties();
> props.add("java.naming.factory.initial",
> "com.sun.jndi.cosnaming.CNCtxFactory");
> props.add("java.naming.provider.url",
> "corbaloc::server.host.name:3528/JBoss/Naming/root");
> Context ctx = new InitialContext(props);
> Object homeRef = ctx.lookup("MyEJBName"); // com prefixo "iiop"
> MyEJBHome home =
> (MyEJBHome) PortableRemoteObject.narrow(homeRef, MyEJBHome.class);
>
>Para pegar o home de (2), faça algo como
>
> Context ctx = new InitialContext(); // construtor sem args
> Object homeRef = ctx.lookup("iiop/MyEJBName"); // sem prefixo "iiop"
> MyEJBHome home =
> (MyEJBHome) PortableRemoteObject.narrow(homeRef, MyEJBHome.class);
>
>Para tirar o prefixo "iiop" de (2), faça algo assim no jboss.xml:
>
><jboss>
>
> <enterprise-beans>
> <session>
> <ejb-name>...</ejb-name>
> <jndi-name>...</jndi-name>
> <configuration-name>Standard Stateful SessionBean</configuration-name>
> <invoker-bindings>
> <invoker>
> <invoker-proxy-binding-name>custom-iiop</invoker-proxy-binding-name>
> </invoker>
> </invoker-bindings>
> </session>
> </enterprise-beans>
>
> <invoker-proxy-bindings>
> <invoker-proxy-binding>
> <name>custom-iiop</name>
> <invoker-mbean>jboss:service=invoker,type=iiop</invoker-mbean>
> <proxy-factory>org.jboss.proxy.ejb.IORFactory</proxy-factory>
> <proxy-factory-config>
> <web-class-loader>org.jboss.iiop.WebCL</web-class-loader>
> <poa>per-servant</poa>
> <register-ejbs-in-jnp-context>true</register-ejbs-in-jnp-context>
> <jnp-context></jnp-context>
> </proxy-factory-config>
> </invoker-proxy-binding>
> </invoker-proxy-bindings>
>
></jboss>
>
>Note que o bean usa um invoker-proxy-binding customizado que define
>o elemento jnp-context como vazio. Essa é uma maneira de tirar o prefixo
>"iiop" do binding do home. A outra maneira (mais simples) é não definir
>um jnp-context na proxy-factory-config.
>
>Reverbel
>
>On Fri, Dec 03, 2004 at 08:37:34PM -0200, Giuliano Mega wrote:
>
>
>> Oi pessoal,
>>
>> Alguém aí conhece um jeito de impedir que o JBoss insira um prefixo
>>"iiop" no binding JNDI que eu especifiquei para o meu bean no
>>jboss.xml?? Aparentemente ele faz isso automaticamente quando você usa o
>>invoker iiop.
>>
>> Abraços,
>>
>> Giuliano
>>
>>
>>
>
>Esta mensagem foi verificada pelo E-mail Protegido Terra.
>Scan engine: McAfee VirusScan / Atualizado em 01/12/2004 / Versão: 4.3.20 - Dat 4411
>Proteja o seu e-mail Terra: http://www.emailprotegido.terra.com.br/
>
>
>
>