You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by kk...@apache.org on 2014/04/23 14:38:58 UTC

svn commit: r1589390 - in /tomcat/tc6.0.x/trunk: STATUS.txt bin/service.bat webapps/docs/changelog.xml webapps/docs/tomcat-docs.xsl webapps/docs/windows-service-howto.xml

Author: kkolinko
Date: Wed Apr 23 12:38:58 2014
New Revision: 1589390

URL: http://svn.apache.org/r1589390
Log:
* Fix http://issues.apache.org/bugzilla/show_bug.cgi?id=56143
  and http://issues.apache.org/bugzilla/show_bug.cgi?id=49993

  Improve service.bat so that it can be launched from a non-UAC console,
  and backport other minor improvements.

  Update documentation. There is no more a need to start cmd.exe with
  elevated priviledges.

  Add support for '<version-major/>', '<version-major-minor>' to
  tomcat-docs.xsl to simplify documentation backports.

  (I am not backporting the "/user" option of service.bat. The rest of
  service.bat is the same as in TC7 and TC8.)

  Changes to service.bat:

  - Improve service.bat so that it can be launched from a non-UAC console.
  This includes using a single call to tomcat6.exe to install the Windows
  service rather than three calls, and using command line arguments instead
  of environment variables to pass the settings. (BZ 56143)

  - Align options with *.exe Windows installer. This affects --Classpath,
  --DisplayName, --StartPath, --StopPath and --LogPath.

  - Make command comparisons case-insensitive. Remove %OS% check for setlocal.

  (This assumes that nobody runs on ancient non-NT systems that do not have
  setlocal).

  - Improve check for JAVA_HOME and add support for JRE_HOME environment
  variable. (BZ 49993)

  - Print a warning in case if neither server nor client jvm is found.

Modified:
    tomcat/tc6.0.x/trunk/STATUS.txt
    tomcat/tc6.0.x/trunk/bin/service.bat
    tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml
    tomcat/tc6.0.x/trunk/webapps/docs/tomcat-docs.xsl
    tomcat/tc6.0.x/trunk/webapps/docs/windows-service-howto.xml

Modified: tomcat/tc6.0.x/trunk/STATUS.txt
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/STATUS.txt?rev=1589390&r1=1589389&r2=1589390&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/STATUS.txt (original)
+++ tomcat/tc6.0.x/trunk/STATUS.txt Wed Apr 23 12:38:58 2014
@@ -41,45 +41,6 @@ PATCHES PROPOSED TO BACKPORT:
   +1: markt, remm
   -1:
 
-* Fix http://issues.apache.org/bugzilla/show_bug.cgi?id=56143
-  and http://issues.apache.org/bugzilla/show_bug.cgi?id=49993
-
-  Improve service.bat so that it can be launched from a non-UAC console,
-  and backport other minor improvements.
-
-  Update documentation. There is no more a need to start cmd.exe with
-  elevated priviledges.
-
-  Add support for '<version-major/>', '<version-major-minor>' to
-  tomcat-docs.xsl to simplify documentation backports.
-
-  (I am not backporting the "/user" option of service.bat. The rest of
-  service.bat is the same as in TC7 and TC8.)
-
-  Changes to service.bat:
-
-  - Improve service.bat so that it can be launched from a non-UAC console.
-  This includes using a single call to tomcat6.exe to install the Windows
-  service rather than three calls, and using command line arguments instead
-  of environment variables to pass the settings. (BZ 56143)
-
-  - Align options with *.exe Windows installer. This affects --Classpath,
-  --DisplayName, --StartPath, --StopPath and --LogPath.
-
-  - Make command comparisons case-insensitive. Remove %OS% check for setlocal.
-
-  (This assumes that nobody runs on ancient non-NT systems that do not have
-  setlocal).
-
-  - Improve check for JAVA_HOME and add support for JRE_HOME environment
-  variable. (BZ 49993)
-
-  - Print a warning in case if neither server nor client jvm is found.
-
-  https://people.apache.org/~kkolinko/patches/2014-04-14_tc6_56143_v2.patch
-  +1: kkolinko, markt, remm
-  -1:
-
 * Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=56369
   Ensure that removing an MBean notification listener
   reverts all the operations performed when adding an MBean notification

Modified: tomcat/tc6.0.x/trunk/bin/service.bat
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/bin/service.bat?rev=1589390&r1=1589389&r2=1589390&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/bin/service.bat (original)
+++ tomcat/tc6.0.x/trunk/bin/service.bat Wed Apr 23 12:38:58 2014
@@ -14,7 +14,6 @@ rem WITHOUT WARRANTIES OR CONDITIONS OF 
 rem See the License for the specific language governing permissions and
 rem limitations under the License.
 
