Acesso remoto por lookup

3 respostas
R

Boa tarde a todos.

Estou com um problema, criei um projeto calculadoraweb com as seguintes classes:

LancadorDeDadosBean

package br.com.dado.ejb;

import java.util.Random;

import javax.ejb.Remote;
import javax.ejb.Stateless;

@Stateless
@Remote(LancadorDeDado.class)
public class LancadorDeDadosBean implements LancadorDeDado{

	private Random gerador = new Random();
	
	@Override
	public int lanca() {
		
		return gerador.nextInt(6)+1;
	}

	
}

LancadorDeDado

package br.com.dado.ejb;


public interface LancadorDeDado {
	int lanca();
}

Estou tentando acessar está classe por um outro projeto web chamado ProjetoAcessoCalculadoraWeb - ambos os projetos estão no mesmo servidor de aplicação WildFly8.x.

JogadorDeDadosRemotoServlet

package br.com.teste.servlet;

import java.io.IOException;

import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import br.com.dado.ejb.LancadorDeDado;


@WebServlet("/JogadorDeDadosRemotoServlet")
public class JogadorDeDadosRemotoServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
  
    public JogadorDeDadosRemotoServlet() {
        super();
       
    }
    
    @Override
    protected void service(HttpServletRequest arg0, HttpServletResponse arg1)
    		throws ServletException, IOException {
    	
    	
    	try {
			InitialContext ic = new InitialContext();
			
			LancadorDeDado lancar = 
					(LancadorDeDado) ic.lookup("java:global/calculadoraEAR/calculadoraweb/LancadorDeDadosBean");
			
			System.out.println(lancar.lanca());
			
		} catch (NamingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    	
    	
    	
    }

	
}

Acontece o seguinte erro quando vou acessar este Servlet.

