Arbeiten MDB B. in JBoss 7.0.1?
Hier ist ein EJB3 MDB, verwendet, um Arbeit für mich in JBoss 5.1:
@TransactionAttribute( TransactionAttributeType.NOT_SUPPORTED )
@org.jboss.ejb3.annotation.Depends("jboss.messaging.destination:service=Topic,name=IncomingArticleNotifications")
@MessageDriven(
activationConfig = {
@ActivationConfigProperty( propertyName="destinationType", propertyValue="javax.jms.Topic"),
@ActivationConfigProperty( propertyName="destination", propertyValue="topic/IncomingArticleNotificationsDest"),
@ActivationConfigProperty( propertyName="subscriptionDurability", propertyValue="Durable"),
@ActivationConfigProperty( propertyName="messageSelector", propertyValue ="type='IncomingArticleNotification'")
}
)
public class IncomingArticleHandler implements MessageListener
{
[...]
}
Versuchen, wie ich könnte, ich kann nicht migriert werden, um JBoss 7.0.1. JMS eingerichtet ist OK, und ich kann Sie veröffentlichen, um die Ziel-OK (aus meiner Haupt-JAR), aber mein EJB-Hörer einfach nicht hören. Ich bekomme nicht bereitstellen-oder Laufzeit-Fehler für mein EJB /WAR /EAR:
01:02:40,600 INFO [org.jboss.as.server.deployment] (MSC service thread 1-4) Starting deployment of "product-ear-1.0-SNAPSHOT.ear"
01:02:41,752 INFO [org.jboss.as.server.deployment] (MSC service thread 1-1) Starting deployment of "product-ejb-1.0-SNAPSHOT.jar"
01:02:41,753 INFO [org.jboss.as.server.deployment] (MSC service thread 1-1) Starting deployment of "product.war"
Hab ich auch behoben die JNDI-Namen, wie pro die Anweisungen, also hier ist was ich jetzt habe:
//Ignore for now: @TransactionAttribute( TransactionAttributeType.NOT_SUPPORTED )
@ResourceAdapter("ejb3-rar.rar") //??? As per docs. No idea what this should be, an attempt to get something working.
@MessageDriven(
activationConfig = {
@ActivationConfigProperty( propertyName="destinationType", propertyValue="javax.jms.Topic"),
@ActivationConfigProperty( propertyName="destination", propertyValue="java:/topic/IncomingArticleNotificationsDest"), //updated
@ActivationConfigProperty( propertyName="subscriptionDurability", propertyValue="Durable")
//Ignore for now: @ActivationConfigProperty( propertyName="messageSelector", propertyValue ="type='IncomingArticleNotification'")
}
)
public class IncomingArticleHandler implements MessageListener
{
[...]
}
Einstellung alle Logger ALL
vor der Implementierung zeigt, dass die einzige Zeit, meine MDB-Klassen erwähnt werden, ist, wenn die org.jboss.vfs.util.SuffixMatchFilter
sieht - das kann nicht gut sein.
Habe ich die Ausgabe von MDB unterstützt seit 7.0.0 und Lesen durch Dutzende von JIRAs, nicht zu vergessen die migration guide, EJB3 docs und so weiter, aber ich bin verwirrt. Ich weiß MDBs sollte Arbeit in 7.0.1, aber das oben genannte ist machbar? Ich denke, meiner ist ganz ein einfacher Fall, so hat jemand ein einfaches lauffähiges Beispiel, ein Dokument, das besagt genau das, was funktioniert /funktioniert nicht mit 7.0.1 oder einer migration guide?
Edit: dachte, ich würde hinzufügen, dass dies meine einzige EJB -, so ist dies wahrscheinlich so viel ein EJB-problem als JMS/MDB.
Updates:
Kann ich bereitstellen einer dummy - @Stateless
ohne Probleme, aber keine Kombination von @MessageDriven
/@ActivationConfigProperty
gehabt hat, irgendeinen Effekt (bodging die destinationType
zu javax.jms.XXX
produziert keine Fehler!). Ich habe versucht Einstellung der destination-Eigenschaft, um alle möglichen JNDI-Kombinationen.
Ich habe meine standalone.xml
gegen standalone-preview.xml
und es gibt keine wesentlichen Unterschiede.
Den nächsten bekomme ich für jede Art von Fehler ist dieser:
00:53:25,886 DEBUG [org.hornetq.ra.Util] (MSC service thread 1-4) org.jboss.as.messaging.jms.TransactionManagerLocator from [Module "org.hornetq.ra:main" from local module loader @15a62c31 (roots: /Users/andrewregan/Desktop/jboss-as-7.0.1.Final/modules)]: java.lang.ClassNotFoundException: org.jboss.as.messaging.jms.TransactionManagerLocator from [Module "org.hornetq.ra:main" from local module loader @15a62c31 (roots: /Users/andrewregan/Desktop/jboss-as-7.0.1.Final/modules)]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:191)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:358)
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:307)
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:101)
at org.hornetq.ra.Util.locateTM(Util.java:261) [hornetq-ra-2.2.7.Final.jar:]
at org.hornetq.ra.HornetQResourceAdapter.locateTM(HornetQResourceAdapter.java:1555) [hornetq-ra-2.2.7.Final.jar:]
at org.hornetq.ra.HornetQResourceAdapter.start(HornetQResourceAdapter.java:210) [hornetq-ra-2.2.7.Final.jar:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [:1.6.0_26]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [:1.6.0_26]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [:1.6.0_26]
at java.lang.reflect.Method.invoke(Method.java:597) [:1.6.0_26]
at org.jboss.jca.deployers.common.AbstractResourceAdapterDeployer.startContext(AbstractResourceAdapterDeployer.java:339) [ironjacamar-deployers-common-1.0.3.Final.jar:1.0.3.Final]
at org.jboss.jca.deployers.common.AbstractResourceAdapterDeployer.createObjectsAndInjectValue(AbstractResourceAdapterDeployer.java:1883) [ironjacamar-deployers-common-1.0.3.Final.jar:1.0.3.Final]
at org.jboss.jca.deployers.common.AbstractResourceAdapterDeployer.createObjectsAndInjectValue(AbstractResourceAdapterDeployer.java:825) [ironjacamar-deployers-common-1.0.3.Final.jar:1.0.3.Final]
at org.jboss.as.connector.services.ResourceAdapterActivatorService$ResourceAdapterActivator.doDeploy(ResourceAdapterActivatorService.java:140) [jboss-as-connector-7.0.1.Final.jar:7.0.1.Final]
at org.jboss.as.connector.services.ResourceAdapterActivatorService.start(ResourceAdapterActivatorService.java:93) [jboss-as-connector-7.0.1.Final.jar:7.0.1.Final]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1765) [jboss-msc-1.0.0.GA.jar:1.0.0.GA]
at org.jboss.msc.service.ServiceControllerImpl$ClearTCCLTask.run(ServiceControllerImpl.java:2291) [jboss-msc-1.0.0.GA.jar:1.0.0.GA]
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_26]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_26]
at java.lang.Thread.run(Thread.java:680) [:1.6.0_26]
Könnte das ein problem sein? Ich verstehe, dass durch das hinzufügen @ResourceAdapter(value="hornetq-ra.rar")
wie ich gesehen habe vorgeschlagen, an anderer Stelle.
propertyValue="java:/topic/IncomingArticleNotificationsDest"
sieht ein wenig verdächtig zu mir. Sind Sie sicher, dass das korrekt ? EJB 3.1 portable JNDI-Namen Aussehen würde java:<xyz>/topic/...
wo xyz ist vielleicht (global,app,module)Danke für die Anregung. Ich bin jetzt angeben
java:/global/topic/IncomingArticleNotificationsDest
in die MDB, aber JBoss-immer setzt die Themen unter nur java:/
(in jedes einzelne Beispiel, das ich gesehen habe, das Eingabeformat erwartet in standalone.xml
ist "topic/XYZ
"). Das Ergebnis ist, dass mein MEB immer noch nicht bekommen, aufgerufen. (BTW, habe ich eine dummy - @Stateless
bean und setzt auch in Ordnung.)Sieht aus wie ein startup-config wie dieser erforderlich ist, ALS-7.0.1
Ich denke es ist nicht so, dass, ich habe bereits die
urn:jboss:domain:messaging:1.0
Abschnitt von standalone-preview.xml
in meinem standalone.xml
, aber ich werde versuchen, das Beispiel von Grund auf und sehen, was passiert. Was ich nicht verstehe ist, dass - auch wenn ich angegeben habe, das falsche Feld JNDI name die in meinem @MessageDriven
- meine MDB-Dateien werden komplett ignoriert. Keine bereitstellen, Fehler, nichts...
InformationsquelleAutor Andrew Regan | 2011-09-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich es endlich geschafft, dies zu lösen, mich. JNDI ist ein Roter-Hering. Ich wusste nicht, müssen Sie ein upgrade auf JBoss 7.1.0 alpha, noch habe ich ändern müssen, mein Projekt zu verwenden Java-EE-6-Bereitstellung (Umzug meiner EJBs in den KRIEG).
In der end, alles, was ich tun musste, war wiederum aus JBoss - EJB3 - "lite" - Modus (dieser wurde auf true festgelegt, in der standalone-preview.xml ich kopierte aus). Vermutlich MDBs werden nicht unterstützt in diesem Modus. Sobald ich dies Tat, mein MDBs sichtbar wurde.
Mein Arbeits-MDB sieht nun wie folgt aus:
UPDATE:
"EJB lite" - Modus entfernt wurde !
Ich würde vorschlagen, das entfernen Ihrer "lite" - Attribut zusammen, als der Standardwert ist false, und es wird de-unterstützt sowieso. Ich würde auch empfehlen, sorgfältig prüfen, Ihre standalone.xml gegen standalone-full.xml zu machen sicher, es gibt keine Unstimmigkeiten, die verursachen könnten, EJB/EJB3/JMS nicht funktionieren.
InformationsquelleAutor Andrew Regan