-if "%OS%" == "Windows_NT" setlocal
 rem ---------------------------------------------------------------------------
 rem NT Service Install/Uninstall script
 rem
@@ -24,9 +23,11 @@ rem                        Service is in
 rem remove                 Remove the service from the System.
 rem
 rem name        (optional) If the second argument is present it is considered
-rem                        to be new service name                                           
+rem                        to be new service name
 rem ---------------------------------------------------------------------------
 
+setlocal
+
 rem Guess CATALINA_HOME if not defined
 set "CURRENT_DIR=%cd%"
 if not "%CATALINA_HOME%" == "" goto gotHome
@@ -37,16 +38,34 @@ cd ..
 set "CATALINA_HOME=%cd%"
 :gotHome
 if exist "%CATALINA_HOME%\bin\tomcat@VERSION_MAJOR@.exe" goto okHome
-echo The tomcat.exe was not found...
+echo The tomcat@VERSION_MAJOR@.exe was not found...
 echo The CATALINA_HOME environment variable is not defined correctly.
 echo This environment variable is needed to run this program
 goto end
+:okHome
 rem Make sure prerequisite environment variables are set
-if not "%JAVA_HOME%" == "" goto okHome
-echo The JAVA_HOME environment variable is not defined
+if not "%JAVA_HOME%" == "" goto gotJdkHome
+if not "%JRE_HOME%" == "" goto gotJreHome
+echo Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
+echo Service will try to guess them from the registry.
+goto okJavaHome
+:gotJreHome
+if not exist "%JRE_HOME%\bin\java.exe" goto noJavaHome
+if not exist "%JRE_HOME%\bin\javaw.exe" goto noJavaHome
+goto okJavaHome
+:gotJdkHome
+if not exist "%JAVA_HOME%\jre\bin\java.exe" goto noJavaHome
+if not exist "%JAVA_HOME%\jre\bin\javaw.exe" goto noJavaHome
+if not exist "%JAVA_HOME%\bin\javac.exe" goto noJavaHome
+if not "%JRE_HOME%" == "" goto okJavaHome
+set "JRE_HOME=%JAVA_HOME%\jre"
+goto okJavaHome
+:noJavaHome
+echo The JAVA_HOME environment variable is not defined correctly
 echo This environment variable is needed to run this program
-goto end 
-:okHome
+echo NB: JAVA_HOME should point to a JDK not a JRE
+goto end
+:okJavaHome
 if not "%CATALINA_BASE%" == "" goto gotBase
 set "CATALINA_BASE=%CATALINA_HOME%"
 :gotBase
@@ -55,17 +74,23 @@ set "EXECUTABLE=%CATALINA_HOME%\bin\tomc
 
 rem Set default Service name
 set SERVICE_NAME=Tomcat@VERSION_MAJOR@
-set PR_DISPLAYNAME=Apache Tomcat @VERSION_MAJOR@
+set DISPLAYNAME=Apache Tomcat @VERSION_MAJOR_MINOR@ %SERVICE_NAME%
 
-if "%1" == "" goto displayUsage
-if "%2" == "" goto setServiceName
-set SERVICE_NAME=%2
-set PR_DISPLAYNAME=Apache Tomcat %2
-:setServiceName
-if %1 == install goto doInstall
-if %1 == remove goto doRemove
-if %1 == uninstall goto doRemove
+if "x%1x" == "xx" goto displayUsage
+set SERVICE_CMD=%1
+shift
+if "x%1x" == "xx" goto checkServiceCmd
+set SERVICE_NAME=%1
+set DISPLAYNAME=Apache Tomcat @VERSION_MAJOR_MINOR@ %1
+shift
+if "x%1x" == "xx" goto checkServiceCmd
 echo Unknown parameter "%1"
+goto displayUsage
+:checkServiceCmd
+if /i %SERVICE_CMD% == install goto doInstall
+if /i %SERVICE_CMD% == remove goto doRemove
+if /i %SERVICE_CMD% == uninstall goto doRemove
+echo Unknown parameter "%SERVICE_CMD%"
 :displayUsage
 echo.
 echo Usage: service.bat install/remove [service_name]
@@ -73,7 +98,15 @@ goto end
 
 :doRemove
 rem Remove the service
-"%EXECUTABLE%" //DS//%SERVICE_NAME%
+echo Removing the service '%SERVICE_NAME%' ...
+echo Using CATALINA_BASE:    "%CATALINA_BASE%"
+
+"%EXECUTABLE%" //DS//%SERVICE_NAME% ^
+    --LogPath "%CATALINA_BASE%\logs"
+if not errorlevel 1 goto removed
+echo Failed removing '%SERVICE_NAME%' service
+goto end
+:removed
 echo The service '%SERVICE_NAME%' has been removed
 goto end
 
