论坛首页 Java企业应用论坛

JavaEE6 JSR 注入的问题

浏览 3586 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2013-03-15   最后修改:2013-03-15
最近接手一个JavaEE6 的项目以前从来没搞过这东西,使用的IED netbeans 服务器glassfish
有几个问题想问下
项目部署的时候出这个错误:

org.glassfish.deployment.common.DeploymentException: WELD-001408 Injection point has unsatisfied dependencies.  Injection point:  field com.xx.xx.dwbase.service.FuncManageService.baseJpaDao;  Qualifiers:  [@javax.enterprise.inject.Default()]
        at org.glassfish.weld.WeldDeployer.event(WeldDeployer.java:181)
        at org.glassfish.kernel.event.EventsImpl.send(EventsImpl.java:125)
        at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:239)
        at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:339)
        at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:183)
        at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:272)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:305)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:320)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1176)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$900(CommandRunnerImpl.java:83)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1235)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1224)
        at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:365)
        at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:204)
        at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:166)
        at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:100)
        at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:245)
        at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
        at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
        at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
        at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
        at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
        at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
        at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
        at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
        at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
        at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
        at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
        at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
        at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
        at java.lang.Thread.run(Thread.java:619)

看了下 主要是这个类中 @inject 一个interface的dao,我现在找不到这个实现类在哪里,是不是这个实现类的问题
项目当中使用glassfish配置的数据源,持久性文件persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
  <persistence-unit name="dldwbase" transaction-type="JTA">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <jta-data-source>jdbc/vbp</jta-data-source>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
    </properties>
  </persistence-unit>
</persistence>


另外这个persistence.xml到底应该在什么位置,我这个项目现在有2个 一个在web-inf下 一个在src的conf,META-INF下面

还有谁能给我讲下,这个@inject的原理,是指这个J2EE6的容器自动寻找注入类的构造方法,然后在注入的吗,如果我注入的是一个interface类型的,那他会自动寻找这个interface的实现类吗?容器怎么知道我这个借口的实现类在哪,好多问题希望大神给解答下,谢谢
   发表时间:2013-03-15  
什么情况啊 没人回答啊
0 请登录后投票
   发表时间:2013-03-18  

Injection point:  field com.xx.xx.dwbase.service.FuncManageService.baseJpaDao;
从这个错误信息来看不是容器自带的类(在项目里面搜索下 应该可以找的到)

@inject  这个注解 就是给当前类注入 接口的实现类,(和 @Resource 类似)
    原理百度下吧!(一个接口的实现类 名字必须是唯一的 容器就可以自动注入)

persistence.xml JPA 的这个文件 默认是在 META-INF 这个下面的! (也可以自定义) 看下其他的配置 文件就知道哪个是对的了!
0 请登录后投票
   发表时间:2013-03-19  
7454103 写道

Injection point:  field com.xx.xx.dwbase.service.FuncManageService.baseJpaDao;
从这个错误信息来看不是容器自带的类(在项目里面搜索下 应该可以找的到)

@inject  这个注解 就是给当前类注入 接口的实现类,(和 @Resource 类似)
    原理百度下吧!(一个接口的实现类 名字必须是唯一的 容器就可以自动注入)

persistence.xml JPA 的这个文件 默认是在 META-INF 这个下面的! (也可以自定义) 看下其他的配置 文件就知道哪个是对的了!

加入了persistence.xml 就相当于用了JPA?
0 请登录后投票
   发表时间:2013-03-20  
从你的persistence.xml 这个文件的内容来看 是使用了JPA
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics