You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by an...@apache.org on 2010/11/01 17:28:26 UTC

svn commit: r1029733 - in /openejb/trunk/openejb3: assembly/openejb-standalone/ assembly/openejb-standalone/src/main/assembly/ assembly/openejb-standalone/src/main/resources/ server/ server/openejb-daemon/ server/openejb-daemon/src/ server/openejb-daem...

Author: andygumbrecht
Date: Mon Nov  1 16:28:25 2010
New Revision: 1029733

URL: http://svn.apache.org/viewvc?rev=1029733&view=rev
Log:
Run OpenEJB as a Windows NT Service.
Tested on Windows XP/Vista/7/2008 32 and 64 bit.

Added:
    openejb/trunk/openejb3/assembly/openejb-standalone/src/main/resources/OpenEJB.amd64.exe   (with props)
    openejb/trunk/openejb3/assembly/openejb-standalone/src/main/resources/OpenEJB.ia64.exe   (with props)
    openejb/trunk/openejb3/assembly/openejb-standalone/src/main/resources/OpenEJB.x86.exe   (with props)
    openejb/trunk/openejb3/assembly/openejb-standalone/src/main/resources/service.install.as.admin.bat
    openejb/trunk/openejb3/assembly/openejb-standalone/src/main/resources/service.readme.txt
    openejb/trunk/openejb3/assembly/openejb-standalone/src/main/resources/service.remove.as.admin.bat
    openejb/trunk/openejb3/server/openejb-daemon/
    openejb/trunk/openejb3/server/openejb-daemon/pom.xml
    openejb/trunk/openejb3/server/openejb-daemon/src/
    openejb/trunk/openejb3/server/openejb-daemon/src/main/
    openejb/trunk/openejb3/server/openejb-daemon/src/main/java/
    openejb/trunk/openejb3/server/openejb-daemon/src/main/java/org/
    openejb/trunk/openejb3/server/openejb-daemon/src/main/java/org/apache/
    openejb/trunk/openejb3/server/openejb-daemon/src/main/java/org/apache/openejb/
    openejb/trunk/openejb3/server/openejb-daemon/src/main/java/org/apache/openejb/daemon/
    openejb/trunk/openejb3/server/openejb-daemon/src/main/java/org/apache/openejb/daemon/NTService.java
    openejb/trunk/openejb3/server/openejb-daemon/src/main/resources/
    openejb/trunk/openejb3/server/openejb-daemon/src/main/resources/META-INF/
    openejb/trunk/openejb3/server/openejb-daemon/src/test/
    openejb/trunk/openejb3/server/openejb-daemon/src/test/java/
    openejb/trunk/openejb3/server/openejb-daemon/src/test/resources/
Modified:
    openejb/trunk/openejb3/assembly/openejb-standalone/pom.xml
    openejb/trunk/openejb3/assembly/openejb-standalone/src/main/assembly/bin.xml
    openejb/trunk/openejb3/server/pom.xml

Modified: openejb/trunk/openejb3/assembly/openejb-standalone/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-standalone/pom.xml?rev=1029733&r1=1029732&r2=1029733&view=diff
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-standalone/pom.xml (original)
+++ openejb/trunk/openejb3/assembly/openejb-standalone/pom.xml Mon Nov  1 16:28:25 2010
@@ -186,6 +186,12 @@
       <optional>true</optional>
     </dependency>
     <dependency>
+      <groupId>org.apache.openejb</groupId>
+      <artifactId>openejb-daemon</artifactId>
+      <version>${project.version}</version>
+      <optional>true</optional>
+    </dependency>
+    <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
       <scope>test</scope>

Modified: openejb/trunk/openejb3/assembly/openejb-standalone/src/main/assembly/bin.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-standalone/src/main/assembly/bin.xml?rev=1029733&r1=1029732&r2=1029733&view=diff
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-standalone/src/main/assembly/bin.xml (original)
+++ openejb/trunk/openejb3/assembly/openejb-standalone/src/main/assembly/bin.xml Mon Nov  1 16:28:25 2010
@@ -41,6 +41,7 @@
       <outputDirectory>bin/</outputDirectory>
       <includes>
         <include>*.bat</include>
+        <include>service.readme.txt</include>
       </includes>
       <lineEnding>dos</lineEnding>
       <fileMode>0755</fileMode>