@@ -83,42 +116,46 @@ echo Installing the service '%SERVICE_NA
 echo Using CATALINA_HOME:    "%CATALINA_HOME%"
 echo Using CATALINA_BASE:    "%CATALINA_BASE%"
 echo Using JAVA_HOME:        "%JAVA_HOME%"
+echo Using JRE_HOME:         "%JRE_HOME%"
 
-rem Use the environment variables as an example
-rem Each command line option is prefixed with PR_
-
-set PR_DESCRIPTION=Apache Tomcat @VERSION@ Server - http://tomcat.apache.org/
-set "PR_INSTALL=%EXECUTABLE%"
-set "PR_LOGPATH=%CATALINA_BASE%\logs"
-set "PR_CLASSPATH=%CATALINA_BASE%\bin\tomcat-juli.jar;%CATALINA_HOME%\bin\tomcat-juli.jar;%CATALINA_HOME%\bin\bootstrap.jar"
-rem Set the server jvm from JAVA_HOME
-set "PR_JVM=%JAVA_HOME%\jre\bin\server\jvm.dll"
-if exist "%PR_JVM%" goto foundJvm
-rem Set the client jvm from JAVA_HOME
-set "PR_JVM=%JAVA_HOME%\jre\bin\client\jvm.dll"
-if exist "%PR_JVM%" goto foundJvm
-set PR_JVM=auto
+rem Try to use the server jvm
+set "JVM=%JRE_HOME%\bin\server\jvm.dll"
+if exist "%JVM%" goto foundJvm
+rem Try to use the client jvm
+set "JVM=%JRE_HOME%\bin\client\jvm.dll"
+if exist "%JVM%" goto foundJvm
+echo Warning: Neither 'server' nor 'client' jvm.dll was found at JRE_HOME.
+set JVM=auto
 :foundJvm
-echo Using JVM:              "%PR_JVM%"
-"%EXECUTABLE%" //IS//%SERVICE_NAME% --StartClass org.apache.catalina.startup.Bootstrap --StopClass org.apache.catalina.startup.Bootstrap --StartParams start --StopParams stop
+echo Using JVM:              "%JVM%"
+
+set "CLASSPATH=%CATALINA_HOME%\bin\bootstrap.jar;%CATALINA_BASE%\bin\tomcat-juli.jar"
+if not "%CATALINA_HOME%" == "%CATALINA_BASE%" set "CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\bin\tomcat-juli.jar"
+
+"%EXECUTABLE%" //IS//%SERVICE_NAME% ^
+    --Description "Apache Tomcat @VERSION@ Server - http://tomcat.apache.org/" ^
+    --DisplayName "%DISPLAYNAME%" ^
+    --Install "%EXECUTABLE%" ^
+    --LogPath "%CATALINA_BASE%\logs" ^
+    --StdOutput auto ^
+    --StdError auto ^
+    --Classpath "%CLASSPATH%" ^
+    --Jvm "%JVM%" ^
+    --StartMode jvm ^
+    --StopMode jvm ^
+    --StartPath "%CATALINA_HOME%" ^
+    --StopPath "%CATALINA_HOME%" ^
+    --StartClass org.apache.catalina.startup.Bootstrap ^
+    --StopClass org.apache.catalina.startup.Bootstrap ^
+    --StartParams start ^
+    --StopParams stop ^
+    --JvmOptions "-Dcatalina.home=%CATALINA_HOME%;-Dcatalina.base=%CATALINA_BASE%;-Djava.endorsed.dirs=%CATALINA_HOME%\endorsed;-Djava.io.tmpdir=%CATALINA_BASE%\temp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties" ^
+    --JvmMs 128 ^
+    --JvmMx 256
 if not errorlevel 1 goto installed
 echo Failed installing '%SERVICE_NAME%' service
 goto end
 :installed
-rem Clear the environment variables. They are not needed any more.
-set PR_DISPLAYNAME=
-set PR_DESCRIPTION=
-set PR_INSTALL=
-set PR_LOGPATH=
-set PR_CLASSPATH=
-set PR_JVM=
-rem Set extra parameters
-"%EXECUTABLE%" //US//%SERVICE_NAME% --JvmOptions "-Dcatalina.base=%CATALINA_BASE%;-Dcatalina.home=%CATALINA_HOME%;-Djava.endorsed.dirs=%CATALINA_HOME%\endorsed" --StartMode jvm --StopMode jvm
-rem More extra parameters
-set "PR_LOGPATH=%CATALINA_BASE%\logs"
-set PR_STDOUTPUT=auto
-set PR_STDERROR=auto
-"%EXECUTABLE%" //US//%SERVICE_NAME% ++JvmOptions "-Djava.io.tmpdir=%CATALINA_BASE%\temp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties" --JvmMs 128 --JvmMx 256
 echo The service '%SERVICE_NAME%' has been installed.
 
 :end

