[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico] [Índice de assunto]

Re: Prefixo automático



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