2013-03-11 92 views
9

我有2个模块:ejb和war,以及包含它们的ear模块。模块成功打造,但是当我尝试部署耳朵Glassfish的,我收到此错误:ejb jar无效:它包含零ejb。

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.|#] 

我真的不知道该怎么办,我发现了很多像我这样的问题,但有没有解决方案。

回答

2

您可以选择将EJB添加到您的WAR或EAR文件。只要创建一个新的类,并与@Stateless

+28

大多数谁在这个问题上降落的人会做,因为他们*做*有一个适当注释的类,他们*仍然*得到这个错误。 – 8bitjunkie 2014-02-04 12:08:57

+1

这是一个答案,这里是答案不正确的原因。没有人前进。下一次,而不是把这个评论,请评论答案,你脏兮兮的磨砂。注意:这个问题还没有让任何人进一步提出这个问题,但如果每个人都遵循这个规则,堆栈溢出将作为一个社区向前发展。有人请回答这个问题。 – Booster 2016-12-02 22:33:32

+1

请原谅我的朋友,他是新人。 – 2016-12-02 22:39:02

3

我明白了,什么是错误的注释吧。问题出在运行配置中,我使用Intellij Idea,在运行配置中有我的耳机模块运行之前的build和make。我删除了这个,并在Maven安装后成功部署。

1

我知道这是非常建立具体的,它使用的,而不是OP的IDE Netbeans的,但因为我是领导在这里,这将可能是有用的一些用户:

我有以下生成: Netbeans的企业应用程序与Maven Glassfish的4.1 的Java EE 7

我曾试图从以前的非行家的企业应用程序迁移和克隆也不太工作,我所期望的方式,目前还躺在附近,我删除了一些旧的EJB罐子。

我已经做了不少的事情来解决它:

  1. 确保世界上没有EJB罐躺在附近是不应该存在。确保您不会意外地将ejb模块jar包含多次,因为这也会导致相同的错误(手动部署通过netbeans进行安装和部署有时会给我带来不同的错误)。
  2. 我用我的EJB应用程序的@Remote接口。现在,你不应该导入你的EJB到你的战争中,你应该描述https://docs.oracle.com/javaee/7/tutorial/ejb-intro004.htm
  3. (这更是一个值得注意的)当你更新你的任何战争或EJB,清洁和清洗和建筑物前建立他们正确使用注解你的耳朵(听起来很有趣?)。
  4. 如果您正在使用您的会话bean接口,那么你应该把它们放在一个单独的罐子,做一个新项目的Maven> Java应用程序。对持久性实体做同样的事情。将这些作为依赖关系添加到您的ejb和war项目中。
  5. 这并不涉及到我特别,但你应该至少有1 @Stateless(或我认为@Stateful)批注在Java类中的EJB模块内部来运行它(该模块被认为是EJB )。

我可能不得不做更多的事情,我忘了,但如果你仍然遇到问题评论下面,我会尝试更新。

+0

也取消了应用程序,clean + build重新部署为我工作。 – klonq 2016-10-04 16:18:39

0

只是尝试建立&使用Maven安装的项目,然后,在GlassFish中部署它(不要直接从你的IDE运行项目)