2013-10-30 18 views
0

Im將我們的部署描述符從EJB 2.x遷移到EJB 3.x.目前即時得到以下錯誤:WAS 8.5 ejb.jar模塊中的企業bean沒有定義EJB類型。 (ejb 2.x - > 3.x)

[exec] [wsadmin] com.ibm.ejs.container.EJBConfigurationException: 
com.ibm.ejs.container.EJBConfigurationException: 
The MyBean enterprise bean in the ejb.jar module has no EJB type defined. 

現在根據http://docs.oracle.com/cd/A97335_02/apps.102/a83725/xml1.htm這是我爲企業bean定義EJB-jar.xml中的元素:

<enterprise-beans> 
    <session id="MyBean"> 
     <ejb-name>MyBean</ejb-name> 
     <ejb-class>foo.MyBean</ejb-class> 
     <env-entry> 
      <description> 
      </description> 
      <env-entry-name>bootloader.config</env-entry-name> 
      <env-entry-type>java.lang.String</env-entry-type> 
      <env-entry-value>my_config</env-entry-value> 
     </env-entry> 
    </session> 
</enterprise-beans> 

上述元素「會話」應定義豆類型是會話,因爲相應的類實現了javax.ejb.SessionBean接口。

我錯過了什麼嗎?或者當我遷移這些部署描述符時,還必須調整bean類本身嗎?

誠摯的問候和感謝提前

回答

0

好吧,我想通了。我忘了現在看起來像這樣的websphere特定部署描述符:

<?xml version="1.0" encoding="UTF-8"?> 
<ejb-jar-bnd xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
      xmlns="http://websphere.ibm.com/xml/ns/javaee" version="1.1"> 

    <session name="MyBean" simple-binding-name="MyBean"> 
     <resource-ref name="jms/foo/" binding-name="jms/foo"/> 
    </session> 

</ejb-jar-bnd> 

現在我能夠部署應用程序。

+0

我將此設置爲接受的答案,因爲它在發生時解決了我的問題。然而,這個問題可能還有其他更一般的原因,因此可以隨意添加更一般的答案(如可能的清單),然後我將它切換到接受的答案,因爲我的基本上只是說「它有一些指示關於你自己閱讀的部署描​​述符格式) – JBA

0

我有同樣的錯誤。

的修復對我來說是添加類名上面的「@無狀態」的註釋:

@Stateless 
public class XxxxBean implements YyyyService 

我意識到這是一個古老的線程,但我希望這可以幫助別人:)。

+0

不幸的是,它不正確,你需要定義'@Stateless'或者在ejb-jar.xml中創建條目。 – Gas