Modified: tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml?rev=1589390&r1=1589389&r2=1589390&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml Wed Apr 23 12:38:58 2014
@@ -146,6 +146,11 @@
         Correct documentation on Windows service options, aligning it with
         Apache Commons Daemon documentation. (kkolinko)
       </fix>
+      <add>
+        Add support for <code>version-major</code>,
+        <code>version-major-minor</code> tags in documentation XSLT, to simplify
+        documentation backports. (kkolinko)
+      </add>
     </changelog>
   </subsection>
   <subsection name="Other">
@@ -162,6 +167,16 @@
         directory, instead of "%SystemRoot%\System32\LogFiles\Apache".
         (kkolinko)
       </update>
+      <update>
+        <bug>49993</bug>, <bug>56143</bug>: Improve <code>service.bat</code>
+        script. Allow it to be launched from non-UAC console. The UAC prompt
+        will be shown only once. Now there is no need to run the command shell
+        with elevated privileges. Improve check for <code>JAVA_HOME</code>
+        and add support for <code>JRE_HOME</code>. Warn if neither "client"
+        nor "server" JVM is found. Align classpath, display name and other
+        options with the <code>exe</code> installer. Make command names
+        case-insensitive. Update documentation. (kkolinko)
+      </update>
     </changelog>
   </subsection>
 </section>

Modified: tomcat/tc6.0.x/trunk/webapps/docs/tomcat-docs.xsl
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/tomcat-docs.xsl?rev=1589390&r1=1589389&r2=1589390&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/webapps/docs/tomcat-docs.xsl (original)
+++ tomcat/tc6.0.x/trunk/webapps/docs/tomcat-docs.xsl Wed Apr 23 12:38:58 2014
@@ -35,6 +35,8 @@
   <xsl:param    name="apache-logo"      select="'/images/asf-logo.gif'"/>
   <xsl:param    name="relative-path"    select="'.'"/>
   <xsl:param    name="version"          select="'6.0.x'"/>
+  <xsl:param    name="majorversion"        select="'6'"/>
+  <xsl:param    name="majorminorversion"   select="'6.0'"/>
   <xsl:param    name="build-date"       select="'MMM d yyyy'"/>
   <xsl:param    name="year"             select="'yyyy'"/>
   <xsl:param    name="void-image"       select="'/images/void.gif'"/>
@@ -518,6 +520,14 @@
       <a href="{$link}">r<xsl:apply-templates/></a>
   </xsl:template>
 
+  <!-- Version numbers -->
+  <xsl:template match="version-major-minor">
+    <xsl:value-of select="$majorminorversion"/>
+  </xsl:template>
+  <xsl:template match="version-major">
+    <xsl:value-of select="$majorversion"/>
+  </xsl:template>
+
   <!-- specially process td tags ala site.vsl -->
   <xsl:template match="table[@class='detail-table']/tr/td">
     <td bgcolor="{$table-td-bg}" valign="top" align="left">

Modified: tomcat/tc6.0.x/trunk/webapps/docs/windows-service-howto.xml
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/windows-service-howto.xml?rev=1589390&r1=1589389&r2=1589390&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/webapps/docs/windows-service-howto.xml (original)
+++ tomcat/tc6.0.x/trunk/webapps/docs/windows-service-howto.xml Wed Apr 23 12:38:58 2014
@@ -334,10 +334,16 @@ The safest way to manually install the s
 script.
 </p>
 <p>
-<strong>NOTE:</strong> On Windows Vista or any other operating system with User
-Account Control (UAC) you must either disable UAC or right-click on cmd.exe and
-select "Run as administrator" in order to run this script. If UAC is enabled
-being logged on with an Administrator account is not sufficient.  
+<strong>NOTE:</strong> On Windows Vista or any later operating system with User
+Account Control (UAC) enabled you will be asked for additional privileges
+when 'Tomcat<version-major/>.exe' is launched by the script.<br/>
+If you want to pass additional options to service installer as
+<code>PR_*</code> environment variables, you have to either configure them
+globally in OS, or launch the program that sets them with elevated privileges
+(e.g. right-click on cmd.exe and select "Run as administrator"; on Windows 8
+(or later) or Windows Server 2012 (or later), you can open an elevated command
+prompt for the current directory from the Explorer
+by clicking on the "File" menu bar). See issue <bug>56143</bug> for details.
 </p>
 <p>
 <source>



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org