16:35:55,586 INFO  [org.jboss.modules] (main) JBoss Modules version 1.3.3.Final
16:35:55,799 INFO  [org.jboss.msc] (main) JBoss MSC version 1.2.2.Final
16:35:55,874 INFO  [org.jboss.as] (MSC service thread 1-6) JBAS015899: WildFly 8.2.1.Final "Tweek" starting
16:35:57,470 INFO  [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads - 1) JBAS015014: Re-attempting failed deployment calculadoraEAR.ear
16:35:57,485 INFO  [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads - 1) JBAS015003: Found calculadoraEAR.ear in deployment directory. To trigger deployment create a file called calculadoraEAR.ear.dodeploy
16:35:57,486 INFO  [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads - 1) JBAS015003: Found ProjetosDadosWeb.war in deployment directory. To trigger deployment create a file called ProjetosDadosWeb.war.dodeploy
16:35:57,510 INFO  [org.jboss.as.server] (Controller Boot Thread) JBAS015888: Creating http management service using socket-binding (management-http)
16:35:57,533 INFO  [org.xnio] (MSC service thread 1-7) XNIO version 3.3.0.Final
16:35:57,544 INFO  [org.xnio.nio] (MSC service thread 1-7) XNIO NIO Implementation Version 3.3.0.Final
16:35:57,646 INFO  [org.jboss.as.connector.subsystems.datasources] (ServerService Thread Pool -- 27) JBAS010403: Deploying JDBC-compliant driver class org.h2.Driver (version 1.3)
16:35:57,727 INFO  [org.wildfly.extension.io] (ServerService Thread Pool -- 31) WFLYIO001: Worker 'default' has auto-configured to 8 core threads with 64 task threads based on your 4 available processors
16:35:57,769 INFO  [org.jboss.as.connector.logging] (MSC service thread 1-2) JBAS010408: Starting JCA Subsystem (IronJacamar 1.1.9.Final)
16:35:57,777 INFO  [org.jboss.as.naming] (ServerService Thread Pool -- 40) JBAS011800: Activating Naming Subsystem
16:35:57,780 INFO  [org.jboss.as.jsf] (ServerService Thread Pool -- 38) JBAS012615: Activated the following JSF Implementations: [main]
16:35:57,783 INFO  [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-6) JBAS010417: Started Driver service with driver-name = h2
16:35:57,805 INFO  [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 32) JBAS010280: Activating Infinispan subsystem.
16:35:57,859 WARN  [org.jboss.as.txn] (ServerService Thread Pool -- 46) JBAS010153: Node identifier property is set to the default value. Please make sure it is unique.
16:35:57,861 INFO  [org.jboss.as.security] (ServerService Thread Pool -- 45) JBAS013171: Activating Security Subsystem
16:35:57,903 INFO  [org.jboss.as.naming] (MSC service thread 1-6) JBAS011802: Starting Naming Service
16:35:57,904 INFO  [org.jboss.as.mail.extension] (MSC service thread 1-6) JBAS015400: Bound mail session [java:jboss/mail/Default]
16:35:57,915 INFO  [org.jboss.as.webservices] (ServerService Thread Pool -- 48) JBAS015537: Activating WebServices Extension
16:35:57,957 INFO  [org.jboss.as.security] (MSC service thread 1-4) JBAS013170: Current PicketBox version=4.0.21.Final
16:35:58,016 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-1) JBAS017502: Undertow 1.1.8.Final starting
16:35:58,018 INFO  [org.wildfly.extension.undertow] (ServerService Thread Pool -- 47) JBAS017502: Undertow 1.1.8.Final starting
16:35:58,210 INFO  [org.jboss.remoting] (MSC service thread 1-8) JBoss Remoting version 4.0.7.Final
16:35:58,421 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-8) JBAS017525: Started server default-server.
16:35:58,427 INFO  [org.wildfly.extension.undertow] (ServerService Thread Pool -- 47) JBAS017527: Creating file handler for path C:\Users\Renato\Downloads\java\desenv\wildfly-8.2.1.Final/welcome-content
16:35:58,458 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-1) JBAS017531: Host default-host starting
16:35:58,685 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-7) JBAS015876: Starting deployment of "calculadoraEAR.ear" (runtime-name: "calculadoraEAR.ear")
16:35:58,685 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-2) JBAS015876: Starting deployment of "ProjetosDadosWeb.war" (runtime-name: "ProjetosDadosWeb.war")
16:35:58,688 INFO  [org.jboss.as.server.deployment.scanner] (MSC service thread 1-8) JBAS015012: Started FileSystemDeploymentService for directory C:\Users\Renato\Downloads\java\desenv\wildfly-8.2.1.Final\standalone\deployments
16:35:58,690 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-6) JBAS017519: Undertow HTTP listener default listening on localhost/127.0.0.1:8080
16:35:58,771 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-6) JBAS015973: Starting subdeployment (runtime-name: "calculadoraweb.war")
16:35:58,771 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-7) JBAS015973: Starting subdeployment (runtime-name: "calculadora.jar")
16:35:58,936 WARN  [org.jboss.as.ejb3] (MSC service thread 1-2) JBAS014218: [EJB3.1 spec, section 4.9.2] Session bean implementation class MUST NOT be an interface - br.com.dado.ejb.LancadorDeDado is an interface, hence won't be considered as a session bean
16:35:59,052 INFO  [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-5) JBAS010400: Bound data source [java:jboss/datasources/ExampleDS]
16:35:59,129 INFO  [org.jboss.weld.deployer] (MSC service thread 1-6) JBAS016002: Processing weld deployment calculadoraEAR.ear
16:35:59,263 INFO  [org.hibernate.validator.internal.util.Version] (MSC service thread 1-6) HV000001: Hibernate Validator 5.1.3.Final
16:35:59,546 INFO  [org.jboss.weld.deployer] (MSC service thread 1-5) JBAS016002: Processing weld deployment calculadora.jar
16:35:59,560 INFO  [org.jboss.weld.deployer] (MSC service thread 1-6) JBAS016002: Processing weld deployment calculadoraweb.war
16:35:59,572 INFO  [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-6) JNDI bindings for session bean named LancadorDeDadosBean in deployment unit subdeployment "calculadoraweb.war" of deployment "calculadoraEAR.ear" are as follows:

	java:global/calculadoraEAR/calculadoraweb/LancadorDeDadosBean!br.com.dado.ejb.LancadorDeDado
	java:app/calculadoraweb/LancadorDeDadosBean!br.com.dado.ejb.LancadorDeDado
	java:module/LancadorDeDadosBean!br.com.dado.ejb.LancadorDeDado
	java:jboss/exported/calculadoraEAR/calculadoraweb/LancadorDeDadosBean!br.com.dado.ejb.LancadorDeDado
	java:global/calculadoraEAR/calculadoraweb/LancadorDeDadosBean
	java:app/calculadoraweb/LancadorDeDadosBean
	java:module/LancadorDeDadosBean

16:35:59,593 INFO  [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-5) JNDI bindings for session bean named CalculadoraBean in deployment unit subdeployment "calculadora.jar" of deployment "calculadoraEAR.ear" are as follows:

	java:global/calculadoraEAR/calculadora/CalculadoraBean!br.com.calculadora.ejb.Calculadora
	java:app/calculadora/CalculadoraBean!br.com.calculadora.ejb.Calculadora
	java:module/CalculadoraBean!br.com.calculadora.ejb.Calculadora
	java:global/calculadoraEAR/calculadora/CalculadoraBean
	java:app/calculadora/CalculadoraBean
	java:module/CalculadoraBean

