2012-08-28 8 views
5

इंजेक्शन करते हैं तो मैंने नेटबीन्स 7.2 में एक नया नया जावा ईई 6 एंटरप्राइज़-एप्लिकेशन बनाया है। तो मैं तीन परियोजनाओं है:जावा ईई 6 एंटरप्राइज़ एप्लीकेशन: चेतावनी "असंतुष्ट निर्भरता: कोई बीन इंजेक्शन पॉइंट से मेल नहीं खाता है" जब बीन

  • EAR
  • EJB
  • युद्ध

EJB-परियोजना में, मैं एक साधारण बीन बनाया है:

package de.aidaorga.test; 

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

@Stateless 
@LocalBean 
public class NewSessionBean2343 { 
} 

युद्ध में -प्रोजेक्ट, मैंने "वेब पेज \ WEB-INF" फ़ोल्डर में एक खाली beans.xml बनाया है:

<?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> 

और मैं भी एक साधारण सर्वलेट बनाया है:

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"; 
    } 
} 

अब, Netbeans मुझे एक चेतावनी "असंतुष्ट निर्भरता: कोई सेम इंजेक्शन बिंदु से मेल खाता है" से पता चलता क्षेत्र "newSessionBean2343_1" "@Inject साथ एनोटेट के लिए "।

तैनाती समय में, मैं निम्नलिखित 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) 

क्यों मैं इस चेतावनी हो और मैं इसे कैसे छुटकारा मिलेगा करते हैं?

किसी भी मदद के लिए धन्यवाद।

मार्कस

उत्तर

6

मैंने समस्या हल की: मैं बस ईजेबी-प्रोजेक्ट में beans.xml भूल गया हूं। एक ईएआर-प्रोजेक्ट में एक beans.xml पर्याप्त नहीं है ...

0

इस सब से पहले सिर्फ एक IDE चेतावनी है - क्या मायने रखता है अपने कोड को संकलित करता है या नहीं।

कोड गलत नहीं दिखता है, भले ही मुझे याद नहीं है कि मैंने कभी एक बीन इंजेक्शन दिया है। लेकिन आईएमएचओ जो काम करना चाहिए।

मुझे लगता है कि नेटबीन्स केवल @Inject को सत्यापित करने में सक्षम है, लेकिन @EJB नहीं, यह चेतावनी की व्याख्या करेगा।

इसे सर्वर पर तैनात करने का प्रयास करें और देखें कि क्या आता है।

+0

आपके उत्तर के लिए धन्यवाद, मैंने अपना प्रश्न बदल दिया है। @EJB अब हटा दिया गया है, और तैनाती समय पर अपवाद संलग्न है। – user1631581

संबंधित मुद्दे