EJB不会被注入我的RestEASY资源类中

时间:2015-06-03 11:11:42

标签: java-ee jboss ejb-3.0 resteasy wildfly-8

我的配置是:JBoss Wildfly 8.0.0,EJB 3.0,Resteasy 3.0.6,带有web,ejb,api模块的EAR项目。

我的网络模块中有一个用@Path注释的休息资源:

@Path("/boxes")
@Produces(MediaType.APPLICATION_JSON)
@Stateless
public class BoxServiceResource {

@EJB
private IBoxService boxService;

@GET
@Path("/test")
@Produces("text/plain")
public String test() {
    return "test string";
}

@GET
@Path("/list/{date}/{type}")
public List<BoxDTO> getBoxesForDate(@PathParam("date") String date,
                                    @PathParam("type") DateType type) {

    return boxService.getBoxesForDate(new Date(), DateType.DAY);

}

@GET
@Path("/byId/{id}")
public BoxDTO getBoxById(@PathParam("id") Long id) {

    return boxService.getBoxById(5L);

}
}

这是豆子:

@Stateless
public class BoxServiceImpl implements IBoxService {

@Override
public List<BoxDTO> getBoxesForDate(Date date,
                                    DateType type) {

    List<BoxDTO> boxes = new ArrayList<>(4);
    return boxes;
}

@Override
public BoxDTO getBoxById(Long id) {

    BoxDTO box = new BoxDTO();
    return box;

}

}

另外,我有Application扩展类,它没有重写实现:

@ApplicationPath("/rest")
public class BoxesRestApplication extends Application {

}

我的web.xml只包含一个JSF servlet,除此之外什么都没有。我在每个模块中都有beans.xml文件。但是,EJB不会被注入。我也用@Inject尝试过相同的结果。 REST资源本身已发布,我可以调用测试方法,但在调用其他两个方法时,它会因NullPointerException而失败。我已经阅读了大量的教程和解决方案,但是,没有一个对我有用。谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

尝试使用@Local批注注释IBoxService。有关此注释的详细信息,请参阅this。接口应该看起来:

@Local
public interface IBoxService{
    public List<BoxDTO> getBoxesForDate(Date date, DateType type);
    public BoxDTO getBoxById(Long id);

    // other methods you would need
}