gpt4 book ai didi

java - 如何将无状态 session bean 注入(inject)到 servlet 中?

转载 作者:行者123 更新时间:2023-11-30 02:51:24 25 4
gpt4 key购买 nike

我的高级目标是通过在我的 servlet 中使用“从数据库创建 RESTful Web 服务”向导来使用 NetBeans 生成的 JPA 代码。

更准确地说,我想直接从 servlet 访问外观,以避免必须在客户端使用 JavaScript 加载一些数据。

我的外观的相关部分如下所示:

@Stateless
@Path("wgm.rest.balanceview")
public class BalanceViewFacadeREST extends AbstractFacade<BalanceView> {

@PersistenceContext(unitName = "WGManagerPU")
private EntityManager em;

@GET
@Override
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public List<BalanceView> findAll() {
return super.findAll();
}

}

现在我尝试的是以下内容:

@WebServlet(name = "BalanceServlet", urlPatterns = "/balance/*")
public class BalanceServlet extends HttpServlet {

@Inject
private BalanceViewFacadeREST balanceFacade;


@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
List<BalanceView> balances = balanceFacade.findAll();
// ...
}
}

但是,在部署到 GlassFish 时,出现以下异常:

java.lang.RuntimeException: Unable to load the EJB module. DeploymentContext does not contain any EJB. Check the archive to ensure correct packaging for /home/severin/Projects/WGManager/build/web.
If you use EJB component annotations to define the EJB, and an ejb or web deployment descriptor is also used, please make sure that the deployment descriptor references a Java EE 5 or higher version schema, and that the metadata-complete attribute is not set to true, so the component annotations can be processed as expected

这对我来说听起来好像注入(inject)器找不到 BalanceViewFacadeREST。我错过了什么?

最佳答案

我假设您的 Servlet 和您的 EJB 彼此是本地的。我的假设是您的 EJB 没有远程接口(interface)。

如果 Servlet 和 EJB 驻留在同一个容器中,如果您有上下文,则可以使用 @EJB 或 @Inject 进行注释,并且容器中的依赖注入(inject)也是一种选择。

由于您既不提供 REMOTE 接口(interface),也不提供 LOCAL 接口(interface),因此您的 EJB 属于无接口(interface)类型。这意味着您应该使用 @LocalBean

注释 EJB
@Stateless
@LocalBean
@Path("wgm.rest.balanceview")
public class BalanceViewFacadeREST



//@Inject
OR
// @EJB
private BalanceViewFacadeREST balanceFacade;

关于java - 如何将无状态 session bean 注入(inject)到 servlet 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38546742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com