<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd">
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
  Architecture
-->
<html lang="en">
<head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
    <meta content="ActiveMQ's next generation of messaging" name="description"/>
    <meta content="messaging,stomp,jms,activemq" name="keywords"/>
    <meta content="ActiveMQ" name="author"/>
    <link type="text/css" rel="stylesheet" href="styles/impact/css/pygmentize.css"/>
    <link type="text/css" rel="stylesheet" href="styles/impact/css/site.css"/>

    <style type='text/css'>
        /* <![CDATA[ */
        .download {
            font-size: 80%;
        }
        table.download { width: 100%;}
        table.download tr td {
            border: 1px solid #ccc;
            padding: .5em;
        }
        /* ]]> */
    </style>

    <title>ActiveMQ Artemis</title>
</head>
<body>
<div id="navigation">
    <div class="wrapper">
        <ul>
            <li><a href="index.html">ActiveMQ Artemis</a></li>
            <li><a href="docs.html">Documentation</a></li>
            <li><a href="download.html">Download</a></li>
        </ul>
    </div>
</div>
<div id="overview">
    <div class="wrapper">
        <div class="logo">
            <img src="images/activemq-logo.png" alt="ActiveMQ logo"/>
        </div>
        <div class="message">
            <h1>ActiveMQ Artemis</h1>
        </div>
    </div>
</div>
<div id="content">
    <div class="wrapper">
      <h2 id="release-notes---apache-activemq-artemis-1.5.0">Release Notes - Apache ActiveMQ Artemis 1.5.0</h2>
    </div>
    <div class="wrapper">
      <p>A complete list of JIRAs for the 1.5.0 release can be found at the <a href=https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&version=12338118">Apache ActiveMQ Artemis project JIRA</a></p>
      <p>Features for the current release:</p>
         <ul>
             <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-724'>ARTEMIS-724</a>] -         Implement no-local consumer support in AMQP
             </li>
             <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-737'>ARTEMIS-737</a>] -         Add JUnit Rules
             </li>
             <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-743'>ARTEMIS-743</a>] -         Default the queue address to the queue name
             </li>
             <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-753'>ARTEMIS-753</a>] -         Persist pause status after restart of the broker.
             </li>
             <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-756'>ARTEMIS-756</a>] -         Add basic CDI integration
             </li>
             <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-824'>ARTEMIS-824</a>] -         Management operations for creating and destroying connector services
             </li>
        </ul>
    </div>
</div>
</body>
</html>
