================================================================================
  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.
================================================================================

                   Apache Commons Daemon 1.2.3
                         Release Notes

This document contains the release notes for this version of the
Apache Commons Daemon package, and highlights new features in the 1.2
releases compared to the 1.1 releases.


New Features
------------

 - Improved JRE/JDK detection to support increased range of both JVM
   versions and vendors
 
 - The minimum target platform for Windows has been increased to
   Windows 7 / Server 2008 SP2

 - The default Windows service user has changed from LocalSystem to
  'NT Authority\LocalService'
  
Note: The minimum Java version remains unchanged at 1.6.


Bug Fixes
---------

 - Please see the change log
   https://commons.apache.org/proper/commons-daemon/changes-report.html


Feedback
--------
Open source works best when you give feedback:
https://commons.apache.org/daemon/

Please direct all bug reports to JIRA
https://issues.apache.org/jira/browse/DAEMON

Or subscribe to the commons-user mailing list (prefix emails by [daemon])
https://commons.apache.org/mail-lists.html

The Apache Commons Daemon Team
