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
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.
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.
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.
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)