Bean não encontrado (Servlet + EJB + JBoss)

2 respostas
M

Pessoal,

Eu acho que abri o meu problema na seção errada no post anterior: [url]http://www.guj.com.br/java/302958-erro-ao-acessar-servlet-ejb--jboss[/url]
O meu servidor está subindo corretamente, sem nenhum problema.
Porém ao acessar o meu Servlet e efetuar uma busca do meu Bean remoto, apresenta a seguinte erro:

21:37:51,154 ERROR [STDERR] javax.naming.NameNotFoundException: ClientesBean not bound
21:37:51,155 ERROR [STDERR] 	at org.jnp.server.NamingServer.getBinding(NamingServer.java:529)
21:37:51,155 ERROR [STDERR] 	at org.jnp.server.NamingServer.getBinding(NamingServer.java:537)
21:37:51,155 ERROR [STDERR] 	at org.jnp.server.NamingServer.getObject(NamingServer.java:543)
21:37:51,155 ERROR [STDERR] 	at org.jnp.server.NamingServer.lookup(NamingServer.java:267)
21:37:51,155 ERROR [STDERR] 	at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:667)
21:37:51,155 ERROR [STDERR] 	at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:627)
21:37:51,155 ERROR [STDERR] 	at javax.naming.InitialContext.lookup(Unknown Source)
21:37:51,155 ERROR [STDERR] 	at br.com.sankhya.teste.vc.ServletController.getClientesModel(ServletController.java:36)
21:37:51,155 ERROR [STDERR] 	at br.com.sankhya.teste.vc.ServletController.doPost(ServletController.java:26)
21:37:51,156 ERROR [STDERR] 	at br.com.sankhya.teste.vc.ServletController.doGet(ServletController.java:21)
21:37:51,156 ERROR [STDERR] 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:734)
21:37:51,156 ERROR [STDERR] 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
21:37:51,156 ERROR [STDERR] 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
21:37:51,156 ERROR [STDERR] 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
21:37:51,156 ERROR [STDERR] 	at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
21:37:51,156 ERROR [STDERR] 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
21:37:51,156 ERROR [STDERR] 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
21:37:51,156 ERROR [STDERR] 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
21:37:51,156 ERROR [STDERR] 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
21:37:51,156 ERROR [STDERR] 	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
21:37:51,156 ERROR [STDERR] 	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
21:37:51,157 ERROR [STDERR] 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
21:37:51,157 ERROR [STDERR] 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
21:37:51,157 ERROR [STDERR] 	at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
21:37:51,157 ERROR [STDERR] 	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
21:37:51,157 ERROR [STDERR] 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
21:37:51,157 ERROR [STDERR] 	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
21:37:51,157 ERROR [STDERR] 	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
21:37:51,157 ERROR [STDERR] 	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
21:37:51,157 ERROR [STDERR] 	at java.lang.Thread.run(Unknown Source)
E meu ServletController.java
public class ServletController extends HttpServlet {
	
	private static final long serialVersionUID = 1L;
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		try{
			request.setAttribute("grettings", getClientesModel().sayHello());
			request.getRequestDispatcher("listaClientes.jsp").forward(request, response);
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	
	private Clientes getClientesModel() throws Exception {
		InitialContext ctx = new InitialContext();
		
		return (Clientes) ctx.lookup("ClientesBean/remote");

	}

}

O meu ClientesBean.class já está com @Stateless na classe e implementando a interface CLientes onde o mesmo define o acesso como @Remote

2 Respostas

M
marlonmaxwel:
Pessoal,

Eu acho que abri o meu problema na seção errada no post anterior: [url]http://www.guj.com.br/java/302958-erro-ao-acessar-servlet-ejb--jboss[/url]
O meu servidor está subindo corretamente, sem nenhum problema.
Porém ao acessar o meu Servlet e efetuar uma busca do meu Bean remoto, apresenta a seguinte erro:

21:37:51,154 ERROR [STDERR] javax.naming.NameNotFoundException: ClientesBean not bound
21:37:51,155 ERROR [STDERR] 	at org.jnp.server.NamingServer.getBinding(NamingServer.java:529)
21:37:51,155 ERROR [STDERR] 	at org.jnp.server.NamingServer.getBinding(NamingServer.java:537)
21:37:51,155 ERROR [STDERR] 	at org.jnp.server.NamingServer.getObject(NamingServer.java:543)
21:37:51,155 ERROR [STDERR] 	at org.jnp.server.NamingServer.lookup(NamingServer.java:267)
21:37:51,155 ERROR [STDERR] 	at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:667)
21:37:51,155 ERROR [STDERR] 	at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:627)
21:37:51,155 ERROR [STDERR] 	at javax.naming.InitialContext.lookup(Unknown Source)
21:37:51,155 ERROR [STDERR] 	at br.com.sankhya.teste.vc.ServletController.getClientesModel(ServletController.java:36)
21:37:51,155 ERROR [STDERR] 	at br.com.sankhya.teste.vc.ServletController.doPost(ServletController.java:26)
21:37:51,156 ERROR [STDERR] 	at br.com.sankhya.teste.vc.ServletController.doGet(ServletController.java:21)
21:37:51,156 ERROR [STDERR] 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:734)
21:37:51,156 ERROR [STDERR] 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
21:37:51,156 ERROR [STDERR] 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
21:37:51,156 ERROR [STDERR] 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
21:37:51,156 ERROR [STDERR] 	at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
21:37:51,156 ERROR [STDERR] 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
21:37:51,156 ERROR [STDERR] 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
21:37:51,156 ERROR [STDERR] 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
21:37:51,156 ERROR [STDERR] 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
21:37:51,156 ERROR [STDERR] 	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
21:37:51,156 ERROR [STDERR] 	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
21:37:51,157 ERROR [STDERR] 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
21:37:51,157 ERROR [STDERR] 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
21:37:51,157 ERROR [STDERR] 	at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
21:37:51,157 ERROR [STDERR] 	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
21:37:51,157 ERROR [STDERR] 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
21:37:51,157 ERROR [STDERR] 	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
21:37:51,157 ERROR [STDERR] 	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
21:37:51,157 ERROR [STDERR] 	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
21:37:51,157 ERROR [STDERR] 	at java.lang.Thread.run(Unknown Source)
E meu ServletController.java
public class ServletController extends HttpServlet {
	
	private static final long serialVersionUID = 1L;
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		try{
			request.setAttribute("grettings", getClientesModel().sayHello());
			request.getRequestDispatcher("listaClientes.jsp").forward(request, response);
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	
	private Clientes getClientesModel() throws Exception {
		InitialContext ctx = new InitialContext();
		
		return (Clientes) ctx.lookup("ClientesBean/remote");

	}

}

O meu ClientesBean.class já está com @Stateless na classe e implementando a interface CLientes onde o mesmo define o acesso como @Remote

M

Consegui resolver o problema.
Visualizei em um fórum americano uma possível solução e naveguei até a documentação do EJB3 no JBoss: http://docs.jboss.org/ejb3/app-server/tutorial/ear/ear.html

Eu estava fazendo o lookup da seguinte forma:

InitialContext ctx = new InitialContext(); return (Clientes) ctx.lookup("ClientesBean/remote");

Porém de acordo com a documentação, deve ser dessa forma:

InitialContext ctx = new InitialContext(); return (Clientes) ctx.lookup("ClientesEAR/ClientesBean/remote");

Padrão:
EARNAME/EJBNAME/local para interfaces Local e EARNAME/EJBNAME/remote para interfaces Remote

Criado 25 de julho de 2013
Ultima resposta 25 de jul. de 2013
Respostas 2
Participantes 1