@@ -54,6 +55,13 @@
       <lineEnding>unix</lineEnding>
       <fileMode>0755</fileMode>
     </fileSet>
+	<fileSet>
+      <directory>${basedir}/src/main/resources</directory>
+      <outputDirectory>bin/</outputDirectory>
+      <includes>
+        <include>*.exe</include>
+      </includes>
+    </fileSet>
     <fileSet>
       <directory>${basedir}/src/main/conf</directory>
       <includes>

Added: openejb/trunk/openejb3/assembly/openejb-standalone/src/main/resources/OpenEJB.amd64.exe
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-standalone/src/main/resources/OpenEJB.amd64.exe?rev=1029733&view=auto
==============================================================================
Binary file - no diff available.

Propchange: openejb/trunk/openejb3/assembly/openejb-standalone/src/main/resources/OpenEJB.amd64.exe
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: openejb/trunk/openejb3/assembly/openejb-standalone/src/main/resources/OpenEJB.ia64.exe
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-standalone/src/main/resources/OpenEJB.ia64.exe?rev=1029733&view=auto
==============================================================================
Binary file - no diff available.

Propchange: openejb/trunk/openejb3/assembly/openejb-standalone/src/main/resources/OpenEJB.ia64.exe
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: openejb/trunk/openejb3/assembly/openejb-standalone/src/main/resources/OpenEJB.x86.exe
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-standalone/src/main/resources/OpenEJB.x86.exe?rev=1029733&view=auto
==============================================================================
Binary file - no diff available.

Propchange: openejb/trunk/openejb3/assembly/openejb-standalone/src/main/resources/OpenEJB.x86.exe
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: openejb/trunk/openejb3/assembly/openejb-standalone/src/main/resources/service.install.as.admin.bat
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-standalone/src/main/resources/service.install.as.admin.bat?rev=1029733&view=auto
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-standalone/src/main/resources/service.install.as.admin.bat (added)
+++ openejb/trunk/openejb3/assembly/openejb-standalone/src/main/resources/service.install.as.admin.bat Mon Nov  1 16:28:25 2010
@@ -0,0 +1,109 @@
+@ECHO off
+CLS
+
+@IF NOT "%ECHO%" == ""  ECHO %ECHO%
+@IF "%OS%" == "Windows_NT" setlocal
+
+IF "%OS%" == "Windows_NT" (
+  SET "DIRNAME=%~dp0%"
+) ELSE (
+  SET DIRNAME=.\
+)
+
+pushd %DIRNAME%
+
+SET proc=undefined
+
+IF /i %PROCESSOR_ARCHITECTURE% EQU X86 SET proc="%~dp0OpenEJB.%PROCESSOR_ARCHITECTURE%.exe"
+IF /i %PROCESSOR_ARCHITECTURE% EQU AMD64 SET proc="%~dp0OpenEJB.%PROCESSOR_ARCHITECTURE%.exe"
+IF /i %PROCESSOR_ARCHITECTURE% EQU IA64 SET proc=%~dp0OpenEJB.%PROCESSOR_ARCHITECTURE%.exe"
+
+IF /i %proc% EQU undefined (
+	ECHO Failed to determine OS architecture
+	GOTO failed
+)
+
+SET jvm=auto
+REM SET JAVA_HOME=[Full path to JDK or JRE]
+
+REM Prefer a local JRE if we find one in the current directory
+IF EXIST "%~dp0jre" (
+	SET JAVA_HOME="%~dp0"
+	GOTO found_java_home
+)
+
+if not "%JAVA_HOME%" == "" GOTO found_java_home
+
+ECHO Environment variable JAVA_HOME is not set and no local JRE was found.
+ECHO Please set JAVA_HOME to the directory of your local JDK or JRE to avoid this message.
+GOTO skip_java_home
+
+:found_java_home
+
+REM Make an attempt to find either the server or client jvm.dll
+IF EXIST "%JAVA_HOME%\jre\bin\server\jvm.dll" (
+	SET jvm="%JAVA_HOME%\jre\bin\server\jvm.dll"
+) ELSE (
+	IF EXIST "%JAVA_HOME%\jre\bin\client\jvm.dll" (
+		SET jvm="%JAVA_HOME%\jre\bin\client\jvm.dll"
+	) ELSE (
+		IF EXIST "%JAVA_HOME%\bin\server\jvm.dll" (
+			SET jvm="%JAVA_HOME%\bin\server\jvm.dll"
+		) ELSE (
+			IF EXIST "%JAVA_HOME%\bin\client\jvm.dll" (
+				SET jvm="%JAVA_HOME%\bin\client\jvm.dll"
+			) ELSE (
+				ECHO Cannot locate a jvm.dll - Are you sure JAVA_HOME is set correctly?
+				ECHO The service installer will now attempt to locate and use 'any' JVM.
+			)
+		)
+	)
+)
+
+:skip_java_home
+
+SET openejb=.
+CD ..
+
+SET "openejb=%CD%"
+SET logs=%openejb%\logs
+SET lib=%openejb%\lib
+SET corejar="%lib%\openejb-core-*.jar"
+SET daemonjar="%lib%\openejb-daemon-*.jar"
+
+FOR %%a IN (%corejar%) DO (
+  SET corejar="%%a"
+)
+
+FOR %%a IN (%daemonjar%) DO (
+  SET daemonjar="%%a"
+)
+
+SET classpath="%corejar%;%daemonjar%"
+
+ECHO Installing service using JVM: %jvm%
+
+%proc% //IS//OpenEJBServer --DisplayName="OpenEJB Server" ^
+	--Install=%proc% ^
+	--Startup auto ^
+	--StartPath=%openejb% ^
+	--Description="OpenEJB Server Service" ^
+	--Jvm=%jvm% ^
+	--Classpath=%classpath% ^
+	--StartMode=jvm ^
+	--StartClass=org.apache.openejb.daemon.NTService --StartMethod=start ^
+	--StopMode=jvm ^
+	--StopClass=org.apache.openejb.daemon.NTService --StopMethod=stop ^
+	--LogPrefix=service ^
+	--LogPath=%logs% --StdOutput="%logs%\service.out.log" --StdError="%logs%\service.err.log" --PidFile=service.pid ^
+	--LogLevel=Info ^
+	++JvmOptions=-Dopenejb.home="%openejb%";-Xms128M;-Xmx512M;-XX:MaxPermSize=256M
+	rem ++DependsOn= \
+
+GOTO complete
+
+:failed
+
+ECHO Failed to install service
+
+:complete
\ No newline at end of file

