2015-01-10 35 views
0

在使用@Inject注入DAO的包含REST风格服务的wildfly中部署应用程序时遇到问题。Java EE RESTful服务字段注入

这是日志中的错误信息尝试部署在wildfly的应用程序时:

Deploying /home/john/codebase/servers/wildfly-8.2.0.Final/standalone/deployments/HouseCompetitionDashboard-1.0-SNAPSHOT.war 
{"JBAS014671: Failed services" => {"jboss.deployment.unit.\"HouseCompetitionDashboard-1.0-SNAPSHOT.war\".WeldStartService" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"HouseCompetitionDashboard-1.0-SNAPSHOT.war\".WeldStartService: Failed to start service 
Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type DAO with qualifiers @Default 
    at injection point [BackedAnnotatedField] @Inject private org.jmcdonnell.dashboard.services.PlayerService.dao 
    at org.jmcdonnell.dashboard.services.PlayerService.dao(PlayerService.java:0) 
"}} 

的类看起来像这样:

@Named 
public class DAO { 
} 



@Stateless 
@Path("player") 
public class PlayerService { 

    @Inject 
    private DAO dao; 

    @POST 
    @Consumes({"application/xml", "application/json"}) 
    public void create(Player entity) { 
     //dao.create(entity); 
    } 
} 

在DAO类将包含一个实体后来经理,但目前它不像我至少想要注射工作一样。有人有主意吗?

回答

0

@Named annotaion希望某些名称和名称未设置 - 它会生成默认名称,但是,名称会根据bean的骆驼名称生成。您需要尝试指定名称或使用骆驼大小写来表示bean名称。

+0

谢谢,不知道有关命名注释/骆驼案例的要求。 –

+1

这是不正确的。如果我不得不猜测,你实际上错过了一个范围(假设你没有定义'beans.xml'或者'beans.xml'为你的bean类型说明'注释') –

+0

这不是真的。但在某些情况下,它是。我会说这是错误的实现,因为在某些情况下,我省却了类似的问题。 – msangel