[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: Francisco Reverbel <reverbel@xxxxxxxxxx>
- Date: Fri, 3 Dec 2004 22:32:28 -0200
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
>