WebLogic é um lixo cara…
O compilador de ejbs deles não consegue trabalhar direito com generics, tipo vc nao pode sobreescrever um metodo numa subclasse que é um ejb e tenha generics, se nao da um pau de compilação kkkkkk
ou seja: pode esquecer Generic DAO
Na empresa que trabalho temos que usar WL porque é feito pela Oracle agora kkkkk
aquele link ai de cima foi o que usei pra achar os ejbs de dentro do WAR,
mas tem uma coisa que nunca consegui fazer ( e acho que nao vou): como fazer lookup local apartir de um InitialContext?
Tipo no jboss vc faz
newInitialcontext();ctx.lookup(LOCAL_JNDI_NAME);
O problema é que no weblogic eu nao encontro em lugar nenhum o padrão da string de lookup LOCAL ( a de lookup remote é aquela que tem um #)
alguem sabe como faz isso?
valeu
D
danieldestro
Seguindo o link, você criou um Servlet para cada EJB que você precisa fazer lookup no WAR?
Sobre lookup de Ejb local. Eu abri chamado na Oracle e nem eles sabem como resolver isto.
V
vitenho
entao PODEMOS FICAR TRANQUILOS né Daniel?
Se a DONA do java não sabe como fazer isso…
aheauiahieauhiauehaiue
quem somos nós pra saber?
é pákabá!
V
vitenho
nao percebi que era uma pergunta sory
nao criei um servlet pra cada EJB, mas toda vez q eu preciso de um EJB eu faço lookup assim:
// em algum backing bean do jsfprivateContratoDAOcontratoService=(ContratoDAO)getEJB(ContratoDAO.JNDI_NAME);//dentro do meu metodo de lookupprivatestaticfinalStringROOT_LOCAL_ENV_JNDI="java:comp/env/ejb/";try{returnctx.lookup(ROOT_LOCAL_ENV_JNDI+jndiName);}catch(NamingExceptione){thrownewRuntimeException(e);}
e o jndiName eu sempre coloco o valor que vc coloca no @stateless(name=JNDI_NAME) assim:
Então você consegue fazer lookup de ejb local pelo JNDI, só precisa fazer o registro no web.xml, certo?
V
vitenho
o que eu consigo:
de algum lugar dentro do war (servlet, jsf) lookup no ejb por jndi, mas cada ejb tem q ter aqela tag no web.xml (ejn-ref)
o que eu nao consigo:
dentro de um ejb (OU qualquer coisa que rode no fora do WAR) fazer lookup em outro ejb atraves de jndi ( neste caso o unico jeito eh usar @EJB nas referencias as interfaces locais;
mas tipo isso seria que nem comer pao com fanta em restaurante de luxo, (em casa tem igualzinho e é bem mais barato)
eu me recuso a fazer um lookup remoto em ejbs do mesmo jar. credo!
D
danieldestro
Sim, claro.
Por isso insisto em Lookup de EJB local. Mas o Weblogic 10.3 não faz transparentemente. Imperdoável.
V
vitenho
Destro vc ta sendo obrigado a usar weblogic né? eu acho que essa é a única explicação pra alguem usar isso.
cara tenta convencer quem tá te a te obrigar pra mudar pro jboss o quanto antes bicho
quando chegar a JCDI (WebBeans) vai ser um inferno pra rodar no weblogic ( se rodar!)
eu nao consigo fazer nenhum exemplo do seam rodar no weblogic, NENHUM!
I
Icecold
Bom dia Daniel
Desculpe reabrir este tópico, mas estou com um problema semelhante a este que você teve.
Tenho uma pequena aplicação de teste que funciona perfeitamente no JBOss porém, quando publico no weblogic 11 não consigo fazer o look up. Lí o link que você postou, configurei os properties de initial context e url conforme o blog e também tomei cuidado no nome da minha interface remota.
Há alguma configuração para realizar no servidor para o look up poder funcionar? Quando vejo no servidor, tenho a informação que o ejb está ok porém, não consigo visualizar os nomes dos ejb’s.
Obrigado
D
danieldestro
Os nomes de lookup dos EJBs muda a cada application server. É ridículo ter uma especificação JEE e deixar os nomes a gosto de quem fez o app server. Enfim.
Em geral, no JBoss, o lookup é “nome-do-jar-ou-ear/nome-do-ejb”.
F
felipeguerra
Icecold:
Bom dia Daniel
Desculpe reabrir este tópico, mas estou com um problema semelhante a este que você teve.
Tenho uma pequena aplicação de teste que funciona perfeitamente no JBOss porém, quando publico no weblogic 11 não consigo fazer o look up. Lí o link que você postou, configurei os properties de initial context e url conforme o blog e também tomei cuidado no nome da minha interface remota.
Há alguma configuração para realizar no servidor para o look up poder funcionar? Quando vejo no servidor, tenho a informação que o ejb está ok porém, não consigo visualizar os nomes dos ejb’s.
Obrigado
No WLS 10.3, escolhe o server onde foi feito o deploy e clica no JNDI Tree, conforme a imagem.
Os nomes de lookup dos EJBs muda a cada application server. É ridículo ter uma especificação JEE e deixar os nomes a gosto de quem fez o app server. Enfim.
Em geral, no JBoss, o lookup é “nome-do-jar-ou-ear/nome-do-ejb”.
Daniel,
Vc já fez algum projeto em que um EJB (3.X) dentro do EAR x1 conversava com um EJB (3.X) dentro de um EAR x2 estando eles em servers diferentes?
D
danieldestro
Nunca, graças a Deus… rsrs…
No OC4J eu fiz assim, gerava os pacotes JAR dos meus EJBs, configurava no XML do oc4j (não usava o esquema de bibliotecas do Enterprise Manager dele não) e ai chamava os EJBs entre sim.
I
Icecold
Pessoal bom dia.
Ainda sem sucesso no meu client para acessar o ejb publicado no weblogic server 11g
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:
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.
I
Icecold
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.
F
felipeguerra
o erro é na hora de instanciar o Context, certo?
I
Icecold
Sim
I
Icecold
Sim
I
Icecold
Exatamente Felipe
I
Icecold
Exatamente
F
felipeguerra
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.
I
Icecold
Exatamente Felipe
I
Icecold
Exatamente Felipe
I
Icecold
Exatamente Felipe
E
edifreittas
Topico antigo mais acho que vale a pena deixar uma solução.
eu utilizo assim e funciona muito bem.
publicObjectlookup(){try{Contextctx=newInitialContext();Objectservico=ctx.lookup("java:comp/env/"+getSource());returnservico;}catch(Exceptionex){ServiceExceptione=newServiceException();Stringmsg="Ocorreu um erro ao localizar o serviço '"+getSource()+"'.";e.setMessage(msg);e.setRootCause(ex);e.setDetails(msg);e.setCode("Server.Processing");throwe;}}
E
edifreittas
Topico antigo mais acho que vale a pena deixar uma solução.
eu utilizo assim e funciona muito bem.
publicObjectlookup(){try{Contextctx=newInitialContext();Objectservico=ctx.lookup("java:comp/env/"+getSource());returnservico;}catch(Exceptionex){ServiceExceptione=newServiceException();Stringmsg="Ocorreu um erro ao localizar o serviço '"+getSource()+"'.";e.setMessage(msg);e.setRootCause(ex);e.setDetails(msg);e.setCode("Server.Processing");throwe;}}
E
evertonsilvagomesjav
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?
E
evertonsilvagomesjav
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)