OpenEJB ignores configuration properties for Topic resource -
i'm trying use topic message driven bean on openejb. i've edited conf/openejb.xml to:
<?xml version="1.0" encoding="utf-8"?> <openejb> <resource id="trueupdate" type="javax.jms.topic"> destination = trueupdate clientid = nevermind </resource> </openejb> using bin/openejb properties get:
# resource(id=trueupdate) # classname: org.apache.activemq.command.activemqtopic # trueupdate = new://resource?type=javax.jms.topic trueupdate.destination = trueupdate trueupdate.clientid = nevermind this looks fine. however, when deploying ear file get:
exception: class org.apache.openejb.openejbexception: unable create activation spec: invalid settings: subscriptiondurability cannot set to: durable when destinationtype set javax.jms.queue valid when destinationtype set javax.jms.topic. clientid must set since durable subscription requested.: unable create activation spec: invalid settings: subscriptiondurability cannot set to: durable when destinationtype set javax.jms.queue valid when destinationtype set javax.jms.topic. clientid must set since durable subscription requested. @ org.apache.openejb.assembler.classic.assembler.createapplication(assembler.java:836) @ org.apache.openejb.assembler.classic.assembler.createapplication(assembler.java:546) @ org.apache.openejb.assembler.classic.assembler.createapplication(assembler.java:542) @ org.apache.openejb.assembler.deployerejb.deploy(deployerejb.java:195) @ org.apache.openejb.assembler.deployerejb.deploy(deployerejb.java:104) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:57) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) @ java.lang.reflect.method.invoke(method.java:606) @ org.apache.openejb.core.interceptor.reflectioninvocationcontext$invocation.invoke(reflectioninvocationcontext.java:181) @ org.apache.openejb.core.interceptor.reflectioninvocationcontext.proceed(reflectioninvocationcontext.java:163) @ org.apache.openejb.security.internal.internalsecurityinterceptor.invoke(internalsecurityinterceptor.java:34) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:57) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) @ java.lang.reflect.method.invoke(method.java:606) @ org.apache.openejb.core.interceptor.reflectioninvocationcontext$invocation.invoke(reflectioninvocationcontext.java:181) @ org.apache.openejb.core.interceptor.reflectioninvocationcontext.proceed(reflectioninvocationcontext.java:163) @ org.apache.openejb.cdi.cdiinterceptor.invoke(cdiinterceptor.java:126) @ org.apache.openejb.cdi.cdiinterceptor.access$000(cdiinterceptor.java:42) @ org.apache.openejb.cdi.cdiinterceptor$1.call(cdiinterceptor.java:63) @ org.apache.openejb.cdi.cdiinterceptor.aroundinvoke(cdiinterceptor.java:69) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:57) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) @ java.lang.reflect.method.invoke(method.java:606) @ org.apache.openejb.core.interceptor.reflectioninvocationcontext$invocation.invoke(reflectioninvocationcontext.java:181) @ org.apache.openejb.core.interceptor.reflectioninvocationcontext.proceed(reflectioninvocationcontext.java:163) @ org.apache.openejb.monitoring.statsinterceptor.record(statsinterceptor.java:176) @ org.apache.openejb.monitoring.statsinterceptor.invoke(statsinterceptor.java:95) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:57) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) @ java.lang.reflect.method.invoke(method.java:606) @ org.apache.openejb.core.interceptor.reflectioninvocationcontext$invocation.invoke(reflectioninvocationcontext.java:181) @ org.apache.openejb.core.interceptor.reflectioninvocationcontext.proceed(reflectioninvocationcontext.java:163) @ org.apache.openejb.core.interceptor.interceptorstack.invoke(interceptorstack.java:138) @ org.apache.openejb.core.stateless.statelesscontainer._invoke(statelesscontainer.java:239) @ org.apache.openejb.core.stateless.statelesscontainer.invoke(statelesscontainer.java:191) @ org.apache.openejb.server.ejbd.ejbrequesthandler.doejbobject_business_method(ejbrequesthandler.java:290) @ org.apache.openejb.server.ejbd.ejbrequesthandler.processrequest(ejbrequesthandler.java:140) @ org.apache.openejb.server.ejbd.ejbdaemon.processejbrequest(ejbdaemon.java:267) @ org.apache.openejb.server.ejbd.ejbdaemon.service(ejbdaemon.java:191) @ org.apache.openejb.server.ejbd.ejbserver.service(ejbserver.java:81) @ org.apache.openejb.server.ejbd.keepaliveserver$session.service(keepaliveserver.java:273) @ org.apache.openejb.server.ejbd.keepaliveserver$session.access$1000(keepaliveserver.java:192) @ org.apache.openejb.server.ejbd.keepaliveserver.service(keepaliveserver.java:326) @ org.apache.openejb.server.ejbd.ejbserver.service(ejbserver.java:72) @ org.apache.openejb.server.serverservicefilter.service(serverservicefilter.java:64) @ org.apache.openejb.server.serverservicefilter.service(serverservicefilter.java:64) @ org.apache.openejb.server.servicestats.service(servicestats.java:54) @ org.apache.openejb.server.serverservicefilter.service(serverservicefilter.java:64) @ org.apache.openejb.server.servicelogger.service(servicelogger.java:92) @ org.apache.openejb.server.serverservicefilter.service(serverservicefilter.java:64) @ org.apache.openejb.server.servicepool.access$201(servicepool.java:35) @ org.apache.openejb.server.servicepool$3.run(servicepool.java:174) @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1145) @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:615) @ java.lang.thread.run(thread.java:724) caused by: org.apache.openejb.openejbexception: error deploying 'messagelistenerbean'. exception: class org.apache.openejb.openejbexception: unable create activation spec: invalid settings: subscriptiondurability cannot set to: durable when destinationtype set javax.jms.queue valid when destinationtype set javax.jms.topic. clientid must set since durable subscription requested.: unable create activation spec: invalid settings: subscriptiondurability cannot set to: durable when destinationtype set javax.jms.queue valid when destinationtype set javax.jms.topic. clientid must set since durable subscription requested. @ org.apache.openejb.assembler.classic.assembler.startejbs(assembler.java:974) @ org.apache.openejb.assembler.classic.assembler.createapplication(assembler.java:730) ... 58 more caused by: org.apache.openejb.openejbexception: unable create activation spec: invalid settings: subscriptiondurability cannot set to: durable when destinationtype set javax.jms.queue valid when destinationtype set javax.jms.topic. clientid must set since durable subscription requested. @ org.apache.openejb.core.mdb.mdbcontainer.createactivationspec(mdbcontainer.java:251) @ org.apache.openejb.core.mdb.mdbcontainer.deploy(mdbcontainer.java:136) @ org.apache.openejb.assembler.classic.assembler.startejbs(assembler.java:961) ... 59 more caused by: javax.resource.spi.invalidpropertyexception: invalid settings: subscriptiondurability cannot set to: durable when destinationtype set javax.jms.queue valid when destinationtype set javax.jms.topic. clientid must set since durable subscription requested. @ org.apache.activemq.ra.activemqactivationspec.validate(activemqactivationspec.java:136) @ org.apache.openejb.core.mdb.mdbcontainer.createactivationspec(mdbcontainer.java:229) ... 61 more and here's bean:
@messagedriven(mappedname = "trueupdate", activationconfig = { @activationconfigproperty(propertyname = "messageselector", propertyvalue = "manager = true"), @activationconfigproperty(propertyname = "destinationtype", propertyvalue = "javax.jms.topic"), @activationconfigproperty(propertyname = "destination", propertyvalue = "trueupdate"), @activationconfigproperty(propertyname = "subscriptiondurability", propertyvalue = "durable"), @activationconfigproperty(propertyname = "subscriptionname", propertyvalue = "trueupdate manager"), }) public class messagelistenerbean implements messagelistener { ... } what doing wrong here?
i met same problem, , tried following things. works:
set clientid
@activationconfigproperty (propertyname = "clientid", propertyvalue = "clientidxxx")update "destinationtype" "destinationtype"
Comments
Post a Comment