<?xml version="1.0" encoding="utf-8"?>
<!--
  ~ Copyright 2009-2019 Roland Huss
  ~
  ~ Licensed 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.
  -->

<document xmlns="http://maven.apache.org/changes/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/changes/1.0.0 http://maven.apache.org/xsd/changes-1.0.0.xsd">
  <properties>
    <title>Jolokia</title>
    <author email="roland@jolokia.org">Roland Huß</author>
  </properties>
  <body>
    <release version="1.7.1" description="Release 1.7.1" date="2021-09-19">
      <action dev="grgrzybek" type="fix" issue="477">
        Removed local system dependencies in jvm-agent's pom.xml that accidentally slipped in
      </action>
    </release>
    <release version="1.7.0" description="Release 1.7.0" date="2021-07-26">
      <action dev="grgrzybek" type="fix" issue="466">
        Reimplement self-signed certificate generation without using reflection
      </action>
      <action dev="mmelko" type="fix" issue="465">
        Handle UnsupportedOperationException to allow properly read Runtime MBean on jdk11
      </action>
      <action dev="grgrzybek" type="update" issue="464">
        Provide non-reflective access to JVM Attach API on JDK9+
      </action>
      <action dev="ryandgoulding" type="fix" issue="460">
        Fix possible integer overflow in OperationChecking.java
      </action>
      <action dev="sathieu" type="add" issue="445">
        Debian package: Allow installation with openjdk-8-jre and with headless JREs
      </action>
      <action dev="TheWeatherCompany" type="fix" issue="436">
        Fixes SSL failure to connect using proxy or .war
      </action>
      <action dev="skarsaune" type="add" issue="453">
        Do not rely on whatever Kubernetes context is current at the client and allow specifying context when connecting with the Kubernetes connector.
      </action>
      <action dev="skarsaune" type="add" issue="434">
      JSR-160 connector for connecting to a Pod in a Kubernetes cluster.
      </action>
      <action dev="skarsaune" type="add" issue="431">
       JSR-160 connector using Jolokia
      </action>
       <action dev="graben" type="add" issue="421">
        Make multicast discovery address and multicast port configurable with configuration, system property or environment variable.
      </action>
      <action dev="JLLeitschuh" type="fix" issue="430">
        Use HTTPS to resolve dependencies in Maven Build
      </action>
      <action dev="coheigea" type="fix" issue="414">
       Don't require user to be set when JAAS authentication is configured for the OSGi connector.
      </action>
      <action dev="rhuss" type="fix" issue="388">
       Fix the usage of JRE 1.8 classes that does not work with Java 6
      </action>
    </release>
    <release version="1.6.2" description="Release 1.6.2" date="2019-06-20">
      <action dev="dsimansk" type="update" issue="403">
        Add support to load multiple CA certs from store
      </action>
    </release>
    <release version="1.6.1" description="Release 1.6.1" date="2019-05-01">
      <action dev="nevenr" type="add" issue="344">
        Add configuration option authMatch which explains how to combine multiple authenticators if MultiAuthenticator is used.
      </action>
      <action dev="nevenr" type="add" issue="334">
        Add BigInteger simplifier. BigInteger becomes a JSON object with the key "bigint" containing the big integer value as String.
      </action>
      <action dev="nevenr" type="add" issue="367">
        Add configuration option threadNamePrefix which will be used by jolokia http server executor
        Default: "jolokia-"
      </action>
      <action dev="rhuss" type="fix">
        When strict-checking is enabled for a CORS policy, then reject a request also when no Origin or Referer header is given.
      </action>
    </release>
    <release version="1.6.0" description="Release 1.6.0" date="2018-06-25">
      <action dev="rhuss" type="update">
        Enable authentication with role "jolokia" for the war agent by default.
      </action>
      <action dev="rhuss" type="add">
        Add new "jolokia-unsecured.war" which unsecured as "jolokia.war" in version 1.5.0 and below.
      </action>
    </release>
    <release version="1.5.0" description="Release 1.5.0" date="2018-02-08">
      <action dev="rhuss" type="fix">
        Restrict allowed mime types to "text/plain" and "application/json" for the response.
      </action>
      <action dev="rhuss" type="add">
        Because of security reasion, the JSR-160 proxy mode is disabled by default int the Java EE agent.
        It can be enabled via web.xml configuration, a system property or an environment variable. In addition
        it is now possible to configure a whitelist with patterns which are allowed as targets in the
        proxy mode. See the reference manual section on "Proxy mode" for details.
      </action>
      <action dev="ryandgoulding" type="add" issue="358">
        New authMode "service-any" and "service-all" to allow to lookup an
        org.jolokia.osgi.security.Authenticator used for authentication. Note that this class has
        been changed from an abstract base class to an interface for ease of customization.
      </action>
    </release>
    <release version="1.4.0" description="Release 1.4.0" date="2018-01-23">
      <action dev="rhuss" type="fix" issue="366">
        Removed ChunkedWriter to avoid references and inclusion of parts of StreamEncoder
        which is a Java internal class
      </action>
      <action dev="seryckd-jda" type="fix" issue="338">
        Fix incorrect CORS header
      </action>
      <action dev="bcubk" type="fix" issue="309">
        Support "max connection per route" setting for J4pClientBuilder to prevent a ConnectionPoolTimeoutException
      </action>
      <action dev="pgier" type="update" issue="323">
        Update to httpcore 4.4.7 for the Java client
      </action>
      <action dev="xiu" type="add" issue="307">
        Add debian package generation to the JVM agent
      </action>
      <action dev="rhuss" type="add">
        Print all configuration value for the /version  command: When not set explicitly then print the
        default value (if any).
      </action>
      <action dev="danpfe" type="add" issue="343">
        Modifications to make JVM Agent work on IBM JVM 8.
      </action>
    </release>
    <release version="1.3.7" description="Release 1.3.7" date="2017-07-06">
      <action dev="rhuss" type="fix" date="2017-05-17" issue="198">
        Support attaching to running JVM even when -XX:+PerfDisableSharedMem is given
      </action>
      <action dev="robstryker" type="fix" date="2017-05-31" issue="326">
        Better error message for Java client
      </action>
    </release>
    <release version="1.3.6" description="Release 1.3.6" date="2017-04-03">
      <action dev="rraez" type="fix" date="2016-09-18" issue="258">
        Add support for JBoss modules for the Jolokia JVM agent
      </action>
      <action dev="rhuss" type="fix" date="2017-02-16" issue="305">
        Fix issue for read request with a single attribute in an array
      </action>
      <action dev="apupier" type="add" date="2017-03-31" issue="317">
        provide classname MBeanInfo on List request
      </action>
    </release>
    <release version="1.3.5" description="Release 1.3.5" date="2016-10-4">
      <action dev="paoloantinori" type="add" date="2016-09-18" issue="283">
        Support JSON streaming also for AgentServlet (WAR and OSGi agent)
      </action>
      <action dev="rhuss" type="fix" date="2016-09-20">
        Avoid NPE in Websphere detector
      </action>
      <action dev="rhuss" type="fix" issue="284" date="2016-10-1">
        Re-add hooks for creating custom restrictors
      </action>
      <action dev="savage-engineer" type="add" issue="281" date="2016-10-1">
        Added better version detection of Payara Server
      </action>
    </release>
    <release version="1.3.4" description="Release 1.3.4" date="2016-07-31">
      <action dev="rhuss" type="add" date="2016-07-28" issue="278">
        Add a quite and java.util.logging LogHandler implementations which can be used
        with 'logHandlerClass'
      </action>
      <action dev="chirino" type="add" date="2016-07-18" issue="273">
        Allow a basic auth as alternative to client cert authentication when both --user and
        --useSslClientAuthentication is used.
      </action>
      <action dev="drcapulet" type="add" date="2016-07-04" issue="257">
        Allow user-specifiable SSL / TLS protocols and ciphers to the JVM agent
      </action>
      <action dev="gnufied" type="add" date="2016-05-19" issue="243">
        JSON response is streamed by default for the JVM agent to reduce memory activity
      </action>
      <action dev="gquintana" type="add" date="2016-05-04" issue="247">
        Add the possibility to add a SSL connection factory the J4pClient
      </action>
      <action dev="rhuss" type="fix" date="2016-04-13" issue="251">
        Fixed TomcatDetector to match more flexibly
      </action>
      <action dev="rhuss" type="fix" date="2016-04-13" issue="249">
        Removed Java 1.7 exception class, make the agent working with Java 1.6 again.
      </action>
    </release>
    <release version="1.3.3" description="Release 1.3.3" date="2016-02-16">
      <action dev="dejanb" type="add" date="2016-01-15" issue="239">
        Ignoring transient values during serialization when annotated
        with @Transient
      </action>
      <action dev="arnabbiswas1" type="fix" date="2016-01-15" issue="150">
        Treat null and empty paths the same when using HistoryKey
      </action>
      <action dev="arnabbiswas1" type="fix" date="2016-01-15" issue="221">
        Fix race condition when initializing the agent details
      </action>
      <action dev="nevenr" type="fix" date="2016-01-17" issue="200">
        Fix serialization of empty TabularData
      </action>
      <action dev="nevenr" type="add" date="2016-01-17" issue="224">
        Allow custom restrictors for the JVM and WAR agent.
      </action>
      <action dev="nevenr" type="add" date="2016-01-17" issue="218">
        Add missing SSL config options to Spring's jolokia-config.xsd
      </action>
      <action dev="nevenr" type="add" date="2016-01-18" issue="164">
        Allow encrypted keystore passwords which can be created with
        the "encrypt" command of the JVM agent.
      </action>
      <action dev="rhuss" type="add" date="2016-01-23" issue="234">
        Add configuration option "allowDnsReverseLookup" which, if set
        to false, will omit reverse DNS lookups during restrictor checking.
        Default is "true" (for backwards compatibility).
      </action>
      <action dev="rhuss" type="add" date="2016-01-23" issue="240">
        Add global configuration option "allowErrorDetails" which allows to avoid
        the inclusion of stack traces and error details when set.
      </action>
    </release>
    <release version="1.3.2" description="Release 1.3.2" date="2015-10-5">
      <action dev="roland" type="add" date="2015-10-04">
        Support for dynamically created, self-signed server
        certificates when no server certificate is configured
      </action>
      <action dev="arnabbiswas1" type="fix" date="2015-09-30" issue="204">
        Add missing check for HTTP method in request handler.
      </action>
      <action dev="roland" type="add" date="2015-10-02">
        Support for SSL authentication with restricting to given
        client cert's  principals
      </action>
      <action dev="roland" type="add" date="2015-10-01">
        Support for PEM certs and keys when using the JVM agent with
        TLS
      </action>
      <action dev="zisisli" type="update" date="2015-09-14" issue="214">
        Enhanced 'GlassfishDetector' for Payara flavour of glassfish
      </action>
      <action dev="nevenr" type="add" date="2015-07-02" issue="199">
        Allow environment placeholders in "agentId"
      </action>
    </release>
    <release version="1.3.1" description="Release 1.3.1" date="2015-05-28">
      <action dev="roland" type="add" date="2015-05-27" issue="197">
        Added a DelegatingAuthenticator which passes a request's Authorization: header to a delegate URL for
        verification (like it is done for OAuth2 resource verification in OpenShift)
      </action>
      <action dev="roland" type="fix" date="2015-05-27">
        Update Mule dependency to mule-core:2.6.0 since some older transitive dependencies has been vanished from
        Maven central
      </action>
      <action dev="roland" type="fix" date="2015-05-27" issue="187">
        Fixed default for 'maxCollections' to unlimited (was still set to 1000)
      </action>
      <action dev="roland" type="update" date="2015-05-27">
        Changed config parameter 'authenticatorClass' to 'authClass' for consistencies sake.
      </action>
    </release>
    <release version="1.3.0" description="Release 1.3.0" date="2015-05-07">
      <action dev="roland" type="fix" date="2015-05-06" issue="187">
        Removed default truncation on 1000 collection elements as defined for the WAR agent in web.xml. Truncation
        can be enabled by setting the config parameter maxCollectionSize in web.xml to a value greater than 0.
      </action>
      <action dev="roland" type="fix" date="2015-05-06" issue="193">
        Fixed setting of "secured" flag when doing autodiscovery with the servlet agent. It will be now
        always be set after the first HTTP request has been served.
      </action>
      <action dev="roland" type="fix" date="2015-05-05" issue="192">
        Fixed resolving of Spring EL expressions (#{ ... }) when Jolokia's Spring configuration
        schema is used
      </action>
      <action dev="roland" type="add" date="2015-03-05" issue="182">
        Added support for Mule 3.6 (which contains Jetty 9)
      </action>
      <action dev="roland" type="fix" date="2015-03-05" issue="184">
        Fix race condition when creating response date headers
      </action>
      <action dev="khaing211" type="add" date="2015-02-01" issue="183">
        Support for constructor based serialization conversion
      </action>
      <action dev="jcordes73" type="fix" date="2015-01-10" issue="178">
       Fix for weird InstanceNotFoundException on JBoss EAP 6.3 when doing a "list"
      </action>
      <action dev="roland" type="add" date="2015-01-13" issue="177">
        Added MBeanPlugin as a way to hook into the agent's lifecyle
      </action>
      <action dev="elnkwelch" type="add" date="2015-01-03">
        OSGi agent can read properties from Configuration Admin service with PID org.jolokia.osgi
      </action>
      <action dev="roland" type="add" date="2014-12-23" issue="173">
        Added the possibility to hook into the deserialization process
        for responses (Java client).
      </action>
      <action dev="nevenr" type="add" date="2014-12-11" issue="169">
        Allow a proxy to be specified in J4pClientBuilder
      </action>
    </release>
    <release version="1.2.3" description="Release 1.2.3" date="2014-11-08">
      <action dev="nevenr" type="fix" date="2014-10-21" issue="166">
        JVM Agent and SSL client authentication fixed
      </action>
      <action dev="nevenr" type="add" date="2014-10-21" issue="167">
        Enabling additional configuration parameters for HTTPS
      </action>
      <action dev="ogis-nakagawa" type="add" date="2014-10-18" issue="165">
        Added support for Mule ESB 3.5
      </action>
      <action dev="roland" type="fix" date="2014-09-03" issue="158">
        Missing attributes in multi attribute read won't croak with an error anymore when "ignoreErrors"
        is used.
      </action>
      <action dev="roland" type="add" date="2014-08-18" issue="156">
        Allow system property and environment expansion of the value specified with "policyLocation".
      </action>
      <action dev="roland" type="fix" date="2014-08-18" issue="155">
        Fixed MulticastSocketListenerThread to be a daemon thread so that it doesn't
        prevent the shutdown of the JVM
      </action>
      <action dev="roland" type="fix" date="2014-07-01" issue="154">
        Lookup system resources when no class loader is available (e.g. because
        Jolokia is on the bootstrap classpath)
      </action>
    </release>
    <release version="1.2.2" description="Release 1.2.2" date="2014-06-14">
      <action dev="roland" type="fix" date="2014-06-06" issue="138">
        Added missing configuration options to the configuration XSD for the
        spring config name space.
      </action>
      <action dev="roland" type="fix" date="2014-06-04" issue="142">
        Fixed endless loop when using debugInfo
      </action>
      <action dev="roland" type="add" date="2014-06-03" issue="106">
        Added wildcard ("*") support for pathes in order to skip 'levels'
      </action>
      <action dev="roland" type="add" date="2014-05-23" issue="141">
        Added possibility to add a custom authenticator for the Java client. The standard implementation uses
        Basic Authentication and allows also to use preemptive authentication.
      </action>
      <action dev="roland" type="update" date="2014-05-21" issue="137">
        Updated json-simple to version 1.1.1. Although it has a bogus dependency declaration on junit, it comes
        with a proper OSGi Manifest. The jUnit dependency is excluded by us, so this should be safe.
      </action>
    </release>
    <release version="1.2.1" description="Release 1.2.1" date="2014-04-29">
      <action dev="roland" type="add" date="2014-04-24">
        Added "strict-checking" for jolokia-access.xml in the CORS
        section in order to enable server side origin checking, too.
      </action>
      <action dev="roland" type="fix" date="2014-04-10" issue="123">
        Fixed issue with JBoss 4.2.3 and JNDI lookups.
      </action>
      <action dev="cymantic" type="update" date="2014-04-10" issue="122">
        Update Java client for usage with Apache Http Components >= 4.3. Please stick to Jolokia &gt;= 1.2.0 for the
        Java client if you need to use Apache Http Client libraries &lt; 4.3. These will also work with the 1.2.1 agent.
      </action>
      <action dev="roland" type="add" date="2014-04-04" issue="133">
        Added a server detector for ActiveMQ.
      </action>
      <action dev="roland" type="fix" date="2014-03-30" issue="135">
        Cleaned up warnings for multicast discovery request failures.
      </action>
      <action dev="roland" type="add" date="2014-03-30" issue="134">
        Allow for placeholders in "discoveryAgentUrl" configuration to be filled with environment
        variables and system properties.
      </action>
      <action dev="roland" type="fix" date="2014-03-29" issue="132">
        Fixed typo in Spring configuration for automatic agent startup.
      </action>
    </release>
    <release version="1.2.0" description="Release 1.2.0" date="2014-02-24">
      <action dev="roland" type="add" date="2014-02-14" issue="127">
        Agents can be configured to answer to discovery multicast request with there URL. This
        features is enabled by default for the JVM agent, and must enabled for the WAR
        agent with a configuration option.
      </action>
      <action dev="roland" type="add" date="2014-02-14" issue="127">
        New MBean "jolokia:type=Discovery" for sending multicast request for detecting other agents.
      </action>
      <action dev="roland" type="update" date="2014-02-14">
        "version" command response contains configuration information which differs from the default values. In
        addition "agentType", "agentDescription" and "agentId" are added as possible configuration
        options.
      </action>
    </release>
    <release version="1.1.5" description="Release 1.1.5" date="2013-11-08">
      <action dev="roland" type="fix" date="2013-10-14" issue="63">
        Fixed Glassfish detector's lazy initialization of the AMX boot system.
      </action>
    </release>
    <release version="1.1.4" description="Release 1.1.4" date="2013-10-03">
      <action dev="jhermann" type="fix" date="2013-09-27" issue="116">
        Ignore Daemon Thread from Tanunki JSW when deciding whether the agent should shut down or not
      </action>
      <action dev="roland" type="fix" date="2013-09-27" issue="117">
        Fixed InstanceNotFoundExceptions in case of a multiple attribute read, for the case that an MBean
        get deregistered between being included in the search result set and the actual query.
      </action>
      <action dev="georgy" type="add" date="2013-09-25" issue="115">
        Introduced new configuration parameter "authenticatorClass" which can be used to provide custom authenticator
        for JVM agent.
      </action>
      <action dev="roland" type="add" date="2013-09-02">
        Introduced new configuration parameter "logHandlerClass" which can be used to specify an alternate
        LogHandler for the WAR and JVM agent. Also, if the JVM agent is used programmatically, a LogHandler
        instance can be provided during construction time.
      </action>
    </release>
    <release version="1.1.3" description="Release 1.1.3" date="2013-07-30">
      <action dev="roland" type="fix" date="2013-06-07">
        Fixed issue wit the new CORS authentication in jolokia.js.
      </action>
      <action dev="roland" type="add" issue="108" date="2013-06-07">
        The authenticator for the JVM Agent can now be specified via the configuration in order
        to provide a custom authenticator which goes beyond simple BasicAuthentication.
      </action>
      <action dev="roland" type="add" date="2013-06-07">
        Added the possibility to provide an external HttpServer when creating the JvmAgent.
      </action>
    </release>
    <release version="1.1.2" description="Release 1.1.2" date="2013-05-28">
      <action dev="roland" type="fix" issue="105" date="2013-05-05">
        Conversion for TabularData optimized. If any index of an TabularData
        structure is not a SimpleType, then a direct serialization of the Tabular
        Data (i.e. an JSON Object with two entries "indexNames" and "values" is created).
        Otherwise, if it is the representation of an MXBean Map attribute, the map is recreated,
        otherwise, nested maps are used for simple acces. More on this in the
        reference manual.
      </action>
      <action dev="roland" type="fix" issue="104" date="2013-05-03">
        Added extra CORS header for allowing authentication during Ajax CORS access.
      </action>
      <action dev="roland" type="fix" issue="97" date="2013-04-18">
        Added support for non-string keys when serializing TabularData
        (i.e. long, int, short, byte, ObjectName).
      </action>
      <action dev="roland" type="fix" date="2013-04-16">
        Catch errors for registering on "start" and "stop" events for cubism. Still waiting
        for my pull request to be applied.
      </action>
      <action dev="roland" type="fix" issue="96" date="2013-04-11">
        J4pReadRequest now fetches all attributes if no attribute is given.
      </action>
      <action dev="jpamador" type="add" date="2013-04-09">
        Added converters for java.net.URL
      </action>
    </release>
    <release version="1.1.1" description="Release 1.1.1" date="2013-03-26">
      <action dev="roland" type="fix" issue="71">
        "Expires" header contains now a valid date value, one hour less the current time.
        This follows almost the recommendation of RFC-2616.
      </action>
      <action dev="roland" type="fix" issue="84" date="2013-03-17">
        Fixed assembly of distribution packages where the JMX and Spring packages were
        missing.
      </action>
      <action dev="roland" type="add" issue="77" date="2013-03-15">
        JS: j4p.register() can now use a 'onlyIfModified' attribute to call the callback only
        if some changes has happened on the server side. This works currently
        only for list requests.
      </action>
      <action dev="roland" type="add" issue="78" date="2013-03-15">
        Added the possibility to use the attributes "callback" and "config" in j4p.register()
        in the JS library.
      </action>
      <action dev="marosmars" type="add" issue="85" date="2013-03-14">
        Added property errorValue to J4pRemoteException which contains a serialized
        version of the exception if the 'serializeException' processing parameter
        is switched on.
      </action>
      <action dev="benson-basis" type="add" issue="86" date="2013-03-13">
        If no host is given, the JVM agent will now bind to localhost. If a
        host of "0.0.0.0" or "*" is given, then the agent will listen on
        all interfaces.
      </action>
      <action dev="benson-basis" type="add" issue="82" date="2013-03-13">
        If a port of 0 is given, then the JVM agent will select an arbitrary
        free port and prints out the selected port.
      </action>
      <action dev="roland" type="add" issue="77" date="2013-03-07">
        Added support for "ifModifiedSince" processing parameter.
      </action>
      <action dev="roland" type="fix" issue="83" date="2013-03-06">
        Fixed wrong key order in path when diving into tabular data values.
      </action>
      <action dev="roland" type="fix" issue="76" date="2013-03-01">
        Check whether the Jolokia MBeanServerHolder is registered in advance instead of relying on
        an InstanceNotFoundException
      </action>
      <action dev="roland" type="add" issue="79" date="2013-03-01">
        Added BigDecimal and BigInteger converters for input parameters
      </action>
    </release>
    <release version="1.1.0" description="Release 1.1.0" date="2013-02-28">
      <action dev="mjr5749" type="fix" date="2013-02-22" issue="67">
        Fix a bug HistoryEntry.trim() when the list of values is empty and max duration is > 0
      </action>
      <action dev="roland" type="add" date="2013-02-21">
        Added enums for serialization/deserialization. It's really surprising how long
        this missing feature slipped without anybody missing it ;-)
      </action>
      <action dev="roland" type="fix" date="2013-02-20" issue="66">
        Added additional query parameters (serializeException, canonicalNaming and includeStackTrace)
        to the set of allowed query parameters for the Java client lib.
      </action>
      <action dev="roland" type="fix" date="2013-02-12" issue="64">
        Fixed URI encoding for GET requests in the JavaScript client library.
      </action>
      <action dev="roland" type="fix" date="2013-02-11">
        Added safety net for serialization, so that OutputStreams and Writers are never
        obtained from get-methods if they declare a subclass as return value. It happens e.g. for
        Jetty 8.1 that FileResource.getOutputStream() opens a new FileOutputStream nuking the
        existing data. Nice side effect ;-)
      </action>
      <action dev="roland" type="fix" date="2013-02-07" issue="59">
        Added new global and process configuration options "includeStackTrace" (true,false,runtime)
        and "serializeException" (true, false) which can be used to tune the
        error responses.
      </action>
      <action dev="roland" type="fix" date="2013-02-07" issue="59">
        "canonicalNaming" option can be as global agent configuration, too.
      </action>
      <action dev="roland" type="fix" date="2013-02-07" issue="63">
        Fixed Glassfish detector which failed to boot AMX in certain circumstances.
      </action>
      <action dev="roland" type="add" date="2013-01-27">
        Added support for JSON-MBean. A dedicated @JsonMBean annotation can be used
        to export complex arguments/attributes/return values as JSON String to the Platform
        MBeanServer. Jolokia now offers an own MBeanServer as well for registering MBeans which
        won't show up in any other (exported) MBeanServer (except for the delegation of @JsonMBeans
        which are delegated and translated).
      </action>
      <action dev="roland" type="fix" date="2013-01-13">
        Fixed issues with GET requests and MBean ObjectNames which end with a "/".
        Added to integration tests to deal with these issues.
      </action>
      <action dev="twhite" type="fix" date="2013-01-04">
        Fixed timestamp in the Java client library's response.
      </action>
      <action dev="roland" type="add" date="2012-12-30">
        New module "jolokia-spring" with Spring integration for the
        JVM agent has been added. It contains an own Spring
        configuration syntax and provides also a plugin for automatic
        startup the agent with default values by only declaring a
        dependency (works for containers which automatically lookup
        META-INF/spring/*.xml). Kudos to James Strachan for the
        initial idea.
      </action>
    </release>
    <release version="1.0.6" description="Release 1.0.6" date="2012-11-26">
      <action dev="roland" type="fix" date="2012-08-14">
        Jolokia's Javascript poller fixes an register/unregister issue, where the returned
        handle from register() remains stable.
      </action>
      <action dev="roland" type="fix" date="2012-07-27">
        Jolokia JVM agent used with startup options now initializes
        itself lazily in order to await all the MBeans required for a
        proper server detection.
      </action>
      <action dev="mikael,jstrachan,roland" type="add" date="2012-10-10">
        One can now change the key property order for MBeans names with the query parameter "canonicalNaming"
        for read, list and search operations. By default this is set to "true" in which case
        an alphabetical ordering for the keys is used. If set to "false", then the original name as registered
        is used.
      </action>
      <action dev="roland" type="add" date="2012-11-23">
        Added a method "jobs()" to the JavaScript Jolokia agent to get all handles for all currently registered
        jobs.
      </action>
      <action dev="roland" type="fix" date="2012-11-25">
        Added GlassfishDetector to the list of detectors for the OSGi Agent.
      </action>
    </release>
    <release version="1.0.5" description="Release 1.0.5" date="2012-07-23">
      <action dev="matejj" type="add" date="2012-07-19" issue="JOL-35">
        Added a deserialization to javax.management.ObjectName so that attributes of
        this type and operations taking such an argument can be properly invoked
        with a Jolokia request.
      </action>
      <action dev="roland" type="add" date="2012-06-25">
        Added Jolokia datasource for Cubism (with AMD support).
      </action>
      <action dev="roland" type="add" date="2012-06-25">
        Jolokia WAR agent initialisation parameters can now be given as servlet context
        parameters, too.
      </action>
      <action dev="roland" type="fix" date="2012-06-12">
        Fixed regular expression for detecting Oracle Glassfish server
      </action>
      <action dev="roland" type="add" date="2012-06-12">
        Added specific check for 7.1.x to JBoss Handler since for 7.1 there seems
        to be an MBean for the version number (contrary to 7.0.x)
      </action>
    </release>
    <release version="1.0.4" description="Release 1.0.4" date="2012-06-07">
      <action dev="roland" type="add" date="2012-06-06">
        Allow for custom detector options in the agent's
        configuration. These options can be evaluated during startup
        of the agent. The first (and only) option it 'bootAmx' for
        allowing a Glassfish detector to not boot up the AMX subsystem
        upon start of this agent. By default (since it is probably
        needed every time when Jolokia is installed), AMX is booted to
        provide the most userful information over JMX.
      </action>
      <action dev="roland" type="add" date="2012-06-05">
        Added a page showing the Jolokia-Cubism integration including
        live demos.
      </action>
      <action dev="roland" type="add" date="2012-05-16">
        Added a scheduler to the JavaScript client library.
      </action>
      <action dev="roland" type="fix" date="2012-04-20">
        Fixed issue with HTTP method checker for policy based restrictions.
      </action>
      <action dev="roland" type="fix" date="2012-04-26">
        Fixed fallback when registering ConfigMBean which didn't
        properly work (see pull request #42)
      </action>
    </release>
    <release version="1.0.3" description="Release 1.0.3" date="2012-04-11">
      <action dev="roland" type="fix" date="2012-02-09">
        Fixed issue with Glassfish detector and Jolokia running under gcj
      </action>
      <action dev="roland" type="update" date="2012-01-30">
        Added support for AMD in jolokia.js and jolokia-simple.js
      </action>
      <action dev="roland" type="add" date="2012-03-06">
        The history store allows also for time based eviction (JOL-28)
      </action>
      <action dev="roland" type="fix" date="2012-03-24">
        Fix for possible NPE when serializing a complex Java objects (#41)
      </action>
      <action dev="tempredirect" type="add" date="2012-03-25">
        New configuration property "httpServiceFilter" added for providing
        a OSGi filter expression which gets applied when selecting the HttpService
        to bind to. (#39)
      </action>
      <action dev="roland" type="update" date="2012-03-26">
        If registering of an ConfigMBean doesnt work because there has been already one be
        registered with the same name by another agent, a warning is giving out and a UUID is adde to
        the object name, so startup works as usual. Use either a "mbeanQualifier" or an "httpServiceFilter" in
        order to avoid naming collisions from the very beginning.
      </action>
      <action dev="roland" type="add" date="2012-04-09" issue="JOL-27">
        Added CORS support for the agents including preflight checks. The policy
        based restrictor allows for fine grained restriction of cross
        origin access with a &lt;cors&gt; section.
      </action>
      <action dev="roland" type="update" date="2012-04-10">
        Added none-caching headers (cache-control: 'no-cache', pragma: 'no-cache', expires: '-1') to
        Jolokia's response for all requests.
      </action>
    </release>
    <release version="1.0.2" description="Release 1.0.2" date="2012-01-06">
      <action dev="roland" type="update" date="2011-12-29">
        Verified that javascript client binding works with jQuery 1.7.1
      </action>
      <action dev="roland" type="update" date="2011-12-29">
        Updated Roo plugin for Roo 1.2. It won't work with older Roo
        versions.
      </action>
      <action dev="roland" type="add" date="2011-12-27">
        Jolokia's Java client library now can request MBeans via an
        JSR-160 proxy. This is done either by giving a default proxy
        configuration to the J4pClient or by providing a proxy config
        to the request objects.
      </action>
      <action dev="roland" type="add" date="2011-12-15">
        Added support for global and request procession parameter
        "mimeType" for specifying the HTTP content-type for the
        Jolokia response. By default this is "text/plain" (but
        "application/json" can be useful, too).
      </action>
      <action dev="roland" type="add" date="2011-12-16">
        In case of an error, the request leading to this error is
        returned in the response, too.
      </action>
    </release>
    <release version="1.0.1" description="Release 1.0.1" date="2011-10-31">
      <action dev="senthilnest" type="fix" date="2011-10-29" issue="37">
        Daemonized threads created by the thread pool for the JVM agent.
      </action>
      <action dev="roland" type="add" date="2011-10-18">
        Added a CollectionConverter for deserializing collections in
        addition to Maps and Lists.
      </action>
      <action dev="roland" type="update" date="2011-10-12">
        The JVM agent know can also take as argument a regular
        expression for matching a process' name in adition to a
        process id.
      </action>
      <action dev="roland" type="fix" date="2011-10-8">
        Fixed path access which consists of a single slash (which is
        the same as no path at all).
      </action>
    </release>
    <release version="1.0.0" description="Release 1.0.0" date="2011-10-03">
      <action dev="roland" type="add" date="2011-9-12">
        Applied patch from codewax for supporting an Equinox HTTP-Service
      </action>
      <action dev="roland" type="fix" date="2011-9-12">
        Increased test coverage to 80.5%, documented public API to
        100% (plus 100% rules coverage, 0% duplications, 0% package
        tangle index ...). See
        http://labs.consol.de/sonar/dashboard/index/org.jolokia:jolokia
        for more informations about Jolokia's code metrics.
      </action>
      <action dev="roland" type="fix" date="2011-9-14">
        Fixed problem with URL encoding for GET request with the Java
        client library, which used to use URLEncoder.encode() and
        switched now to URI. See
        http://stackoverflow.com/questions/724043/http-url-address-encoding-in-java
        for details.
      </action>
      <action dev="roland" type="add" date="2011-9-15">
        Added processing options for the Java client
      </action>
      <action dev="roland" type="add" date="2011-9-22">
        Changed escaping scheme for GET URLs and paths so that a
        slash (/) can be escaped with an exclamation mark (!): / -->
        !/
      </action>
      <action dev="roland" type="add" date="2011-9-27">
        Multiple attibutes can be added to GET read requests as a
        comma separated value list within the URL.
      </action>
    </release>
    <release version="0.95" description="Release 0.95" date="2011-08-21">
      <action dev="roland" type="add" date="2011-7-29">
        Added a dynamical attach mode for the JVM agent launcher (patch
        by Greg Bowyer).  The agent now includes also a client for
        dynamically starting/stoping an agent on already running Java
        process. See the reference manual for more information.
      </action>
      <action dev="roland" type="add" date="2011-8-7">
        Support for upstream serialization of open type,
        i.e. CompositeData and TabularData.  This allows for easy
        access to MXBeans, which provide support of transparent
        translation between plain Java objects and collections, which
        follow some restrictions, to open type data. Jolokia knows how
        to deal with the fixed format used by this MXBean translation
        of Maps and transparentrly dispatch this to a JSON
        map. Initial patch provided by asssaf.
      </action>
    </release>
    <release version="0.91" description="Release 0.91" date="2011-05-30">
      <action dev="roland" type="fix" date="2011-5-26">
        Fixed issue with overloaded methods where one variant takes no
        arguments. This no-arg variant can be specified with the
        signature "()" after the operation name.
      </action>
      <action dev="roland" type="add" date="2011-04-23">
        Added HTTPS support for the JVM agent. In order to switch
        it on, the property "protocol=https" must be set and
        additional the properties "keystore" and "keystorePassword"
        for pointing to the keystore which holds the server side
        certificate. Client side certificate authentication is
        switched off currently alway.
      </action>
      <action dev="roland" type="fix" date="2011-04-18">
        Fixed date handling when an MBean exports an attribute as
        date. It is now returned as an ISO-8601 formatted string, when
        used with a path "time" the epoch milliseconds are
        returned. Setting of date values and using dates as arguments
        for JMX operations is now also supported, the value can be
        given either in epoch milliseconds or as an ISO-86-1 formatted
        string. With a path "time" a given date value can be even
        updated for a write operation.
      </action>
      <action dev="roland" type="update" date="2011-04-14">
        Reworked "list" handling. It's now much faster when used with
        paths since it doesn't slurp in the whole meta and truncate
        it afterwards but does the right thing directly to only fetch
        the required information. The list handler respect now a
        'maxDepth' request option for truncating the data from top
        down. 'maxDepth' works with paths, too. Comprehensive unit
        tests has been added as well.
      </action>
      <action dev="roland" type="add" date="2011-04-04">
        Added constructor to J4pListRequest() which takes an
        ObjectName as argument for fetching the meta data for a single
        MBean only.
      </action>
    </release>
    <release version="0.90" description="Release 0.90" date="2011-04-04">
      <action dev="roland" type="add" date="2011-04-04">
        Added a Knopflerfish detector and tested Jolokia with Knopflerfish 3.1
      </action>
      <action dev="roland" type="fix" date="2011-03-28">
        Fixed content-type in javascript library to "text/json" for requests
        (was "application/x-www-form-urlencoded")
      </action>
      <action dev="roland" type="update" date="2011-03-26">
        A search request will now return an empty list, not an error
        response with a 404 status code. A null result of a search
        query is considered to be a valid result, not an error
        condition.
      </action>
      <action dev="roland" type="add" date="2011-03-24">
        Added a OSGi bundle property org.jolokia.listenForHttpService
        which, if set to false, prevents the automatic registration of
        a JolokiaServlet to an OSGi HttpService (default: true)
      </action>
      <action dev="roland" type="add" date="2011-03-24">
        The activator in jolokia-osgi and jolokia-osgi-bundle can now
        use an OSGi restrictor service implementing
        org.jolokia.restrictor.Restrictor when bundle property
        org.jolokia.useRestrictorService is set to true.
      </action>
      <action dev="roland" type="add" date="2011-03-24">
        Added a servlet init parameter "policyLocation" for specifying
        the location of the policy file. This can be an URL or an
        string with prefix "classpath:". Default:
        "classpath:/jolokia-access.xml"
      </action>
      <action dev="roland" type="update" date="2011-03-24">
        Refactored restrictor handling and exported
        org.jolokia.restrictor in the OSGi bundles. JolokiaServlet can
        take now an Restrictor object as constructor parameter.
      </action>
      <action dev="roland" type="update" date="2011-03-24">
        Lookup of policy file with the same classloader as used for
        loading the jolokia classes if lookup failed with context
        loader added.
      </action>
      <action dev="roland" type="update" date="2011-03-16">
        jolokia.js: Works now with jQuery 1.5.1, too (but still doesn't use
        the advanced Ajax features)
      </action>
      <action dev="roland" type="update" date="2011-03-16">
        jolokia.js: Added an HTTP method upgrade to "post" if a proxy
        target is provided.
      </action>
      <action dev="roland" type="update" date="2011-03-16">
        jolokia.js: Add a trailing slash to the Jolokia URL if a
        "post" request is requested.
      </action>
      <action dev="roland" type="update" date="2011-03-04">
        Changed protocol in order to support JSON types for return
        values and write/exec parameters instead of only plain strings
        as it was before.
      </action>
    </release>
    <release version="0.83" description="Release 0.83" date="2011-02-19">
      <action dev="roland" type="update" date="2011-02-15">
        Reference Manual updated with sections about the OSGi agent
        and the new Roo addon.
      </action>
      <action dev="roland" type="add" date="2011-02-17">
        Jolokia Roo addon added.
      </action>
      <action dev="roland" type="add" date="2011-02-15">
        Added a Virgo detector (tested with 2.1)
      </action>
      <action dev="roland" type="add" date="2011-02-11">
        Added PGP signing for the deployed artifacts
      </action>
      <action dev="roland" type="add" date="2011-02-11">
        Introduced org.jolokia.osgi.servlet.JolokiaServlet which gets exported by the jolokia-osgi
        bundle and allows for programmatic registration of the servlet without the use of an
        OSGi HttpService.
      </action>
      <action dev="roland" type="update" date="2011-02-05">
        Update jolokia-osgi-bundle to include Felix's HttpService implementation
        (since its is a bit smaller and fits better due to the packages already
        included). Now the bundle can be deployed without dependencies at all on Felix
        and Equinox. I recommend to use the 'pure' bundle and a given HttpService, though.
      </action>
      <action dev="roland" type="fix" date="2011-01-25">
        Fixed problem for Jetty Detector with Jetty Version &lt; 6.1.4 and made
        server detection to more conservative so that the servlet starts up nevertheless
        when an exception occurs during the detection phase (call in the servlet's init method).
      </action>
      <action dev="roland" type="fix" date="2011-02-01">
        Fixed registering of simplifiers, which allows for simplified serialization of
        well known objects like java.io.File or javax.management.ObjectName
      </action>
    </release>
    <release version="0.82" description="Release 0.82" date="2011-01-16">
      <action dev="roland" type="update" date="2011-01-08">
        The HTTP status code returned with a HTTP response does not reflect the
        status of the JMX operation itself. An HTTP error occurs only if an processing
        exception (like security constraint violations) happen on the top agent level,
        otherwise 200 is returned (even when an Jolokia response object contains an error).
      </action>
      <action dev="roland" type="add" date="2011-01-16">
        Added a Javascript client library including about 120 unit
        tests and a new section in the reference manual.
      </action>
    </release>
    <release version="0.81" description="Release 0.81" date="2010-12-14">
      <action dev="roland" type="fix" date="2010-10-24">
        Fixed MBean registration issue with Websphere AS 7.0 where
        MBean registration via the MBeanRegistration intefaces causes
        the WAS MBeanServer to raise a NPE (but register the MBean
        nevertheless, so no rollback here).
      </action>
      <action dev="roland" type="add" date="2010-10-24">
        New request parameter "callback" allows for sending a response
        as JavaScript function (JSONP). For POST request this
        parameter must be given as URL parameter and is valid for bulk
        requests, too.
      </action>
      <action dev="roland" type="add" date="2010-10-24">
        Security policy can now be globally restricted to a certain
        HTTP method.  Within the &lt;http&gt; section of the policy
        file, &lt;method&gt; tags define the allowed methods ("get" or
        "post"). If this section is missing, all methods are
        allowed. If only one method is given, the other is forbidden.
      </action>
      <action dev="roland" type="add" date="2010-11-04">
        Added an alias for MBean "jmx4perl:type=Config"
        to "jolokia:type=Config" for backwards compatibility with jmx4perl
        clients &lt; 0.80
      </action>
      <action dev="roland" type="fix" date="2010-11-27" issue="14">
        Change HttpClient to a thread safe connection manager by default,
        extended J4pClient construction with a builder pattern
      </action>
      <action dev="roland" type="add" date="2010-12-10">
        Added a server detection facility (available via the 'version' command)
        and made 'version' the default command if no command is given in the request URL
        for a GET request.
      </action>
      <action dev="roland" type="add" date="2010-12-10">
        Added a "error_type" key to the Jolokia response in case of an remote exception,
        which will contain the Java class name of this error. Added getErrorType() to
        the J4pRemoteException for the Java-Client.
      </action>
    </release>
  </body>
</document>