Added: openejb/trunk/openejb3/assembly/openejb-standalone/src/main/resources/service.readme.txt
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-standalone/src/main/resources/service.readme.txt?rev=1029733&view=auto
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-standalone/src/main/resources/service.readme.txt (added)
+++ openejb/trunk/openejb3/assembly/openejb-standalone/src/main/resources/service.readme.txt Mon Nov  1 16:28:25 2010
@@ -0,0 +1 @@
+Windows NT Service
==================

The two batch files for creating and removing OpenEJB as a Windows Service are basically
self explanatory. Both scripts must be run using an account that has rights to install
or de-install a service. This is usually an administrator account.

service.install.as.admin.bat
service.remove.as.admin.bat
\ No newline at end of file

Added: openejb/trunk/openejb3/assembly/openejb-standalone/src/main/resources/service.remove.as.admin.bat
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-standalone/src/main/resources/service.remove.as.admin.bat?rev=1029733&view=auto
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-standalone/src/main/resources/service.remove.as.admin.bat (added)
+++ openejb/trunk/openejb3/assembly/openejb-standalone/src/main/resources/service.remove.as.admin.bat Mon Nov  1 16:28:25 2010
@@ -0,0 +1,31 @@
+@echo off
+cls
+
+@if not "%ECHO%" == ""  echo %ECHO%
+@if "%OS%" == "Windows_NT" setlocal
+
+if "%OS%" == "Windows_NT" (
+  set "DIRNAME=%~dp0%"
+) else (
+  set DIRNAME=.\
+)
+
+pushd %DIRNAME%
+
+SET proc=undefined
+
+if /i %PROCESSOR_ARCHITECTURE% EQU X86 SET proc="%~dp0OpenEJB.%PROCESSOR_ARCHITECTURE%.exe"
+if /i %PROCESSOR_ARCHITECTURE% EQU AMD64 SET proc="%~dp0OpenEJB.%PROCESSOR_ARCHITECTURE%.exe"
+if /i %PROCESSOR_ARCHITECTURE% EQU IA64 SET proc=%~dp0OpenEJB.%PROCESSOR_ARCHITECTURE%.exe"
+
+if /i %proc% EQU undefined GOTO failed
+
+%proc% //DS//OpenEJBServer
+
+GOTO complete
+
+:failed
+
+ECHO Failed to determine OS architecture
+
+:complete
\ No newline at end of file

