You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by Hiram Chirino <hi...@hiramchirino.com> on 2006/10/06 03:27:42 UTC

Re: A novice's experience

On 9/18/06, pmontrasio <pa...@paolomontrasio.com> wrote:
>
>
> I'm posting this to help polishing the documentation and provide some
> hints
> to other newcomers like me.



All our documentation is on wiki.. feel free to hit the "edit" link at the
footer of the page and update the documentation yourself!  You may be asked
to register but that's usually a painless process.

This post is a little long, so I start telling you that there is an happy
> ending: at the (very) end of the day I managed to make everything work,
> keep
> reading on to see how I did it :-)
>
> I discovered only yesterday that new technology called Comet (I happened
> to
> think "how does meebo.com work?" and googled for it). I read some articles
> in various blogs and quickly find out about ActiveMQ which looked perfect
> as
> the messaging system for the demo I wanted to set up.


yay!


I downloaded ActiveMQ 4.0.1 and Jetty 6.0.0 on my Linux box (Debian 3),
> installed them and started them up.
> I tested the Javascript interface to ActiveMQ using the demos bundled with
> Jetty (the ajax activemq-web-demo applications) and then I wrote one
> myself.
> Being totally new to Jetty (I'm a Tomcat user) and to JMS or any similar
> technology I failed to realized that Jetty was using an internal instance
> of
> the messaging system. That cost me time when I repeatedly tried and failed
> to send messages to those web clients from a Java program running from the
> console of my box.
>
> Hower before reaching that point I had to figure out how to write the Java
> program. I modeled it on the ActiveMQ Hello World application listed at
> http://www.activemq.org/site/hello-world.html
> That has been immensely useful, but there are a few things to fix in the
> code:
>
> 1) All the references to org.activemq classes should be changed to
> org.apache.activemq
> 2) The line with org.activemq.broker.impl.Main.main(args); fails to
> compile.
> That class doesn't exist anymore in any jar file included in the
> distribution. I found a substitute in
> org.apache.activemq.console.Main.main(args). I really don't know if this
> is
> the right class, but the application compiled, started and connected to
> ActiveMQ.


yes.. things have changed a bit since we moved from codehaus.  Sorry about..
but once again.. feel free to update docs as you catch inconsistencies like
this!



> Actually, when the application starts I get a strange error message:
>
> ERROR: java.lang.RuntimeException: Failed to execute start task. Reason:
> java.io.IOException: Could load xbean factory:
> java.lang.NoClassDefFoundError



Perhaps you were missing some jars from your classpath.  Do you have a full
stack trace?


I wrote that it is strange because that error doesn't prevent my application
> from working. Furthermore being able to load something hardly seems an
> error, hower I'm sure there is a good reason for that choice of words.
>
> Anyway, I run into big troubles now. It took me a lot of time to realize
> that my web clients were connecting to the messaging system running inside
> Jetty while the Java application was connecting to the standalone instance
> of ActiveMQ. When I realized it I modified the web.xml file of
> activemq-web-demo as follows:
>
> <param-name>org.apache.activemq.brokerURL</param-name>
> <param-value>tcp://localhost:61616</param-value>
>
> and
>
> <param-name>org.apache.activemq.embeddedBroker</param-name>
> <param-value>false</param-value>
>
> That shut down the internal instance and made Jetty connect to the
> standalone ActiveMQ.
>
> I spent another hour before figuring out the correct argument for the
> createTopic method. The first thing I tried was topic://FOO.BAR, which is
> what the Javascript interface uses. The Java binding requires only the
> name
> so the right line of code was
>
> Destination destination = session.createTopic("FOO.BAR")
>
> That fixed the application and, joy!, I was able to see the messages sent
> by
> my web clients and send messages to them.
>
> At the end of the day I had my demo working, and some questions. Maybe
> somebody can answer them
>
> 1) The ajax demos in activemq-web-demo define two variables, topic and
> membership, and set them to the same value. For instance the chat demo use
> the value "topic://CHAT.DEMO" for both. The topic is used in
>
> amq.addListener('chat', chatTopic, room._chat) and
> amq.removeListener('chat', chatTopic)
>
> and the membership is used in
>
> amq.sendMessage(chatMembership, messageText)
>
> The question is: the argument of sendMessage is the topic name and it's
> only
> a bad design that it uses a different variable?


You might be right.  send us a patch :)


2) The org.apache.activemq.console.Main class is really what I should use?
> Is it linked in some way to the error message I'm getting at run time?


It's the right class.


A final consideration. I lost some time due to some glitches in the
> documentation, but the fact that I got my demo working in a day being
> totally new to this technologies is an indicator of the good quality of
> the
> software and the community around it (wiki, blogs, etc.), so thanks
> everybody and I hope to have contributed my 2 cents.



You now part of that community!  Hopefully next time your feel free to
update the docs directly!

--
> View this message in context:
> http://www.nabble.com/A-novice%27s-experience-tf2292008.html#a6366058
> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>
>


-- 
Regards,
Hiram

Blog: http://hiramchirino.com