0

我正在将我们的部署描述符从 EJB 2.x 迁移到 EJB 版本 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>

上面的元素“session”应该定义bean类型,它是session,因为它实现了javax.ejb.SessionBean接口。

我在这里错过了什么吗?或者在迁移那些部署描述符时我是否也必须调整 bean 类本身?

提前致以最诚挚的问候和感谢

4

2 回答 2

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>

现在我能够部署应用程序了。

于 2013-10-30T12:39:18.483 回答
0

我有同样的错误。

我的解决方法是在类名上方添加“@Stateless”注释:

@Stateless
public class XxxxBean implements YyyyService

我意识到这是一个旧线程,但我希望这可以帮助某人:)。

于 2014-07-17T02:04:19.790 回答