У меня есть приложение Java EE, которое имеет один управляемый сообщениями компонент, и он отлично работает на JBoss 4, однако, когда я настраиваю проект для JBoss 6 и развертываю на нем, я получаю это ошибка;jBoss развертывание нарушения спецификации bean-сообщений с сообщением
WARN [org.jboss.ejb.deployers.EjbDeployer.verifier] EJB spec violation:
...
The message driven bean must declare one onMessage() method.
...
org.jboss.deployers.spi.DeploymentException: Verification of Enterprise Beans failed, see above for error messages.
Но моя фасоль имеет метод onMessage! Тогда он не работал бы на jboss 4.
Зачем нужна эта ошибка !?
Edit:
Класс в вопросе выглядит следующим образом
package ...
imports ...
public class MyMDB implements MessageDrivenBean, MessageListener {
AnotherSessionBean a;
OneMoreSessionBean b;
public MyMDB() {}
public void onMessage(Message message) {
if (message instanceof TextMessage) {
try {
//Lookup sessionBeans by jndi, create them
lookupABean();
// check message-type, then invokie
a.handle(message);
// else
b.handle(message);
} catch (SomeException e) {
//handling it
}
}
}
public void lookupABean() {
try {
// code to lookup session beans and create.
} catch (CreateException e) { // handling it and catching NamingException too }
}
}
Edit 2: И это jboss.xml соответствующие части
<message-driven>
<ejb-name>MyMDB</ejb-name>
<destination-jndi-name>topic/A_Topic</destination-jndi-name>
<local-jndi-name>A_Topic</local-jndi-name>
<mdb-user>user</mdb-user>
<mdb-passwd>pass</mdb-passwd>
<mdb-client-id>MyMessageBean</mdb-client-id>
<mdb-subscription-id>subid</mdb-subscription-id>
<resource-ref>
<res-ref-name>jms/TopicFactory</res-ref-name>
<jndi-name>jms/TopicFactory</jndi-name>
</resource-ref>
</message-driven>
Редактировать 3:
Я только что удалил все мои банки из проекта и только повторно добавил соответствующие (из новых версий), чтобы выпустить ошибки NoClassDefFound. Все еще проблема остается.
Редактировать: Любые указания, на какой области я должен смотреть? Мой проект, или jboss-configration, или настройки развертывания?
Можно ли увидеть класс, реализующий `onMessage()`? – skaffman 2010-12-16 14:37:06
Он вызывает другой сеанс после проверки сообщения, почему? Не могу ли я делать то, что я обычно могу сделать в методе? – rapadura 2010-12-16 15:04:44