Ошибка бина, управляемого сообщениями - java.lang.Object не является интерфейсом

Я получал странное исключение, когда пытался создать еще один компонент, управляемый сообщениями. Я использовал стандартную конфигурацию, как мы уже использовали в проекте, но я не смог запустить EAR. Исключение, которое я получал - java.lang.Object не является интерфейсом, не очень помогло.

[5/21/15 10:27:54:531 CEST] 000000cb SharedEJBRunt E   WSVR0040E: addEjbModule failed for mySpecialServer_Server.jar
com.ibm.ejs.container.ContainerException: Failed to start mySpecial_Server_EAR#mySpecial_Server.jar#MySpecialMDB; nested exception is: 
    java.lang.IllegalArgumentException: java.lang.Object is not an interface
    at com.ibm.ejs.container.EJSContainer.startBean(EJSContainer.java:1495)
    at com.ibm.ws.ejbcontainer.runtime.AbstractEJBRuntime.startBean(AbstractEJBRuntime.java:1722)
    at com.ibm.ws.ejbcontainer.runtime.SharedEJBRuntimeImpl.startBean(SharedEJBRuntimeImpl.java:638)
    at com.ibm.ws.runtime.component.WASEJBRuntimeImpl.startBean(WASEJBRuntimeImpl.java:583)

Фрагмент реализации MDB

package my.special;

import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.jms.Message;
import javax.jms.MessageListener;

@MessageDriven(activationConfig = { @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue") })
public class MySpecialMDB implements MessageListener {

Дескриптор EJB

    <message-driven id="MySpecialMDB ">
        <ejb-name>MySpecialMDB</ejb-name>
        <ejb-class>my.special.MySpecialMDB</ejb-class>
        <transaction-type>Bean</transaction-type>
        <message-destination-type>javax.jms.Queue</message-destination-type>
    </message-driven>

Самое приятное, что точно такая же реализация уже существующего Бина не доставляла никаких хлопот.

1 ответ

Чтобы исправить это добавить <messaging-type> к дескриптору

<message-driven id="MySpecialMDB ">
    <ejb-name>MySpecialMDB</ejb-name>
    <ejb-class>my.special.MySpecialMDB</ejb-class>
    <messaging-type>javax.jms.MessageListener</messaging-type>
    <transaction-type>Bean</transaction-type>
    <message-destination-type>javax.jms.Queue</message-destination-type>
</message-driven>
Другие вопросы по тегам