<!DOCTYPE html>
<!--
 -
 - 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.
 -
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
  <head>
    <title>Chapter 6. Management Channels - Apache Qpid&#8482;</title>
    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    <link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
    <link rel="stylesheet" href="/deferred.css" type="text/css" defer="defer"/>
    <script type="text/javascript">var _deferredFunctions = [];</script>
    <script type="text/javascript" src="/deferred.js" defer="defer"></script>
    <!--[if lte IE 8]>
      <link rel="stylesheet" href="/ie.css" type="text/css"/>
      <script type="text/javascript" src="/html5shiv.js"></script>
    <![endif]-->

    <!-- Redirects for `go get` and godoc.org -->
    <meta name="go-import"
          content="qpid.apache.org git https://gitbox.apache.org/repos/asf/qpid-proton.git"/>
    <meta name="go-source"
          content="qpid.apache.org
https://github.com/apache/qpid-proton/blob/go1/README.md
https://github.com/apache/qpid-proton/tree/go1{/dir}
https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
  </head>
  <body>
    <div id="-content">
      <div id="-top" class="panel">
        <a id="-menu-link"><img width="16" height="16" src="" alt="Menu"/></a>

        <a id="-search-link"><img width="22" height="16" src="" alt="Search"/></a>

        <ul id="-global-navigation">
          <li><a id="-logotype" href="/index.html">Apache Qpid<sup>&#8482;</sup></a></li>
          <li><a href="/documentation.html">Documentation</a></li>
          <li><a href="/download.html">Download</a></li>
          <li><a href="/discussion.html">Discussion</a></li>
        </ul>
      </div>

      <div id="-menu" class="panel" style="display: none;">
        <div class="flex">
          <section>
            <h3>Project</h3>

            <ul>
              <li><a href="/overview.html">Overview</a></li>
              <li><a href="/components/index.html">Components</a></li>
              <li><a href="/releases/index.html">Releases</a></li>
            </ul>
          </section>

          <section>
            <h3>Messaging APIs</h3>

            <ul>
              <li><a href="/proton/index.html">Qpid Proton</a></li>
              <li><a href="/components/jms/index.html">Qpid JMS</a></li>
              <li><a href="/components/messaging-api/index.html">Qpid Messaging API</a></li>
            </ul>
          </section>

          <section>
            <h3>Servers and tools</h3>

            <ul>
              <li><a href="/components/broker-j/index.html">Broker-J</a></li>
              <li><a href="/components/cpp-broker/index.html">C++ broker</a></li>
              <li><a href="/components/dispatch-router/index.html">Dispatch router</a></li>
            </ul>
          </section>

          <section>
            <h3>Resources</h3>

            <ul>
              <li><a href="/dashboard.html">Dashboard</a></li>
              <li><a href="https://cwiki.apache.org/confluence/display/qpid/Index">Wiki</a></li>
              <li><a href="/resources.html">More resources</a></li>
            </ul>
          </section>
        </div>
      </div>

      <div id="-search" class="panel" style="display: none;">
        <form action="http://www.google.com/search" method="get">
          <input type="hidden" name="sitesearch" value="qpid.apache.org"/>
          <input type="text" name="q" maxlength="255" autofocus="autofocus" tabindex="1"/>
          <button type="submit">Search</button>
          <a href="/search.html">More ways to search</a>
        </form>
      </div>

      <div id="-middle" class="panel">
        <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-broker-j-9.2.0/index.html">Qpid Broker-J 9.2.0</a></li><li><a href="/releases/qpid-broker-j-9.2.0/book/index.html">Apache Qpid Broker-J</a></li><li>Chapter 6. Management Channels</li></ul>

        <div id="-middle-content">
          <div class="docbook"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 6. Management Channels</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Java-Broker-Virtual-Host-Initial-Configuration.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="Java-Broker-Management-Channel-Web-Console.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="Java-Broker-Management-Channel"></a>Chapter 6. Management Channels</h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="Java-Broker-Management-Channel.html#Java-Broker-Management-Channel-HTTP">6.1. HTTP Management</a></span></dt><dd><dl><dt><span class="section"><a href="Java-Broker-Management-Channel.html#Java-Broker-Management-Channel-HTTP-Introduction">6.1.1. Introduction</a></span></dt><dt><span class="section"><a href="Java-Broker-Management-Channel.html#Java-Broker-Management-Channel-HTTP-DefaultConfiguration">6.1.2. Default Configuration</a></span></dt></dl></dd><dt><span class="section"><a href="Java-Broker-Management-Channel-Web-Console.html">6.2. Web Management Console</a></span></dt><dd><dl><dt><span class="section"><a href="Java-Broker-Management-Channel-Web-Console.html#Java-Broker-Management-Channel-Web-Console-Accessing">6.2.1. Accessing the Console</a></span></dt><dt><span class="section"><a href="Java-Broker-Management-Channel-Web-Console.html#Java-Broker-Management-Channel-Web-Console-Orientation">6.2.2. Orientation</a></span></dt><dt><span class="section"><a href="Java-Broker-Management-Channel-Web-Console.html#Java-Broker-Management-Channel-Web-Console-Managing-Entities">6.2.3. Managing Entities</a></span></dt></dl></dd><dt><span class="section"><a href="Java-Broker-Management-Channel-REST-API.html">6.3. REST API</a></span></dt><dd><dl><dt><span class="section"><a href="Java-Broker-Management-Channel-REST-API.html#Java-Broker-Management-Channel-REST-API-Introduction">6.3.1. Introduction</a></span></dt><dt><span class="section"><a href="Java-Broker-Management-Channel-REST-API.html#Java-Broker-Management-Channel-REST-API-APIDocs">6.3.2. REST API documentation</a></span></dt><dt><span class="section"><a href="Java-Broker-Management-Channel-REST-API.html#Java-Broker-Management-Channel-REST-API-Authentication">6.3.3. Authentication</a></span></dt><dt><span class="section"><a href="Java-Broker-Management-Channel-REST-API.html#Java-Broker-Management-Channel-REST-API-Create">6.3.4. Configured Object creation</a></span></dt><dt><span class="section"><a href="Java-Broker-Management-Channel-REST-API.html#Java-Broker-Management-Channel-REST-API-Update">6.3.5. Configured Object update</a></span></dt><dt><span class="section"><a href="Java-Broker-Management-Channel-REST-API.html#Java-Broker-Management-Channel-REST-API-Delete">6.3.6. Configured Object deletion</a></span></dt><dt><span class="section"><a href="Java-Broker-Management-Channel-REST-API.html#Java-Broker-Management-Channel-REST-API-Get">6.3.7. Retrieving Configured Object details</a></span></dt><dt><span class="section"><a href="Java-Broker-Management-Channel-REST-API.html#Java-Broker-Management-Channel-REST-API-Operations">6.3.8. Configured Object operations</a></span></dt><dt><span class="section"><a href="Java-Broker-Management-Channel-REST-API.html#Java-Broker-Management-Channel-REST-API-Status-Codes">6.3.9. HTTP status codes returned by REST interfaces</a></span></dt><dt><span class="section"><a href="Java-Broker-Management-Channel-REST-API.html#Java-Broker-Management-Channel-REST-API-Examples">6.3.10. Examples of REST requests with curl</a></span></dt><dt><span class="section"><a href="Java-Broker-Management-Channel-REST-API.html#Java-Broker-Management-Channel-REST-Query-API">6.3.11. Query API</a></span></dt><dt><span class="section"><a href="Java-Broker-Management-Channel-REST-API.html#Java-Broker-Management-Channel-REST-Query-Engine">6.3.12. Query Engine</a></span></dt><dt><span class="section"><a href="Java-Broker-Management-Channel-REST-API.html#Java-Broker-Management-Channel-REST-API-CORS">6.3.13. Cross Origin Resource Sharing (CORS)</a></span></dt></dl></dd><dt><span class="section"><a href="Java-Broker-Management-Metrics.html">6.4. Prometheus Metrics</a></span></dt><dt><span class="section"><a href="Java-Broker-Management-Channel-AMQP-Intrinstic.html">6.5. AMQP Intrinstic Management</a></span></dt></dl></div><p>The Broker can be managed over a number of different channels.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>HTTP - The primary channel for management. The HTTP interface comprises a Web
        Console and a REST API.</p></li><li class="listitem"><p>AMQP - The AMQP protocols 0-8..0-10 allow for some management of Exchanges, Queue and
        Bindings. This will be superseded by AMQP 1.0 Management. It is suggested that new users
        favour the Management facilities provided by the Web Console/REST API.</p></li></ul></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="Java-Broker-Management-Channel-HTTP"></a>6.1. HTTP Management</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Management-Channel-HTTP-Introduction"></a>6.1.1. Introduction</h3></div></div></div><p>The HTTP Management plugin provides a HTTP based API for monitoring and control of the
            Broker. The plugin actually provides two interfaces:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><a class="link" href="Java-Broker-Management-Channel-Web-Console.html" title="6.2. Web Management Console">Web Management
                            Console</a> - rich web based interface for the management of the
                        Broker.</p></li><li class="listitem"><p><a class="link" href="Java-Broker-Management-Channel-REST-API.html" title="6.3. REST API">REST API</a> -
                        REST API providing complete programmatic management of the Broker.</p></li></ul></div><p>The Web Management Console itself uses the REST API, so every function you can perform
            through the Web Management Console can be also be scripted and integrated into other
            systems. This provides a simple integration point allowing the Broker to monitored and
            controlled from systems such as Naoios or BMC Control-M.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Management-Channel-HTTP-DefaultConfiguration"></a>6.1.2. Default Configuration</h3></div></div></div><p>By default, the Broker is shipped with HTTP enabled running port 8080. The HTTP plugin
            is configured to require SASL authentication. The port is not SSL protected.</p><p>The settings can be changed by configuring the HTTP plugin and/or the port configured
            to serve HTTP.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="Java-Broker-Virtual-Host-Initial-Configuration.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="Java-Broker-Management-Channel-Web-Console.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">5.8. Virtualhost Initial Configuration </td><td width="20%" align="center"><a accesskey="h" href="Apache-Qpid-Broker-J-Book.html">Home</a></td><td width="40%" align="right" valign="top"> 6.2. Web Management Console</td></tr></table></div></div>

          <hr/>

          <ul id="-apache-navigation">
            <li><a href="http://www.apache.org/">Apache</a></li>
            <li><a href="http://www.apache.org/licenses/">License</a></li>
            <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
            <li><a href="http://www.apache.org/foundation/thanks.html">Thanks!</a></li>
            <li><a href="/security.html">Security</a></li>
            <li><a href="http://www.apache.org/"><img id="-apache-feather" width="48" height="14" src="" alt="Apache"/></a></li>
          </ul>

          <p id="-legal">
            Apache Qpid, Messaging built on AMQP; Copyright &#169; 2015
            The Apache Software Foundation; Licensed under
            the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache
            License, Version 2.0</a>; Apache Qpid, Qpid, Qpid Proton,
            Proton, Apache, the Apache feather logo, and the Apache Qpid
            project logo are trademarks of The Apache Software
            Foundation; All other marks mentioned may be trademarks or
            registered trademarks of their respective owners
          </p>
        </div>
      </div>
    </div>
  </body>
</html>
