我有2个模块:ejb和war,以及包含它们的ear模块。模块构建成功,但是当我尝试将ear部署到glassfish时,我收到了这个错误:
glassfish3.1.2|javax.enterprise.system.tools.admin.org.glassfish.deployment.admin|_ThreadID=17;_ThreadName=Thread-2;|Exception while deploying the app [EarModule] : Invalid ejb jar [BackEnd-1.0-SNAPSHOT.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.|#]
我真的不知道该怎么做,我发现了很多类似我的问题,但没有解决方案。
答案 0 :(得分:3)
我明白了,出了什么问题。问题出在运行配置中,我正在使用Intellij Idea,在运行配置中,我的耳模块运行之前有构建和生成。我删除了这个,并在maven安装后成功部署。
答案 1 :(得分:2)
您必须在WAR或EAR文件中添加EJB。只需创建一个新类并使用@Stateless
答案 2 :(得分:2)
我知道这是特定于构建的,它使用Netbeans而不是OP的IDE,但因为我在这里领先,这可能对某些用户有用:
我有以下版本: 使用Maven的Netbeans企业应用程序 Glassfish 4.1 Java EE 7
我曾尝试从以前的非maven企业应用程序进行迁移,并且克隆没有按照我的预期运行,有一些旧的ejb jar放在我删除的地方。
我做了很多事情要解决它:
我可能不得不做一些我忘了的事情,但如果你仍然遇到问题,请在下面发表评论,我会尝试更新。
答案 3 :(得分:0)
尝试构建&使用Maven安装项目,然后将其部署在glassfish中(不要直接从IDE运行项目)
答案 4 :(得分:0)
我也遇到了这个问题。当我将新的EJB项目导入到Eclipse工作区时,就会发生这种情况。那时该项目没有引用Glassfish库,因为它尚未包含在EAR部署程序集中。
保存Bean文件后,IDE自动导入javax.inject.Singleton
而不是javax.ejb.Singleton
。这样就可以在没有警告的情况下编译代码,但是会引发与原始文章相同的错误。