여기 보스 5.1에서 나를 위해 작동하는 데 사용되는 EJB3의 MDB이다 : 나는 수도로JBoss 7.0.1에서 MDB 예제를 사용하고 있습니까?
@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
{
[...]
}
보십시오, 나는 보스 7.0.1이를 마이그레이션 할 수 없습니다. JMS가 설정되었고, OK (메인 JAR의) OK (대기 행 아웃)에 퍼블리시 할 수 있지만, EJB 리스너는 그냥 듣지 않습니다. 그래서 여기 내가 지금 가지고있는 무엇,
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"
가 나는 또한 지침에 따라 같이 JNDI 이름을 고정했습니다 : 내 EJB/WAR/EAR에 대한 배포 또는 런타임 오류를얻을
// 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
{
[...]
}
배포하기 전에 모든 로거를 으로 설정하면 내 MDB 클래스가 언급 된 유일한 시간은 org.jboss.vfs.util.SuffixMatchFilter
에 표시되는 것으로 나타납니다. 이는 좋지 않습니다.
저는 MDB support since 7.0.0 호의 문제를 겪어 왔으며 수십 개의 JIRA를 읽었습니다. 마이그레이션 가이드, EJB3 문서 등은 물론이고 혼란 스럽습니다. MDB 은이 7.0.1에서 작동해야하나요? 제 생각에는 제가 생각하기에 아주 간단한 사건입니다. 그렇다면 누구나 간단한 예제가 있습니다. 7.0.1에서 작동하지 않는 것이 정확히 무엇인지 설명하는 단일 문서 또는 마이그레이션 가이드입니까?
편집 : 단지 이것이 내 유일한 EJB라는 점을 추가 했으므로 아마도 JMS/MDB만큼 EJB 문제 일 것입니다.
업데이트 :
나는 아무런 문제 더미 @Stateless
을 배포 할 수 있지만, @MessageDriven
/@ActivationConfigProperty
의 어떤 조합이 전혀 영향이 없었습니다 (javax.jms.XXX
에 destinationType
가 오류를 생성하지 bodging를!). 모든 가능한 JNDI 조합에 대상 속성을 설정해 보았습니다.
에 대해 standalone.xml
을 확인했으며 큰 차이는 없습니다.
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]
가 문제 될 수 있습니다
내가 오류의 종류에 도착 가장 가까운이 무엇입니까? 내가 다른 곳에서 제안한 것처럼 보았을 때 @ResourceAdapter(value="hornetq-ra.rar")
을 추가하여 얻는다.
잘 모르겠지만,'propertyValue = "java :/topic/IncomingArticleNotificationsDest"' 조금 의심 스럽습니다. 그게 틀림 없습니까? EJB 3.1 이식 가능한 JNDI 이름은'java :/topic/...'과 같이 보일 것입니다. 여기서 xyz는 (global, app, module) 중 하나 일 수 있습니다. –
stratwine
제안 해 주셔서 감사합니다. MDB에서'java :/global/topic/IncomingArticleNotificationsDest'를 지정하고 있습니다 만, JBoss는'java : /'아래에 항상 주제를 배치합니다 (내가 본 모든 예제에서'standalone .xml'은 "topic/XYZ'"입니다). 최종 결과는 내 MDB가 여전히 호출되지 않는다는 것입니다. (BTW, 나는 더미 @ @ Stateless' 빈을 만들고 괜찮게 배포합니다.) –
일부 [startup config like this] (http://www.mastertheboss.com/jboss-application-server/327-developing-mdb)처럼 보입니다. -with-jboss-as-7.html)은 AS-7.0.1에서 필요합니다. – stratwine