2013-03-11 37 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運行項目)