Added: openejb/trunk/openejb3/server/openejb-daemon/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-daemon/pom.xml?rev=1029733&view=auto
==============================================================================
--- openejb/trunk/openejb3/server/openejb-daemon/pom.xml (added)
+++ openejb/trunk/openejb3/server/openejb-daemon/pom.xml Mon Nov  1 16:28:25 2010
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <parent>
+    <artifactId>server</artifactId>
+    <groupId>org.apache.openejb</groupId>
+    <version>3.2-SNAPSHOT</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>openejb-daemon</artifactId>
+  <packaging>jar</packaging>
+  <name>OpenEJB :: Server :: Daemon</name>
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.openejb</groupId>
+      <artifactId>openejb-server</artifactId>
+      <version>${project.version}</version>
+    </dependency> 
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+</project>
+

Added: openejb/trunk/openejb3/server/openejb-daemon/src/main/java/org/apache/openejb/daemon/NTService.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-daemon/src/main/java/org/apache/openejb/daemon/NTService.java?rev=1029733&view=auto
==============================================================================
--- openejb/trunk/openejb3/server/openejb-daemon/src/main/java/org/apache/openejb/daemon/NTService.java (added)
+++ openejb/trunk/openejb3/server/openejb-daemon/src/main/java/org/apache/openejb/daemon/NTService.java Mon Nov  1 16:28:25 2010
@@ -0,0 +1,97 @@
+package org.apache.openejb.daemon;
+
+import org.apache.openejb.cli.Bootstrap;
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.server.Server;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+public class NTService {
+
+    private static final NTService instance = new NTService();
+    private final AtomicBoolean running = new AtomicBoolean(false);
+
+    /**
+     * Called by Apache Daemon
+     *
+     * @param args Start arguments
+     */
+    public static void start(final String[] args) {
+        try {
+            instance.startImpl(args);
+        } catch (Throwable e) {
+            e.printStackTrace(System.err);
+        }
+    }
+
+    /**
+     * Called by Apache Daemon
+     *
+     * @param args Stop arguments - Not used
+     */
+    public static void stop(final String[] args) {
+        try {
+            instance.stopImpl();
+        } catch (Throwable e) {
+            e.printStackTrace(System.err);
+        }
+    }
+
+    private NTService() {
+    }
+
+    private void startImpl(String[] args) {
+        if (!running.getAndSet(true)) {
+
+            if (null == args) {
+                args = new String[0];
+            }
+
+            if (null == System.getProperty("openejb.home")) {
+                System.setProperty("openejb.home", System.getProperty("user.dir"));
+            }
+
+            final ArrayList<String> list = new ArrayList<String>();
+            list.addAll(Arrays.asList(args));
+
+            if (!list.contains("start")) {
+                list.add("start");
+            }
+
+            try {
+                System.out.println("Starting NTService: " + list);
+                Bootstrap.main(list.toArray(new String[list.size()]));
+
+                //The process has finished
+                running.set(false);
+
+            } catch (Exception e) {
+                running.set(false);
+                throw new RuntimeException("Failed to Bootstrap OpenEJB", e);
+            }
+
+        }
+    }
+
+    private void stopImpl() {
+        if (running.getAndSet(false)) {
+
+            final Server server = SystemInstance.get().getComponent(Server.class);
+
+            if (null != server) {
+                try {
+                    System.out.println("Stopping NTService");
+                    server.stop();
+                } catch (Exception e) {
+
+                    //Failed to stop
+                    running.set(true);
+                    e.printStackTrace(System.err);
+                }
+            }
+        }
+    }
+
+}

Modified: openejb/trunk/openejb3/server/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/pom.xml?rev=1029733&r1=1029732&r2=1029733&view=diff
==============================================================================
--- openejb/trunk/openejb3/server/pom.xml (original)
+++ openejb/trunk/openejb3/server/pom.xml Mon Nov  1 16:28:25 2010
@@ -43,6 +43,7 @@
     <module>openejb-axis2</module>
     <module>openejb-cxf</module>
     <module>openejb-multicast</module>
+    <module>openejb-daemon</module>
   </modules>
 </project>