Welcome to Apache ActiveMQ 
=======================================================================
Apache ActiveMQ is a high performance Apache 2.0 licensed
Message Broker and JMS 1.1 implementation.

Getting Started
===============
To help you get started, try the following links:

Getting Started
http://activemq.apache.org/version-5-getting-started.html

Building
http://activemq.apache.org/version-5-getting-started.html#GettingStarted-WindowsSourceInstallation
http://activemq.apache.org/version-5-getting-started.html#GettingStarted-UnixSourceInstallation

Examples
http://activemq.apache.org/examples.html

We welcome contributions of all kinds, for details of how you can help
http://activemq.apache.org/contributing.html

Please refer to the website for details of finding the issue tracker, 
email lists, wiki or IRC channel at http://activemq.apache.org/

Please help us make Apache ActiveMQ better - we appreciate any feedback 
you may have.

Enjoy!

Licensing
=======================================================================

   This software is licensed under the terms you may find in the file 
   named "LICENSE.txt" in this directory.

   This distribution includes cryptographic software.  The country in 
   which you currently reside may have restrictions on the import, 
   possession, use, and/or re-export to another country, of 
   encryption software.  BEFORE using any encryption software, please 
   check your country's laws, regulations and policies concerning the
   import, possession, or use, and re-export of encryption software, to 
   see if this is permitted.  See <http://www.wassenaar.org/> for more
   information.

   The U.S. Government Department of Commerce, Bureau of Industry and
   Security (BIS), has classified this software as Export Commodity 
   Control Number (ECCN) 5D002.C.1, which includes information security
   software using or performing cryptographic functions with asymmetric
   algorithms.  The form and manner of this Apache Software Foundation
   distribution makes it eligible for export under the License Exception
   ENC Technology Software Unrestricted (TSU) exception (see the BIS 
   Export Administration Regulations, Section 740.13) for both object 
   code and source code.

   The following provides more details on the included cryptographic
   software:
   
   ActiveMQ supports the use of SSL TCP connections when used with 
   with a JVM supporting the Java Cryptography extensions
   <http://java.sun.com/javase/technologies/security/>.  ActiveMQ does 
   not include these libraries itself, but is designed to use them.

