gpt4 book ai didi

java - 将计划的 EJB 部署到 Glassfish 服务器时出现问题

转载 作者:行者123 更新时间:2023-12-01 15:44:57 24 4
gpt4 key购买 nike

我想将 EJB 部署到 Glassfish 3.1 应用程序服务器,但遇到了一个奇怪的(?)问题。

我有这个 bean,它应该使用 @Schedule 在 Glassfish 中连续执行注解。这对我来说效果很好,直到我向 EJB 访问数据库添加了一些代码。

@Stateless
public class MyBean implements MyBeanLocal {

@Schedule(second = "*", minute = "*", hour = "*")
public void initiateProcess() {

MyCoordinator mc = new MyCoordinatorImpl();
List<Entity> entities = mc.methodAccessingDB();
}
}

这是我的 EJB,每秒执行一次。正如我上面所说,如果我调用ac.methodAccessingDB(),我可以部署此EJB并且它成功执行。 。这意味着我什至无法将其部署到 Glassfish。 Glassfish 告诉我

Invalid ejb jar [...]: it contains zero ejb. Note: 1. A valid ejb jar requires at least one session, entity (1.x/2.x style), or message-driven bean. 2. EJB3+ entity beans (@Entity) are POJOs and please package them as library jar. 3. If the jar file contains valid EJBs which are annotated with EJB component level annotations (@Stateless, @Stateful, @MessageDriven, @Singleton), please check server.log to see whether the annotations were processed properly.. Please see server.log for more details.

如果我只写List<Entity> entities = null;而不是List<Entity> entities = ac.methodAccessingDB();我可以部署它并且运行良好。

最佳答案

好的,现在我已经找到了解决这个问题的方法。 EJB 在已部署版本上找不到类。解决方案是将所有内容打包到一个 ear 项目中。我使用的是maven,所以我最后创建了3个项目。

  • 一个用于 EJB <packaging>ejb</packaging>
  • 一个用于 EAR <packaging>ear</packaging>
  • 还有第三个父项目,它将其他两个项目集成为 <module>

然后,我将封装好的耳朵部署到 Glassfish 上,计时器启动,一切都在那里。

关于java - 将计划的 EJB 部署到 Glassfish 服务器时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7246446/

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