Lookup de EJB local no Weblogic 10.3

Pessoal bom dia.
Ainda sem sucesso no meu client para acessar o ejb publicado no weblogic server 11g

Segue o codigo para o meu context
public InitialContext getInitialContext( ) throws javax.naming.NamingException
{
Properties properties = new Properties( );
properties.put(Context.PROVIDER_URL, “t3://localhost:8001”);
properties.put(Context.INITIAL_CONTEXT_FACTORY, “weblogic.jndi.WLInitialContextFactory”);

	return new InitialContext(properties); 
} 

Segue código utilizado no lookup
hh = (HelloUserBeanRemote) initialContext.lookup(“HelloWorldEJB/interfaces.HelloUserBeanRemote”, interfaces.HelloUserBeanRemote.class);

Nome do EJB: hello
Interfaces remotas: interfaces.HelloUserBeanRemote
Nome do aplicativo: HelloWorldEJB

Outra questão: quais são os jars que devem ser adicionados ao client?

O erro que está ocorrendo é este:
javax.naming.NamingException: Couldn’t connect to any host [Root exception is org.omg.CORBA.COMM_FAILURE: vmcid: SUN minor code: 203 completed: No]
at weblogic.corba.j2ee.naming.Utils.wrapNamingException(Utils.java:83)
at weblogic.corba.j2ee.naming.ORBHelper.getORBReferenceWithRetry(ORBHelper.java:605)
at weblogic.corba.j2ee.naming.ORBHelper.getORBReference(ORBHelper.java:559)
at weblogic.corba.j2ee.naming.InitialContextFactoryImpl.getInitialContext(InitialContextFactoryImpl.java:85)
at weblogic.corba.j2ee.naming.InitialContextFactoryImpl.getInitialContext(InitialContextFactoryImpl.java:31)
at weblogic.jndi.WLInitialContextFactory.getInitialContext(WLInitialContextFactory.java:46)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
at javax.naming.InitialContext.init(InitialContext.java:223)
at javax.naming.InitialContext.(InitialContext.java:197)
at locator.ServiceLocator.getInitialContext(ServiceLocator.java:118)
at locator.ServiceLocator.(ServiceLocator.java:35)
at executar.MainWebLogic.main(MainWebLogic.java:20)
Caused by: org.omg.CORBA.COMM_FAILURE: vmcid: SUN minor code: 203 completed: No
at com.sun.corba.se.impl.logging.ORBUtilSystemException.writeErrorSend(ORBUtilSystemException.java:2259)
at com.sun.corba.se.impl.logging.ORBUtilSystemException.writeErrorSend(ORBUtilSystemException.java:2281)
at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.writeLock(SocketOrChannelConnectionImpl.java:957)
at com.sun.corba.se.impl.encoding.BufferManagerWriteStream.sendFragment(BufferManagerWriteStream.java:86)
at com.sun.corba.se.impl.encoding.BufferManagerWriteStream.sendMessage(BufferManagerWriteStream.java:104)
at com.sun.corba.se.impl.encoding.CDROutputObject.finishSendingMessage(CDROutputObject.java:144)
at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.finishSendingRequest(CorbaMessageMediatorImpl.java:247)
at com.sun.corba.se.impl.protocol.CorbaClientRequestDispatcherImpl.marshalingComplete1(CorbaClientRequestDispatcherImpl.java:355)
at com.sun.corba.se.impl.protocol.CorbaClientRequestDispatcherImpl.marshalingComplete(CorbaClientRequestDispatcherImpl.java:336)
at com.sun.corba.se.impl.protocol.CorbaClientDelegateImpl.invoke(CorbaClientDelegateImpl.java:129)
at com.sun.corba.se.impl.protocol.CorbaClientDelegateImpl.non_existent(CorbaClientDelegateImpl.java:232)
at org.omg.CORBA.portable.ObjectImpl._non_existent(ObjectImpl.java:137)
at weblogic.corba.j2ee.naming.ORBHelper.getORBReferenceWithRetry(ORBHelper.java:590)
… 11 more

No weblogic, segue a tela do ejb implantado em anexo
Obrigado mais uma vez pela ajuda pessoal


como diria Jack: vamos por partes.

seu ejb.jar ou ejb.ear está implantado, não tem relação direta com o JNDI Name. Como dito anteriormente, vc deve atribuir o JNDI Name da interface do EJB mais ou menos assim:

static final String JNDI_NAME = "ExampleFacade#br.com.session.facade.interfaces.ExampleFacade";

depois, fazer isso:

@Stateless(mappedName="ExampleFacade")
public class ExampleFacadeImpl implements ExampleFacade {}

aí, para localizar vc faz a pesquisa pelo JNDI_NAME acima…
uma outra questão, é na hora de criar um stand-alone client…na hora do debug, vc deve retirar as Weblogic System Libraries e deixar apenas a wlclient.jar.

Bom dia Felipe
Fiz exatamente o que você falou e continuo com o mesmo erro. Agora estou apenas com o jar wlclient.jar.
Outra dúvida, após publicar o ejb no weblogic, eu não deveria visualizar os ejb statelles (no meu caso) que estão implantados?

Já nao sei mais o que fazer.

Para testar o que estou fazendo, peguei este ejb e publiquei tanto no glassfish quanto no jboss e funcionaram perfeitamente. Mas eu preciso implantar é no weblogic

A empresa adotou o weblogic como AS para as aplicações.

o erro é na hora de instanciar o Context, certo?

Sim

Sim

Exatamente Felipe

Exatamente

Pois é, nem chegou no EJB ainda…veja se o server está no ar e em qual porta ele atende pelo t3 (normalmente é a mesma do console), pois não conseguir carregar o Context, é algo errado nisso OU as bibliotecas que vc usa para o client.

Exatamente Felipe

Exatamente Felipe

Exatamente Felipe

Topico antigo mais acho que vale a pena deixar uma solução.
eu utilizo assim e funciona muito bem.

JNDI

<ejb-local-ref>
    	<ejb-ref-name>?JNDI que você quiser?</ejb-ref-name>
    	<ejb-ref-type>Session</ejb-ref-type>
    	<local>?caminho da session interface(local ou remota) ?</local>
    	<ejb-link>?nome do seu ModelEjb  ?.jar#?JNDI criada?</ejb-link>
 </ejb-local-ref>

look

[code]
public Object lookup(){
try{

            Context ctx = new InitialContext();             
            Object servico = ctx.lookup("java:comp/env/"+getSource());
           return servico;
       }catch(Exception ex){
           ServiceException e = new ServiceException();
           String msg = "Ocorreu um erro ao localizar o serviço '" + getSource() + "'.";
           e.setMessage(msg);
           e.setRootCause(ex);
           e.setDetails(msg);
           e.setCode("Server.Processing");
           throw e;
       }
   }   [/code]

Topico antigo mais acho que vale a pena deixar uma solução.
eu utilizo assim e funciona muito bem.

JNDI

<ejb-local-ref>  
        <ejb-ref-name>JNDI que você quiser</ejb-ref-name>  
        <ejb-ref-type>Session</ejb-ref-type>  
        <local>caminho da session interface(local ou remota) </local>  
        <ejb-link>nome do seu ModelEjb.jar#JNDI criada</ejb-link>  
</ejb-local-ref>  

look

public Object lookup(){  
      try{  
  
           Context ctx = new InitialContext();               
           Object servico = ctx.lookup("java:comp/env/"+getSource());  
          return servico;  
      }catch(Exception ex){  
          ServiceException e = new ServiceException();  
          String msg = "Ocorreu um erro ao localizar o serviço '" + getSource() + "'.";  
          e.setMessage(msg);  
          e.setRootCause(ex);  
          e.setDetails(msg);  
          e.setCode("Server.Processing");  
          throw e;  
      }  
  } 

Desculpa ressucitar esse topico mas tem como alguem me ajudar a criar um ServiceLocator para minha aplicaçao? Eu uso WebLogic também e tenho um ProjetoEJB e um PRojetoWEB ambos ja estao funcionando so preciso acessar as interfaces do EJB no projeto WEB.

Alguem Me ajuda por favor?

To fazendo dessa forma :

Me da o erro:

SEVERE: javax.naming.NameNotFoundException: While trying to look up comp/session/LogarService in /app/webapp/Teste/22744958.; remaining name 'comp/session/LogarService' javax.faces.el.EvaluationException: javax.naming.NameNotFoundException: While trying to look up comp/session/LogarService in /app/webapp/Teste/22744958.; remaining name 'comp/session/LogarService' at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:98) at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:98) at javax.faces.component.UICommand.broadcast(UICommand.java:311) at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:781) at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1246) at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:77) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:308) at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:226) at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:124) at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283) at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42) at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:26) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3402) at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) at weblogic.security.service.SecurityManager.runAs(Unknown Source) at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2140) at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2046) at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1398) at weblogic.work.ExecuteThread.execute(ExecuteThread.java:200) at weblogic.work.ExecuteThread.run(ExecuteThread.java:172)

agora da o seguinte erro

Mapiei assim no web.xml do meu ProjetoWEB

<ejb-local-ref> <ejb-ref-name>ejb/LogarServiceBean</ejb-ref-name> <ejb-ref-type>Session</ejb-ref-type> <local>TesteEJB.session.LogarServiceBean</local> </ejb-local-ref>

Porem esse pacote session esta no ProjetEJB como faço?

esse link vai te ajudar.

http://architecture-journal.blogspot.com/2007/08/servicelocator-no-ejb-30.html