Unfortunately you need to set any persistence parameters before adding a connector ...


On 9 Apr 2008, at 00:44, yg_cvg wrote:


Oddly enough, doing

m_broker = BrokerFactory.createBroker("broker:()? persistent=false");

instead of the first line below fixed the problem.  Also, a bunch of
warnings about JMX (which I also explicitly tried to disable before) went away. I'm not really sure why it fixed it, but it did. Based on the logging before the fix, it looked like it was trying to do some Kaha stuff BEFORE the setPersistent(false) line executes, so maybe that enables certain Kaha stuff to keep happening even after that line, though I'm still not sure why.

Any insight would still be appreciated, but the above seems to fix the
problem.


yg_cvg wrote:

I am embedding an ActiveMQ broker directly inside an app (long story). I
am doing so explicitly with Java code (i.e., "broker = new
BrokerService();", etc.). I would like to completely avoid any writing of
files when performing normal JMS tasks, such as sending and receiving
messages (again, long story... access control issues). [This may change later, but for now, I am trying to avoid disk use. Persistence is not a
concern.]  I do this to create/start the broker:

       m_broker = new BrokerService();
       m_broker.setBrokerName(S_STR_BROKER_NAME);
       m_broker.addConnector("vm://" + S_STR_BROKER_NAME);
       m_broker.setUseJmx(false);
       m_broker.setPersistent(false);
       m_broker.setPersistenceAdapter(null);
       m_broker.start();

However, when I start the broker, I see the following log output:

INFO [main]: ActiveMQ 5.0.0 JMS Message Broker (mainbroker) is starting
INFO [main]: For help or more information please see:
http://activemq.apache.org/
INFO [main]: AMQStore starting using directory: activemq-data/ mainbroker
INFO [main]: Kaha Store using data directory
activemq-data/mainbroker/kr-store/state
INFO [main]: Active data files: []
WARN [main]: The ReferenceStore is not valid - recovering ...
INFO [main]: Kaha Store successfully deleted data directory
activemq-data/mainbroker/kr-store/data
INFO [main]: Journal Recovery Started from: DataManager:(data-)
INFO [main]: Recovered 0 operations from redo log in 0.015 seconds.
INFO [main]: Finished recovering the ReferenceStore
INFO [main]: Using Persistence Adapter: MemoryPersistenceAdapter
INFO [main]: Kaha Store using data directory
activemq-data/mainbroker/kr-store/data
INFO [main]: Connector vm://mainbroker Started
INFO [main]: ActiveMQ JMS Message Broker (mainbroker,
ID:yurik2.engr.akamai.com-54085-1207691353487-0:0) started

So, on the one hand, it is using MemoryPersistenceAdapter (as I want, I
think), but also it's initializing some Kaha stuff (and also Journal
stuff... not sure if that's separate or the same thing) -- which I'd
rather it not do, if possible.

Later, when the in-VM client (which, unlike the above broker
initialization code, is constrained by rather strict security rules about
file writing) does a JMS send(), I get a security exception:

javax.jms.JMSException: access denied (java.io.FilePermission
activemq-data/mainbroker/kr-store/data read)
       at
org .apache .activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java: 49)
       at
org .apache .activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java: 1178)
       at
org.apache.activemq.ActiveMQSession.send(ActiveMQSession.java:1640)
       at
org .apache .activemq.ActiveMQMessageProducer.send(ActiveMQMessageProducer.java: 226)
       at
org .apache .activemq .ActiveMQMessageProducerSupport .send(ActiveMQMessageProducerSupport.java:240)
       at com.akamai.edgejava.tests.JmsTest.doGet(JmsTest.java:142)
__NOTE__ This is where I do send().
       ...etc...
Caused by: java.security.AccessControlException: access denied
(java.io.FilePermission activemq-data/mainbroker/kr-store/data read)
       at
java .security .AccessControlContext.checkPermission(AccessControlContext.java:323)
       at
java .security.AccessController.checkPermission(AccessController.java:546)
       at
java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
at java.lang.SecurityManager.checkRead(SecurityManager.java: 871)
       at java.io.File.list(File.java:971)
       at java.io.File.listFiles(File.java:1090)
       at
org .apache .activemq .kaha.impl.data.DataManagerImpl.<init>(DataManagerImpl.java:70)
       at
org .apache.activemq.kaha.impl.KahaStore.getDataManager(KahaStore.java: 358)
       at
org .apache.activemq.kaha.impl.KahaStore.getMapContainer(KahaStore.java: 221)
       at
org .apache .activemq .store .kahadaptor .KahaReferenceStoreAdapter .getMapReferenceContainer(KahaReferenceStoreAdapter.java:198)
       at
org .apache .activemq .store .kahadaptor .KahaReferenceStoreAdapter .createTopicReferenceStore(KahaReferenceStoreAdapter.java:165)
       at
org .apache .activemq .store .amq .AMQPersistenceAdapter .createTopicMessageStore(AMQPersistenceAdapter.java:414)
       at
org .apache .activemq .broker .region .DestinationFactoryImpl .createDestination(DestinationFactoryImpl.java:114)
       at
org .apache .activemq .broker.region.AbstractRegion.createDestination(AbstractRegion.java: 399)
       at
org .apache .activemq .broker .jmx.ManagedTopicRegion.createDestination(ManagedTopicRegion.java:56)
       at
org .apache .activemq .broker.region.AbstractRegion.addDestination(AbstractRegion.java:116)
       at
org .apache .activemq .broker.region.RegionBroker.addDestination(RegionBroker.java:259)
       at
org .apache.activemq.broker.region.RegionBroker.send(RegionBroker.java: 382)
       at
org .apache .activemq.broker.TransactionBroker.send(TransactionBroker.java:224)
       at
org.apache.activemq.broker.BrokerFilter.send(BrokerFilter.java:125)
       at
org .apache .activemq .broker .CompositeDestinationBroker.send(CompositeDestinationBroker.java:95)
       at
org .apache .activemq.broker.MutableBrokerFilter.send(MutableBrokerFilter.java: 135)
       at
org .apache .activemq .broker.TransportConnection.processMessage(TransportConnection.java: 434)
...etc...

It's trying to read "activemq-data/mainbroker/kr-store/data", which is not allowed for reasons I won't go into here. Why is it trying to do this Kaha stuff, if I want memory persistence only? Is there a way to disable
this?

Thank you so much.


--
View this message in context: 
http://www.nabble.com/completely-disabling-Kaha-Store-tp16575091s2354p16576404.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.




cheers,

Rob

http://open.iona.com/ -Enterprise Open Integration
http://rajdavies.blogspot.com/



Reply via email to