2012-08-28 12 views
5

Ho creato una nuova applicazione Java EE 6 Enterprise nuova in Netbeans 7.2. Così ho tre progetti:Applicazione Enterprise Java EE 6: Avviso "Dipendenza insoddisfatta: nessun bean corrisponde al punto di iniezione" durante l'iniezione di un bean

  • EAR
  • EJB
  • GUERRA

Nel EJB-Project, ho creato un semplice Bean:

package de.aidaorga.test; 

import javax.ejb.LocalBean; 
import javax.ejb.Stateless; 

@Stateless 
@LocalBean 
public class NewSessionBean2343 { 
} 

Nella guerra -Project, ho creato un beans.xml vuota nella cartella "Pagine Web \ WEB-INF":

0.123.516,410617 millions
<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://java.sun.com/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd"> 
</beans> 

E ho anche creato una semplice Servlet:

import de.aidaorga.test.NewSessionBean2343; 
import java.io.IOException; 
import javax.ejb.EJB; 
import javax.inject.Inject; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

@WebServlet(name = "NewServlet2343", urlPatterns = {"/NewServlet2343"}) 
public class NewServlet2343 extends HttpServlet { 
    @Inject 
    NewSessionBean2343 newSessionBean2343_1; 

    protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
    } 

    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     processRequest(request, response); 
    } 

    @Override 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     processRequest(request, response); 
    } 

    @Override 
    public String getServletInfo() { 
     return "Short description"; 
    } 
} 

Ora, Netbeans mi mostra un avviso "dipendenza Insoddisfatto: no fagiolo corrisponde al punto di iniezione" per il campo "newSessionBean2343_1" annotato con "@Inject ".

Al momento Deploy, ottengo il seguente Excpetion:

Schwerwiegend: Exception while loading the app 
Schwerwiegend: Exception while loading the app : WELD-001408 Unsatisfied dependencies for type [NewSessionBean2343] with qualifiers [@Default] at injection point [[field] @Inject NewServlet2343.newSessionBean2343_1] 
org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [NewSessionBean2343] with qualifiers [@Default] at injection point [[field] @Inject NewServlet2343.newSessionBean2343_1] 
at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:311) 
at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:280) 
at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:143) 
at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:163) 
at org.jboss.weld.bootstrap.Validator.validateBeans(Validator.java:382) 
at org.jboss.weld.bootstrap.Validator.validateDeployment(Validator.java:367) 
at org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:380) 
at org.glassfish.weld.WeldDeployer.event(WeldDeployer.java:199) 
at org.glassfish.kernel.event.EventsImpl.send(EventsImpl.java:128) 
at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:313) 
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:461) 
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240) 
at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:389) 
at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:348) 
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:363) 
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1085) 
at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:95) 
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1291) 
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1259) 
at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:461) 
at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:212) 
at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:179) 
at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117) 
at com.sun.enterprise.v3.services.impl.ContainerMapper$Hk2DispatcherCallable.call(ContainerMapper.java:354) 
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195) 
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860) 
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757) 
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056) 
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229) 
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) 
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) 
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) 
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) 
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) 
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) 
at com.sun.grizzly.ContextTask.run(ContextTask.java:71) 
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) 
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) 
at java.lang.Thread.run(Thread.java:722) 

Perché ottengo questo avvertimento e come faccio a sbarazzarsi di esso?

Grazie per qualsiasi aiuto.

Markus

risposta

6

Ho risolto il problema: ho appena dimenticato bean.xml nel progetto EJB. Un bean.xml in un EAR-Project ist non è abbastanza ...

0

Prima di tutto questo è solo un avvertimento IDE - quello che conta è se il codice viene compilato.

Il codice non sembra sbagliato, anche se non ricordo di aver mai iniettato un fagiolo due volte. Ma IMHO dovrebbe funzionare.

Suppongo che Netbeans sia in grado di convalidare solo @Inject, ma non @EJB, ciò spiegherebbe l'avviso.

Provare a distribuirlo su un server e vedere cosa viene fuori.

+0

Grazie per la tua risposta, ho cambiato la mia domanda. Il @EJB è stato rimosso ora e l'eccezione al momento della distribuzione è allegata. – user1631581

Problemi correlati