Thanks for your help Gary, it's working now.

Gary Tully wrote:
oops, sorry, my bad, so there is a broker factory for xbean but no
transport factory. The correct syntax is to use the vm transport
factory and tell it to use the xbean broker factory using the
brokerConfig attribute:

The brokerURI should be of the form: vm://localhost?brokerConfig=xbean:...
so you still get a vm connection, but the embedded broker is created
using the referenced xml file.

On 16 September 2010 14:27, Don Santillan <donzym...@gmail.com> wrote:
Hello Gary,

Here's what I did:
1. added activemq.xml to classpath (classes/activemq.xml)
2. used xbean to initialize broker

String brokerURI = "xbean:activemq.xml";
ActiveMQConnectionFactory connectionFactory = new
ActiveMQConnectionFactory(brokerURI);
connection = connectionFactory.createConnection();
connection.start();

3. run the test.

The test fails on the "connection = connectionFactory.createConnection();"
line with the error:
javax.jms.JMSException: Could not create Transport. Reason:
java.io.IOException: Transport scheme NOT recognized: [xbean]
  at
org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:35)
  at
org.apache.activemq.ActiveMQConnectionFactory.createTransport(ActiveMQConnectionFactory.java:245)
  at
org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:258)
  at
org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:230)
  at
org.apache.activemq.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:178)
  at
com.babelcentral.tallyho.gateway.messaging.MonitoringTest.initConnection(MonitoringTest.java:94)
  at
com.babelcentral.tallyho.gateway.messaging.MonitoringTest.setUp(MonitoringTest.java:37)
  at junit.framework.TestCase.runBare(TestCase.java:132)
  at junit.framework.TestResult$1.protect(TestResult.java:110)
  at junit.framework.TestResult.runProtected(TestResult.java:128)
  at junit.framework.TestResult.run(TestResult.java:113)
  at junit.framework.TestCase.run(TestCase.java:124)
  at junit.framework.TestSuite.runTest(TestSuite.java:232)
  at junit.framework.TestSuite.run(TestSuite.java:227)
  at
org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83)
  at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)
  at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
  at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
  at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
  at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
  at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.io.IOException: Transport scheme NOT recognized: [xbean]
  at
org.apache.activemq.util.IOExceptionSupport.create(IOExceptionSupport.java:27)
  at
org.apache.activemq.transport.TransportFactory.findTransportFactory(TransportFactory.java:204)
  at
org.apache.activemq.transport.TransportFactory.connect(TransportFactory.java:79)
  at
org.apache.activemq.ActiveMQConnectionFactory.createTransport(ActiveMQConnectionFactory.java:243)
  ... 19 more
Caused by: java.io.IOException: Could not find factory class for resource:
META-INF/services/org/apache/activemq/transport/xbean
  at
org.apache.activemq.util.FactoryFinder$StandaloneObjectFactory.loadProperties(FactoryFinder.java:96)
  at
org.apache.activemq.util.FactoryFinder$StandaloneObjectFactory.create(FactoryFinder.java:58)
  at
org.apache.activemq.util.FactoryFinder.newInstance(FactoryFinder.java:146)
  at
org.apache.activemq.transport.TransportFactory.findTransportFactory(TransportFactory.java:201)
  ... 21 more


-don


Gary Tully wrote:
Use the xbean: uri syntax to reference an xml configuration file in
your brokerURI, that is the most flexible way to configure an embedded
broker.

http://activemq.apache.org/broker-configuration-uri.html



On 16 September 2010 09:24, Don Santillan <donzym...@gmail.com> wrote:

Hello,

I am using activemq as a dependency in a web app. My web app is deployed
to
a jetty server which is run through maven by issuing "mvn jetty:run".

Of course, one part of the web app is to create and start a broker. I am
doing this through ActiveMQConnectionFactory (as described at the last
part
of

http://activemq.apache.org/how-do-i-embed-a-broker-inside-a-connection.html,
titled "Using ActiveMQConnectionFactory"):

String brokerURI = "vm://testBroker?broker.persistent=false";
ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory(brokerURI);
Connection connection = cf.createConnection();
connection.start();

Now, since I am running my web web app through maven, and activemq is
used
as a library (not as a standalone app), I don't have an activemq.xml
configuration file. So, I don't know where to activate/enable
StatisticsBrokerPlugin as described at
http://activemq.apache.org/statisticsplugin.html:

<broker ...>
 <plugins>
 statisticsBrokerPlugin/>
 </plugins>
</broker>

Also, since I am using ActiveMQConnectionFactory to create and start the
broker, I can't take advantage of setting the plugin through
BrokerService:

BrokerPlugin plugin = new StatisticsBrokerPlugin();
BrokerPlugin[] plugins = {plugin};

BrokerService broker = new BrokerService();
try {
 broker.addConnector(brokerURI);
 broker.setPlugins(plugins);
 broker.start();
} catch (Exception e) {
 e.printStackTrace();
}

Now, my questions are:
1. How will I be able to set the StatisticsBrokerPlugin with the above
scenario?
2. Is there a way to get a reference to the broker to be able to set the
plugin?
3. Is there a way to add and use activemq.xml if it is used as a library
and
run through maven? Set in pom.xml?

Please help. I really need this to work.

Thanks in advance.

-don







Reply via email to