16:35:59,623 INFO  [org.jboss.ws.common.management] (MSC service thread 1-8) JBWS022052: Starting JBoss Web Services - Stack CXF Server 4.3.2.Final
16:35:59,653 INFO  [org.jboss.weld.deployer] (MSC service thread 1-8) JBAS016005: Starting Services for CDI deployment: calculadoraEAR.ear
16:35:59,820 INFO  [org.jboss.weld.Version] (MSC service thread 1-8) WELD-000900: 2.2.6 (Final)
16:35:59,985 INFO  [org.jboss.weld.deployer] (MSC service thread 1-4) JBAS016008: Starting weld service for deployment calculadoraEAR.ear
16:36:00,688 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-1) JBAS017534: Registered web context: /ProjetosDadosWeb
16:36:01,857 INFO  [javax.enterprise.resource.webcontainer.jsf.config] (MSC service thread 1-8) Inicializando Mojarra 2.2.8-jbossorg-1 20140822-1131 para o contexto '/calculadoraweb'
16:36:02,352 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-8) JBAS017534: Registered web context: /calculadoraweb
16:36:02,414 INFO  [org.jboss.as.server] (ServerService Thread Pool -- 28) JBAS018559: Deployed "ProjetosDadosWeb.war" (runtime-name : "ProjetosDadosWeb.war")
16:36:02,415 INFO  [org.jboss.as.server] (ServerService Thread Pool -- 28) JBAS018559: Deployed "calculadoraEAR.ear" (runtime-name : "calculadoraEAR.ear")
16:36:02,456 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015961: Http management interface listening on http://127.0.0.1:9990/management
16:36:02,458 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015951: Admin console listening on http://127.0.0.1:9990
16:36:02,458 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015874: WildFly 8.2.1.Final "Tweek" started in 7242ms - Started 489 of 560 services (120 services are lazy, passive or on-demand)
16:36:03,857 INFO  [org.jboss.ejb.client] (default task-2) JBoss EJB Client version 2.0.1.Final
16:36:03,861 ERROR [io.undertow.request] (default task-2) UT005023: Exception handling request to /ProjetosDadosWeb/JogadorDeDadosRemotoServlet: java.lang.NoClassDefFoundError: br/com/dado/ejb/LancadorDeDado
	at br.com.teste.servlet.JogadorDeDadosRemotoServlet.service(JogadorDeDadosRemotoServlet.java:35) [classes:]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [jboss-servlet-api_3.1_spec-1.0.0.Final.jar:1.0.0.Final]
	at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:86) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]
	at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]
	at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]
	at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.8.Final.jar:1.1.8.Final]
	at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]
	at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.8.Final.jar:1.1.8.Final]
	at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) [undertow-core-1.1.8.Final.jar:1.1.8.Final]
	at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]
	at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58) [undertow-core-1.1.8.Final.jar:1.1.8.Final]
	at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:70) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]
	at io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76) [undertow-core-1.1.8.Final.jar:1.1.8.Final]
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.8.Final.jar:1.1.8.Final]
	at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.8.Final.jar:1.1.8.Final]
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.8.Final.jar:1.1.8.Final]
	at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:261) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]
	at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:248) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]
	at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:77) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]
	at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:167) [undertow-servlet-1.1.8.Final.jar:1.1.8.Final]
	at io.undertow.server.Connectors.executeRootHandler(Connectors.java:199) [undertow-core-1.1.8.Final.jar:1.1.8.Final]
	at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:761) [undertow-core-1.1.8.Final.jar:1.1.8.Final]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [rt.jar:1.8.0_60]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [rt.jar:1.8.0_60]
	at java.lang.Thread.run(Unknown Source) [rt.jar:1.8.0_60]
Caused by: java.lang.ClassNotFoundException: br.com.dado.ejb.LancadorDeDado from [Module "deployment.ProjetosDadosWeb.war:main" from Service Module Loader]
	at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:213) [jboss-modules.jar:1.3.3.Final]
	at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:459) [jboss-modules.jar:1.3.3.Final]
	at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:408) [jboss-modules.jar:1.3.3.Final]
	at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:389) [jboss-modules.jar:1.3.3.Final]
	at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:134) [jboss-modules.jar:1.3.3.Final]
	... 28 more

Já andei pesquisando, mas não encontrei uma resposta satisfatória para resolução deste problema.

Agradeço a ajuda de todos. Obrigado

3 Respostas

H

O erro é: java.lang.NoClassDefFoundError: br/com/dado/ejb/LancadorDeDado

Você não deve estar empacotando essa classe dentro do artefato.

R

desculpe o meu fraco conhecimento sobre o assunto, mas como assim empacotando dentro de um artefato? Como faz isso?

H

Geralmente é usado assim
EJB —> Vira um JAR
Parte WEB —> Vira um WAR

Se você jogar os dois no mesmo servidor, eles vão se ver. Mas quando um projeto tenta acessar a classe do outro, dá pau.

Você tem duas opções, q me lembro agora:

  1. Você cria um EAR => Tipo um .zip que vai ter o jar e o war lá dentro
  2. Você cria um 3 projeto só com as interfaces. Aí o war vai ter essa interface e o ejb tb. Desse jeito as classes de um vão estar dentro do outro.
Criado 7 de outubro de 2015
Ultima resposta 8 de out. de 2015
Respostas 3
Participantes 2