You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ak...@apache.org on 2006/01/28 07:36:54 UTC
svn commit: r373091 - in /directory/trunks/apacheds/standalone: daemon/
daemon/src/main/java/org/apache/directory/server/standalone/daemon/
daemon/src/main/manifest/
installers/plugin/src/main/java/org/apache/directory/server/standalone/installers/
ins...
Author: akarasulu
Date: Fri Jan 27 22:36:32 2006
New Revision: 373091
URL: http://svn.apache.org/viewcvs?rev=373091&view=rev
Log:
recoved from refactoring which caused sever issues with procrun. everything seems to be working fairly well now
Added:
directory/trunks/apacheds/standalone/daemon/src/main/java/org/apache/directory/server/standalone/daemon/Bootstrapper.java (with props)
Modified:
directory/trunks/apacheds/standalone/daemon/pom.xml
directory/trunks/apacheds/standalone/daemon/src/main/java/org/apache/directory/server/standalone/daemon/LifecycleInvoker.java
directory/trunks/apacheds/standalone/daemon/src/main/java/org/apache/directory/server/standalone/daemon/ProcrunBootstrapper.java
directory/trunks/apacheds/standalone/daemon/src/main/manifest/MANIFEST.MF
directory/trunks/apacheds/standalone/installers/plugin/src/main/java/org/apache/directory/server/standalone/installers/MojoHelperUtils.java
directory/trunks/apacheds/standalone/installers/plugin/src/main/java/org/apache/directory/server/standalone/installers/inno/InnoInstallerCommand.java
directory/trunks/apacheds/standalone/installers/plugin/src/main/resources/org/apache/directory/server/standalone/installers/inno/install.iss
directory/trunks/apacheds/standalone/simple/main/src/main/java/org/apache/ldap/server/DirectoryServer.java
directory/trunks/apacheds/standalone/simple/main/src/main/java/org/apache/ldap/server/ServerMain.java
Modified: directory/trunks/apacheds/standalone/daemon/pom.xml
URL: http://svn.apache.org/viewcvs/directory/trunks/apacheds/standalone/daemon/pom.xml?rev=373091&r1=373090&r2=373091&view=diff
==============================================================================
--- directory/trunks/apacheds/standalone/daemon/pom.xml (original)
+++ directory/trunks/apacheds/standalone/daemon/pom.xml Fri Jan 27 22:36:32 2006
@@ -42,7 +42,7 @@
<archive>
<manifestFile>src/main/manifest/MANIFEST.MF</manifestFile>
<manifest>
- <mainClass>org.apache.directory.server.standalone.daemon.MainBootstrapper</mainClass>
+ <mainClass>org.apache.directory.server.standalone.daemon.Bootstrapper</mainClass>
</manifest>
</archive>
</configuration>
Added: directory/trunks/apacheds/standalone/daemon/src/main/java/org/apache/directory/server/standalone/daemon/Bootstrapper.java
URL: http://svn.apache.org/viewcvs/directory/trunks/apacheds/standalone/daemon/src/main/java/org/apache/directory/server/standalone/daemon/Bootstrapper.java?rev=373091&view=auto
==============================================================================
--- directory/trunks/apacheds/standalone/daemon/src/main/java/org/apache/directory/server/standalone/daemon/Bootstrapper.java (added)
+++ directory/trunks/apacheds/standalone/daemon/src/main/java/org/apache/directory/server/standalone/daemon/Bootstrapper.java Fri Jan 27 22:36:32 2006
@@ -0,0 +1,464 @@
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * 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.
+ *
+ */
+package org.apache.directory.server.standalone.daemon;
+
+
+import java.io.FileInputStream;
+import java.lang.reflect.Method;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.Properties;
+
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
+
+
+/**
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$
+ */
+public class Bootstrapper
+{
+ private static final Logger log = LoggerFactory.getLogger( Bootstrapper.class );
+ private static final String[] EMPTY_STRARRY = new String[0];
+ private static final String BOOTSTRAP_START_CLASS_PROP = "bootstrap.start.class";
+ private static final String BOOTSTRAP_STOP_CLASS_PROP = "bootstrap.stop.class";
+
+ private static Bootstrapper instance;
+
+ private final Properties bootstrapProperties = new Properties();
+ private InstallationLayout install;
+ private ClassLoader appLoader;
+ private ClassLoader parentLoader;
+ private Object bootstrapped;
+
+
+ public void setInstallationLayout( String installationBase )
+ {
+ log.debug( "Setting layout in Bootstrapper using base: " + installationBase );
+ install = new InstallationLayout( installationBase );
+
+ try
+ {
+ install.verifyInstallation();
+ }
+ catch( Throwable t )
+ {
+ log.error( "Installation verification failure!", t );
+ }
+
+ try
+ {
+ bootstrapProperties.load( new FileInputStream( install.getBootstrapperConfigurationFile() ) );
+ }
+ catch ( Exception e )
+ {
+ log.error( "Failed while loading: " + install.getBootstrapperConfigurationFile(), e );
+ System.exit( ExitCodes.PROPLOAD );
+ }
+ }
+
+
+ public void setParentLoader( ClassLoader parentLoader )
+ {
+ this.parentLoader = parentLoader;
+ URL[] jars = install.getAllJars();
+ this.appLoader = new URLClassLoader( jars, parentLoader );
+
+ if ( log.isDebugEnabled() )
+ {
+ StringBuffer buf = new StringBuffer();
+ buf.append( "urls in app loader: \n" );
+ for ( int ii = 0; ii < jars.length; ii++ )
+ {
+ buf.append( "\t" ).append( jars[ii] ).append( "\n" );
+ }
+ log.debug( buf.toString() );
+ }
+ }
+
+
+ public void callInit( String className )
+ {
+ Class clazz = null;
+ Method op = null;
+
+ Thread.currentThread().setContextClassLoader( appLoader );
+ try
+ {
+ clazz = appLoader.loadClass( className );
+ }
+ catch ( ClassNotFoundException e )
+ {
+ log.error( "Could not find " + className, e );
+ System.exit( ExitCodes.CLASS_LOOKUP );
+ }
+
+ try
+ {
+ bootstrapped = clazz.newInstance();
+ }
+ catch ( Exception e )
+ {
+ log.error( "Could not instantiate " + className, e );
+ System.exit( ExitCodes.INSTANTIATION );
+ }
+
+ try
+ {
+ op = clazz.getMethod( "init", new Class[] { InstallationLayout.class } );
+ }
+ catch ( Exception e )
+ {
+ log.error( "Could not find init(InstallationLayout) method for " + className, e );
+ System.exit( ExitCodes.METHOD_LOOKUP );
+ }
+
+ try
+ {
+ op.invoke( bootstrapped, new Object[] { this.install } );
+ }
+ catch ( Exception e )
+ {
+ log.error( "Failed on " + className + ".init(InstallationLayout)", e );
+ System.exit( ExitCodes.INITIALIZATION );
+ }
+ }
+
+
+ public void callStart()
+ {
+ Class clazz = bootstrapped.getClass();
+ Method op = null;
+
+ try
+ {
+ op = clazz.getMethod( "start", null );
+ }
+ catch ( Exception e )
+ {
+ log.error( "Could not find start() method for " + clazz.getName(), e );
+ System.exit( ExitCodes.METHOD_LOOKUP );
+ }
+
+ try
+ {
+ op.invoke( bootstrapped, null );
+ }
+ catch ( Exception e )
+ {
+ log.error( "Failed on " + clazz.getName() + ".start()", e );
+ System.exit( ExitCodes.START );
+ }
+ }
+
+
+ public void callStop( String className )
+ {
+ Class clazz = null;
+ Method op = null;
+
+ try
+ {
+ clazz = appLoader.loadClass( className );
+ }
+ catch ( ClassNotFoundException e )
+ {
+ log.error( "Could not find " + className, e );
+ System.exit( ExitCodes.CLASS_LOOKUP );
+ }
+
+ try
+ {
+ bootstrapped = clazz.newInstance();
+ }
+ catch ( Exception e )
+ {
+ log.error( "Could not instantiate " + className, e );
+ System.exit( ExitCodes.INSTANTIATION );
+ }
+
+ try
+ {
+ op = clazz.getMethod( "stop", new Class[] { EMPTY_STRARRY.getClass() } );
+ }
+ catch ( Exception e )
+ {
+ log.error( "Could not find stop() method for " + className, e );
+ System.exit( ExitCodes.METHOD_LOOKUP );
+ }
+
+ try
+ {
+ op.invoke( bootstrapped, new Object[] { EMPTY_STRARRY } );
+ }
+ catch ( Exception e )
+ {
+ log.error( "Failed on " + className + ".stop()", e );
+ System.exit( ExitCodes.STOP );
+ }
+ }
+
+
+ // -----------------------------------------------------------------------
+
+
+ public void init( String[] args )
+ {
+ if ( log.isDebugEnabled() )
+ {
+ StringBuffer buf = new StringBuffer();
+ buf.append( "init(String[]) called with args: \n" );
+ for ( int ii = 0; ii < args.length; ii++ )
+ {
+ buf.append( "\t" ).append( args[ii] ).append( "\n" );
+ }
+ log.debug( buf.toString() );
+ }
+
+ if ( install == null )
+ {
+ log.debug( "install was null: initializing it using first argument" );
+ setInstallationLayout( args[0] );
+ log.debug( "install initialized" );
+ }
+ else
+ {
+ log.debug( "install was not null" );
+ }
+
+ if ( parentLoader == null )
+ {
+ log.info( "Trying to get handle on system classloader as the parent" );
+ setParentLoader( Thread.currentThread().getContextClassLoader() );
+ log.info( "parentLoader = " + parentLoader );
+ }
+
+ callInit( bootstrapProperties.getProperty( BOOTSTRAP_START_CLASS_PROP, null ) );
+
+ // This is only needed for procrun but does not harm jsvc or runs
+ // Leads me to think that we need to differentiate somehow between
+ // different daemon frameworks. We can do this via command line args,
+ // system properties or by making them call different methods to start
+ // the process. However not every framework may support calling
+ // different methods which may also be somewhat error prone.
+
+ while( true )
+ {
+ try
+ {
+ Thread.sleep( 2000 );
+ }
+ catch ( InterruptedException e )
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+
+
+ public void stop() throws Exception
+ {
+ log.debug( "stop() called" );
+ callStop( bootstrapProperties.getProperty( BOOTSTRAP_STOP_CLASS_PROP, null ) );
+ }
+
+
+ public void destroy()
+ {
+ log.debug( "destroy() called" );
+ }
+
+
+ public void start()
+ {
+ log.debug( "start() called" );
+ Thread.currentThread().setContextClassLoader( parentLoader );
+ callStart();
+ }
+
+
+ public void start( String[] args )
+ {
+ log.debug( "start(String[]) called" );
+ Thread.currentThread().setContextClassLoader( this.parentLoader );
+
+ if ( install == null && args.length > 0 )
+ {
+ setInstallationLayout( args[0] );
+ setParentLoader( Thread.currentThread().getContextClassLoader() );
+ }
+ }
+
+
+ // ------------------------------------------------------------------------
+ // The main()
+ // ------------------------------------------------------------------------
+
+
+ public static void prunsrvStart( String[] args )
+ {
+ log.debug( "prunsrvStart(String[]) called" );
+
+ if ( log.isDebugEnabled() )
+ {
+ log.debug( "prunsrvStart(String[]) recieved args:" );
+ for ( int ii = 0; ii < args.length; ii++ )
+ {
+ log.debug( "args[" + ii + "] = " + args[ii] );
+ }
+ }
+
+ try
+ {
+ log.debug( "prunsrvStart(String[]) initializing Bootstrapper ... )" );
+ instance = new Bootstrapper();
+ instance.setInstallationLayout( args[0] );
+ instance.setParentLoader( Bootstrapper.class.getClassLoader() );
+
+ log.debug( "prunsrvStart(String[]) calling init(String[])" );
+ instance.init( args );
+
+ log.debug( "prunsrvStart(String[]) calling start(String[])" );
+ instance.start( args );
+ }
+ catch ( Throwable t )
+ {
+ log.error( "Encountered error in prunsrvStart(String[])", t );
+ System.exit( 4 );
+ }
+ }
+
+
+ public static void prunsrvStop( String[] args )
+ {
+ log.debug( "prunsrvStop(String[]) called" );
+ if ( log.isDebugEnabled() )
+ {
+ log.debug( "prunsrvStop(String[]) recieved args:" );
+ for ( int ii = 0; ii < args.length; ii++ )
+ {
+ log.debug( "args[" + ii + "] = " + args[ii] );
+ }
+ }
+
+ try
+ {
+ log.debug( "prunsrvStop(String[]) initializing Bootstrapper ... )" );
+ instance = new Bootstrapper();
+ instance.setInstallationLayout( args[0] );
+ instance.setParentLoader( Bootstrapper.class.getClassLoader() );
+
+ log.debug( "prunsrvStop(String[]) calling stop()" );
+ instance.stop();
+ log.debug( "prunsrvStop(String[]) calling destroy()" );
+ instance.destroy();
+ }
+ catch ( Throwable t )
+ {
+ log.error( "Encountered error in prunsrvStop(String[])", t );
+ System.exit( 4 );
+ }
+ }
+
+
+ // ------------------------------------------------------------------------
+ // The main()
+ // ------------------------------------------------------------------------
+
+
+ public static void main( String[] args )
+ {
+ log.debug( "main(String[]) called" );
+
+ // Noticed that some starts with jar2exe.exe pass in a null arguement list
+ if ( args == null )
+ {
+ System.err.println( "Arguements are null - how come?" );
+ log.error( "main() args were null shutting down!" );
+ printHelp();
+ System.exit( 1 );
+ }
+
+ if ( log.isDebugEnabled() )
+ {
+ log.debug( "main() recieved args:" );
+ for ( int ii = 0; ii < args.length; ii++ )
+ {
+ log.debug( "args[" + ii + "] = " + args[ii] );
+ }
+ }
+
+ if ( args.length > 1 )
+ {
+ if ( instance == null )
+ {
+ log.debug( "main(String[]) initializing Bootstrapper ... )" );
+ instance = new Bootstrapper();
+ instance.setInstallationLayout( args[0] );
+ instance.setParentLoader( Bootstrapper.class.getClassLoader() );
+ log.debug( "Bootstrapper initialized" );
+ }
+ }
+ else
+ {
+ String msg = "Server exiting without required installation.home or command.name.";
+ System.err.println( msg );
+ log.error( msg );
+ printHelp();
+ System.exit( 1 );
+ }
+
+ String command = args[args.length - 1];
+ try
+ {
+ if ( command.equalsIgnoreCase( "start" ) )
+ {
+ log.debug( "calling init(String[]) from main(String[])" );
+ instance.init( args );
+
+ log.debug( "calling start(String[]) from main(String[])" );
+ instance.start( args );
+ }
+ else if ( command.equalsIgnoreCase( "stop" ) )
+ {
+ log.debug( "calling stop() from main(String[])" );
+ instance.stop();
+ instance.destroy();
+ }
+ else
+ {
+ log.error( "Unrecognized command " + command );
+ printHelp();
+ System.exit( 3 );
+ }
+ }
+ catch ( Throwable t )
+ {
+ log.error( "Encountered error while processing command: " + command );
+ t.printStackTrace();
+ System.exit( 4 );
+ }
+ }
+
+
+ private static void printHelp()
+ {
+ System.err.println("java -jar bootstrap.jar <app.home> <command.name>");
+ }
+}
Propchange: directory/trunks/apacheds/standalone/daemon/src/main/java/org/apache/directory/server/standalone/daemon/Bootstrapper.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: directory/trunks/apacheds/standalone/daemon/src/main/java/org/apache/directory/server/standalone/daemon/LifecycleInvoker.java
URL: http://svn.apache.org/viewcvs/directory/trunks/apacheds/standalone/daemon/src/main/java/org/apache/directory/server/standalone/daemon/LifecycleInvoker.java?rev=373091&r1=373090&r2=373091&view=diff
==============================================================================
--- directory/trunks/apacheds/standalone/daemon/src/main/java/org/apache/directory/server/standalone/daemon/LifecycleInvoker.java (original)
+++ directory/trunks/apacheds/standalone/daemon/src/main/java/org/apache/directory/server/standalone/daemon/LifecycleInvoker.java Fri Jan 27 22:36:32 2006
@@ -16,8 +16,10 @@
*/
package org.apache.directory.server.standalone.daemon;
-
+
import java.io.FileInputStream;
+import java.lang.reflect.Array;
+import java.lang.reflect.Method;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.Properties;
@@ -37,18 +39,22 @@
private static Logger log = LoggerFactory.getLogger( LifecycleInvoker.class );
private static final String BOOTSTRAP_START_CLASS_PROP = "bootstrap.start.class";
private static final String BOOTSTRAP_STOP_CLASS_PROP = "bootstrap.stop.class";
+ private static final String[] EMPTY_STRARRAY = new String[0];
- private DaemonApplication startObject;
- private DaemonApplication stopObject;
+ private Object startObject;
+ private Object stopObject;
private String startClassName;
private String stopClassName;
+ private Class startObjectClass;
+ private final ClassLoader parent;
private final ClassLoader application;
private final InstallationLayout layout;
public LifecycleInvoker( String installationBase, ClassLoader parent )
{
- layout = new InstallationLayout( installationBase );
+ this.parent = parent;
+ this.layout = new InstallationLayout( installationBase );
// -------------------------------------------------------------------
// Verify correct installation layout
@@ -135,11 +141,12 @@
*/
public void callInit( String[] args )
{
- Class clazz = null;
+ Method op = null;
Thread.currentThread().setContextClassLoader( application );
+
try
{
- clazz = application.loadClass( startClassName );
+ startObjectClass = application.loadClass( startClassName );
}
catch ( ClassNotFoundException e )
{
@@ -149,7 +156,7 @@
try
{
- startObject = ( DaemonApplication ) clazz.newInstance();
+ startObject = startObjectClass.newInstance();
}
catch ( Exception e )
{
@@ -159,44 +166,102 @@
try
{
- startObject.init( layout, args );
+ Method[] methods = startObjectClass.getMethods();
+ log.debug( "Listing methods in start class " + startObjectClass + ":" );
+ for ( int ii = 0; ii < methods.length; ii++ )
+ {
+ log.debug( "\t" + methods[ii].toString() );
+ if ( methods[ii].getName().equals( "init" ) )
+ {
+ op = methods[ii];
+ log.info( "Found init method to call: " + op );
+ }
+ }
}
catch ( Exception e )
{
- log.error( "Could not instantiate " + startClassName, e );
+ log.error( "Could not find init(InstallationLayout) method for " + startClassName, e );
+ System.exit( ExitCodes.METHOD_LOOKUP );
+ }
+
+ try
+ {
+ op.invoke( startObject, new Object[] { layout } );
+ }
+ catch ( Exception e )
+ {
+ log.error( "Could not invoke init(InstallationLayout, String[]) on " + startClassName, e );
System.exit( ExitCodes.INVOCATION );
}
+
+ Thread.currentThread().setContextClassLoader( parent );
}
public void callStart( boolean nowait )
{
- Thread.currentThread().setContextClassLoader( application );
- startObject.start( nowait );
+// Thread.currentThread().setContextClassLoader( application );
+ Method op = null;
+
+ try
+ {
+ Method[] methods = startObjectClass.getMethods();
+ log.debug( "Listing methods in start class " + startObjectClass + ":" );
+ for ( int ii = 0; ii < methods.length; ii++ )
+ {
+ log.debug( "\t" + methods[ii].toString() );
+ if ( methods[ii].getName().equals( "start" ) )
+ {
+ op = methods[ii];
+ log.info( "Found start method to call: " + op );
+ }
+ }
+ }
+ catch ( Exception e )
+ {
+ log.error( "Could not find start(boolean) method for " + startObjectClass.getName(), e );
+ System.exit( ExitCodes.METHOD_LOOKUP );
+ }
+
+ try
+ {
+ op.invoke( startObject, new Object[] { new Boolean( nowait ) } );
+ }
+ catch ( Exception e )
+ {
+ log.error( "Failed on " + startObjectClass.getName() + ".start()", e );
+ System.exit( ExitCodes.START );
+ }
}
public void callStop( String[] args )
{
- Thread.currentThread().setContextClassLoader( application );
+// Thread.currentThread().setContextClassLoader( application );
Class clazz = null;
+ Method op = null;
// Reuse the startObject if it is the same class
if ( ! startClassName.equals( stopClassName ) )
+ {
+ clazz = startObjectClass;
+ stopObject = startObject;
+ }
+ else
{
- try
+ try
{
clazz = application.loadClass( stopClassName );
- }
- catch ( ClassNotFoundException e )
+ }
+ catch ( ClassNotFoundException e )
{
log.error( "Could not find " + stopClassName, e );
System.exit( ExitCodes.CLASS_LOOKUP );
}
-
+
try
{
- stopObject = ( DaemonApplication ) clazz.newInstance();
+ stopObject = clazz.newInstance();
}
catch ( Exception e )
{
@@ -204,27 +269,53 @@
System.exit( ExitCodes.INSTANTIATION );
}
}
- else
+
+ try
{
- stopObject = startObject;
- clazz = startObject.getClass();
+ op = clazz.getMethod( "stop", null );
+ }
+ catch ( Exception e )
+ {
+ log.error( "Could not find stop() method for " + stopClassName, e );
+ System.exit( ExitCodes.METHOD_LOOKUP );
}
try
{
- stopObject.stop( args );
+ op.invoke( stopObject, null );
}
catch ( Exception e )
{
- log.error( "Could not instantiate " + startClassName, e );
- System.exit( ExitCodes.INVOCATION );
- }
+ log.error( "Failed on " + stopClassName + ".stop()", e );
+ System.exit( ExitCodes.STOP );
+ }
}
public void callDestroy()
{
- Thread.currentThread().setContextClassLoader( application );
- stopObject.destroy();
+// Thread.currentThread().setContextClassLoader( application );
+ Class clazz = stopObject.getClass();
+ Method op = null;
+
+ try
+ {
+ op = clazz.getMethod( "destroy", null );
+ }
+ catch ( Exception e )
+ {
+ log.error( "Could not find destroy() method for " + clazz.getName(), e );
+ System.exit( ExitCodes.METHOD_LOOKUP );
+ }
+
+ try
+ {
+ op.invoke( stopObject, null );
+ }
+ catch ( Exception e )
+ {
+ log.error( "Failed on " + clazz.getName() + ".destroy()", e );
+ System.exit( ExitCodes.DESTROY );
+ }
}
}
Modified: directory/trunks/apacheds/standalone/daemon/src/main/java/org/apache/directory/server/standalone/daemon/ProcrunBootstrapper.java
URL: http://svn.apache.org/viewcvs/directory/trunks/apacheds/standalone/daemon/src/main/java/org/apache/directory/server/standalone/daemon/ProcrunBootstrapper.java?rev=373091&r1=373090&r2=373091&view=diff
==============================================================================
--- directory/trunks/apacheds/standalone/daemon/src/main/java/org/apache/directory/server/standalone/daemon/ProcrunBootstrapper.java (original)
+++ directory/trunks/apacheds/standalone/daemon/src/main/java/org/apache/directory/server/standalone/daemon/ProcrunBootstrapper.java Fri Jan 27 22:36:32 2006
@@ -36,6 +36,8 @@
public static void prunsrvStart( String[] args )
{
+ ClassLoader system = Thread.currentThread().getContextClassLoader();
+
if ( log.isDebugEnabled() )
{
StringBuffer buf = new StringBuffer();
@@ -53,22 +55,36 @@
}
log.debug( "prunsrvStart(String[]) creating LifecycleInvoker ... )" );
- LifecycleInvoker invoker = new LifecycleInvoker( args[0],
- Thread.currentThread().getContextClassLoader() );
+ LifecycleInvoker invoker = new LifecycleInvoker( args[0], system );
log.debug( "prunsrvStart(String[]) invoking application.callInit(String[]))" );
- if ( args.length > 1 )
+ try
{
- String[] shifted = new String[args.length-1];
- System.arraycopy( args, 1, shifted, 0, shifted.length );
- invoker.callInit( shifted );
+ if ( args.length > 1 )
+ {
+ String[] shifted = new String[args.length-1];
+ System.arraycopy( args, 1, shifted, 0, shifted.length );
+ invoker.callInit( shifted );
+ }
+ else
+ {
+ invoker.callInit( EMPTY_STRARRAY );
+ }
}
- else
+ catch ( Throwable t )
{
- invoker.callInit( EMPTY_STRARRAY );
+ log.error( "Failed while calling invoker.callInit(String[])", t );
}
+
log.debug( "prunsrvStart(String[]) invoking bootstrapper.callStart())" );
- invoker.callStart( false ); // must block on start (let the app decide how)
+ try
+ {
+ invoker.callStart( false ); // must block on start (let the app decide how)
+ }
+ catch( Throwable t )
+ {
+ log.error( "Failed while calling invoker.callStart(String[])", t );
+ }
}
Modified: directory/trunks/apacheds/standalone/daemon/src/main/manifest/MANIFEST.MF
URL: http://svn.apache.org/viewcvs/directory/trunks/apacheds/standalone/daemon/src/main/manifest/MANIFEST.MF?rev=373091&r1=373090&r2=373091&view=diff
==============================================================================
--- directory/trunks/apacheds/standalone/daemon/src/main/manifest/MANIFEST.MF (original)
+++ directory/trunks/apacheds/standalone/daemon/src/main/manifest/MANIFEST.MF Fri Jan 27 22:36:32 2006
@@ -1,10 +1,6 @@
Manifest-Version: 1.0
-Archiver-Version: Plexus Archiver
-Created-By: Apache Maven
-Build-Jdk: 1.5.0_06
-Extension-Name: org.apache.directory.server.standalone.daemon
-Implementation-Title: org.apache.directory.server.standalone.daemon
-Implementation-Version: 0.9.4-SNAPSHOT
-Main-Class: org.apache.directory.server.standalone.daemon.MainBootstra
- pper
-Class-Path: logger.jar daemon.jar bootstrapper.jar
+Main-Class: org.apache.directory.server.standalone.daemon.Bootstrapper
+Class-Path: logger.jar daemon.jar
+Specification-Title: ApacheDS
+Specification-Version: 1.0
+
Modified: directory/trunks/apacheds/standalone/installers/plugin/src/main/java/org/apache/directory/server/standalone/installers/MojoHelperUtils.java
URL: http://svn.apache.org/viewcvs/directory/trunks/apacheds/standalone/installers/plugin/src/main/java/org/apache/directory/server/standalone/installers/MojoHelperUtils.java?rev=373091&r1=373090&r2=373091&view=diff
==============================================================================
--- directory/trunks/apacheds/standalone/installers/plugin/src/main/java/org/apache/directory/server/standalone/installers/MojoHelperUtils.java (original)
+++ directory/trunks/apacheds/standalone/installers/plugin/src/main/java/org/apache/directory/server/standalone/installers/MojoHelperUtils.java Fri Jan 27 22:36:32 2006
@@ -135,13 +135,13 @@
{
mymojo.getLog().info( "Not copying bootstrapper " + artifact );
}
- else if ( artifact.equals( mymojo.getLogger() ) )
- {
- mymojo.getLog().info( "Not copying logger " + artifact );
- }
else if ( artifact.equals( mymojo.getDaemon() ) )
{
mymojo.getLog().info( "Not copying daemon " + artifact );
+ }
+ else if ( artifact.equals( mymojo.getLogger() ) )
+ {
+ mymojo.getLog().info( "Not copying logger " + artifact );
}
else
{
Modified: directory/trunks/apacheds/standalone/installers/plugin/src/main/java/org/apache/directory/server/standalone/installers/inno/InnoInstallerCommand.java
URL: http://svn.apache.org/viewcvs/directory/trunks/apacheds/standalone/installers/plugin/src/main/java/org/apache/directory/server/standalone/installers/inno/InnoInstallerCommand.java?rev=373091&r1=373090&r2=373091&view=diff
==============================================================================
--- directory/trunks/apacheds/standalone/installers/plugin/src/main/java/org/apache/directory/server/standalone/installers/inno/InnoInstallerCommand.java (original)
+++ directory/trunks/apacheds/standalone/installers/plugin/src/main/java/org/apache/directory/server/standalone/installers/inno/InnoInstallerCommand.java Fri Jan 27 22:36:32 2006
@@ -239,7 +239,7 @@
buf.append( "Source: {#SourceBase}\\lib\\" );
File artifact = ( ( Artifact ) artifacts.get( ii ) ).getFile();
buf.append( artifact.getName() );
- buf.append( "; DestDir: {app}-${app.version}\\lib; DestName: " );
+ buf.append( "; DestDir: {app}\\lib; DestName: " );
buf.append( artifact.getName() );
buf.append( "\n" );
}
Modified: directory/trunks/apacheds/standalone/installers/plugin/src/main/resources/org/apache/directory/server/standalone/installers/inno/install.iss
URL: http://svn.apache.org/viewcvs/directory/trunks/apacheds/standalone/installers/plugin/src/main/resources/org/apache/directory/server/standalone/installers/inno/install.iss?rev=373091&r1=373090&r2=373091&view=diff
==============================================================================
--- directory/trunks/apacheds/standalone/installers/plugin/src/main/resources/org/apache/directory/server/standalone/installers/inno/install.iss (original)
+++ directory/trunks/apacheds/standalone/installers/plugin/src/main/resources/org/apache/directory/server/standalone/installers/inno/install.iss Fri Jan 27 22:36:32 2006
@@ -21,7 +21,7 @@
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
-DefaultDirName={pf}\${app}
+DefaultDirName={pf}\${app}-${app.version}
DefaultGroupName={#MyAppName}
LicenseFile={#SourceBase}\${app.license.name}
OutputDir="${installer.output.directory}"
@@ -43,36 +43,36 @@
[Files]
; bin directory targets
-Source: {#SourceBase}\bin\${app}w.exe; DestDir: {app}-${app.version}\bin; Tasks: ; Languages:
-Source: {#SourceBase}\bin\${app}.exe; DestDir: {app}-${app.version}\bin
-Source: {#SourceBase}\bin\bootstrapper.jar; DestDir: {app}-${app.version}\bin; DestName: bootstrapper.jar
-Source: {#SourceBase}\bin\logger.jar; DestDir: {app}-${app.version}\bin; DestName: logger.jar
-Source: {#SourceBase}\bin\daemon.jar; DestDir: {app}-${app.version}\bin; DestName: daemon.jar
+Source: {#SourceBase}\bin\${app}w.exe; DestDir: {app}\bin; Tasks: ; Languages:
+Source: {#SourceBase}\bin\${app}.exe; DestDir: {app}\bin
+Source: {#SourceBase}\bin\bootstrapper.jar; DestDir: {app}\bin; DestName: bootstrapper.jar
+Source: {#SourceBase}\bin\logger.jar; DestDir: {app}\bin; DestName: logger.jar
+Source: {#SourceBase}\bin\daemon.jar; DestDir: {app}\bin; DestName: daemon.jar
; conf directory targets
-Source: {#SourceBase}\conf\log4j.properties; DestDir: {app}-${app.version}\conf; DestName: log4j.properties
-Source: {#SourceBase}\conf\server.xml; DestDir: {app}-${app.version}\conf; DestName: server.xml
-Source: {#SourceBase}\conf\bootstrapper.properties; DestDir: {app}-${app.version}\conf; DestName: bootstrapper.properties
+Source: {#SourceBase}\conf\log4j.properties; DestDir: {app}\conf; DestName: log4j.properties
+Source: {#SourceBase}\conf\server.xml; DestDir: {app}\conf; DestName: server.xml
+Source: {#SourceBase}\conf\bootstrapper.properties; DestDir: {app}\conf; DestName: bootstrapper.properties
; top level directory targets
-Source: {#SourceBase}\${app.license.name}; DestDir: {app}-${app.version}; DestName: ${app.license.name}
-Source: {#SourceBase}\${app.readme.name}; DestDir: {app}-${app.version}; DestName: ${app.readme.name}
-Source: {#SourceBase}\${app.icon.name}; DestDir: {app}-${app.version}; DestName: ${app.icon.name}
+Source: {#SourceBase}\${app.license.name}; DestDir: {app}; DestName: ${app.license.name}
+Source: {#SourceBase}\${app.readme.name}; DestDir: {app}; DestName: ${app.readme.name}
+Source: {#SourceBase}\${app.icon.name}; DestDir: {app}; DestName: ${app.icon.name}
; empty var & lib\ext directory structure
-Source: {#SourceBase}\var\*; DestDir: "{app}-${app.version}\var\"; Flags: ignoreversion recursesubdirs createallsubdirs
-Source: {#SourceBase}\lib\ext; DestDir: "{app}-${app.version}\lib"; Flags: ignoreversion recursesubdirs createallsubdirs
+Source: {#SourceBase}\var\*; DestDir: "{app}\var\"; Flags: ignoreversion recursesubdirs createallsubdirs
+Source: {#SourceBase}\lib\ext; DestDir: "{app}\lib"; Flags: ignoreversion recursesubdirs createallsubdirs
; lib directory targets
${app.lib.jars}
[Icons]
-Name: {group}\Service Settings; Filename: {app}-${app.version}\bin\${app}w.exe; Parameters: //ES//${app}; IconIndex: 0
-Name: {userdesktop}\{#MyAppName}; Filename: {app}-${app.version}\bin\${app}w.exe; Tasks: desktopicon; Parameters: //ES//${app}; IconIndex: 0; Languages:
-Name: {group}\Tray Monitor; Filename: {app}-${app.version}\bin\${app}w.exe; Parameters: //MS//${app}; IconIndex: 0
-Name: {group}\Test Service; Filename: {app}-${app.version}\bin\${app}.exe; IconIndex: 0
+Name: {group}\Service Settings; Filename: {app}\bin\${app}w.exe; Parameters: //ES//${app}; IconIndex: 0
+Name: {userdesktop}\{#MyAppName}; Filename: {app}\bin\${app}w.exe; Tasks: desktopicon; Parameters: //ES//${app}; IconIndex: 0; Languages:
+Name: {group}\Tray Monitor; Filename: {app}\bin\${app}w.exe; Parameters: //MS//${app}; IconIndex: 0
+Name: {group}\Test Service; Filename: {app}\bin\${app}.exe; IconIndex: 0
[Run]
-Filename: {app}-${app.version}\bin\${app}.exe; WorkingDir: {app}-${app.version}\bin; Tasks: ; Languages: ; Parameters: "//IS//${app.displayname} --Description=""${app.description} Service ${app.version} - ${app.url}"" --DisplayName=${app.displayname} --Install=""{app}-${app.version}\bin\${app}.exe"" --StartMode=jvm --StopMode=jvm --StartClass=org.apache.directory.server.standalone.daemon.ProcrunBootstrapper --StartMethod prunsrvStart --StartParams=""{app}"" --StopClass=org.apache.directory.server.standalone.daemon.ProcrunBootstrapper --StopMethod prunsrvStop --StopParams=""{app}"" --Startup=manual --JvmOptions=""-D${app}.home={app}-${app.version}"" --Classpath=""{app}-${app.version}\bin\bootstrapper.jar;{app}-${app.version}\conf;{app}-${app.version}\bin\logger.jar;{app}-${app.version}\bin\daemon.jar"" --LogPath=""{app}-${app.version}\var\log"" --LogPrefix=${app}.log --LogLevel=debug --StdOutput=""{app}-${app.version}\var\log\${app}-stdout.log"" --StdError=""{app}-${app.versi
on}\var\log\${app}-stderr.log"""; Flags: runhidden
-Filename: {app}-${app.version}\bin\${app}w.exe; Parameters: //ES//${app.displayname}; WorkingDir: {app}-${app.version}\bin; Flags: postinstall nowait; Description: Runs the configuration manager for the ${app} windows service
+Filename: {app}\bin\${app}.exe; WorkingDir: {app}\bin; Tasks: ; Languages: ; Parameters: "//IS//${app.displayname} --Description=""${app.description} Service ${app.version} - ${app.url}"" --DisplayName=${app.displayname} --Install=""{app}\bin\${app}.exe"" --StartMode=jvm --StopMode=jvm --StartClass=org.apache.directory.server.standalone.daemon.Bootstrapper --StartMethod prunsrvStart --StartParams=""{app}"" --StopClass=org.apache.directory.server.standalone.daemon.Bootstrapper --StopMethod prunsrvStop --StopParams=""{app}"" --Startup=manual --JvmOptions=""-D${app}.home={app}"" --Classpath=""{app}\bin\bootstrapper.jar;{app}\conf;{app}\bin\logger.jar;{app}\bin\daemon.jar"" --LogPath=""{app}\var\log"" --LogPrefix=${app}.log --LogLevel=debug --StdOutput=""{app}\var\log\${app}-stdout.log"" --StdError=""{app}\var\log\${app}-stderr.log"""; Flags: runhidden
+Filename: {app}\bin\${app}w.exe; Parameters: //ES//${app.displayname}; WorkingDir: {app}\bin; Flags: postinstall nowait; Description: Runs the configuration manager for the ${app} windows service
[Registry]
[UninstallRun]
-Filename: {app}-${app.version}\bin\${app}.exe; WorkingDir: {app}-${app.version}\bin; Parameters: //DS//${app.displayname}
+Filename: {app}\bin\${app}.exe; WorkingDir: {app}\bin; Parameters: //DS//${app.displayname}
Modified: directory/trunks/apacheds/standalone/simple/main/src/main/java/org/apache/ldap/server/DirectoryServer.java
URL: http://svn.apache.org/viewcvs/directory/trunks/apacheds/standalone/simple/main/src/main/java/org/apache/ldap/server/DirectoryServer.java?rev=373091&r1=373090&r2=373091&view=diff
==============================================================================
--- directory/trunks/apacheds/standalone/simple/main/src/main/java/org/apache/ldap/server/DirectoryServer.java (original)
+++ directory/trunks/apacheds/standalone/simple/main/src/main/java/org/apache/ldap/server/DirectoryServer.java Fri Jan 27 22:36:32 2006
@@ -22,7 +22,6 @@
import javax.naming.Context;
import javax.naming.directory.InitialDirContext;
-import org.apache.directory.server.standalone.daemon.DaemonApplication;
import org.apache.directory.server.standalone.daemon.InstallationLayout;
import org.apache.ldap.server.configuration.MutableServerStartupConfiguration;
import org.apache.ldap.server.configuration.ShutdownConfiguration;
@@ -42,7 +41,7 @@
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
* @version $Rev$
*/
-public class DirectoryServer implements DaemonApplication
+public class DirectoryServer
{
private static final Logger log = LoggerFactory.getLogger( DirectoryServer.class );
private Properties env;
@@ -53,7 +52,7 @@
private boolean started = false;
- public void init( InstallationLayout install, String[] args ) throws Exception
+ public void init( InstallationLayout install ) throws Exception
{
long startTime = System.currentTimeMillis();
MutableServerStartupConfiguration cfg;
@@ -97,11 +96,11 @@
}
- public void start( boolean nowait )
+ public void start()
{
- startNoWait = nowait;
+ startNoWait = false;
- if ( nowait )
+ if ( false )
{
workerThread.start();
started = true;
@@ -119,6 +118,9 @@
{
log.warn( "stop(String[]) called without calling init() and start()" );
log.info( "Might be a procrun invocation as opposed to jsvc so we'll initiate external shutdown procedure" );
+
+ // real shutdown sequence goes here.
+ return;
}
worker.stop = true;
Modified: directory/trunks/apacheds/standalone/simple/main/src/main/java/org/apache/ldap/server/ServerMain.java
URL: http://svn.apache.org/viewcvs/directory/trunks/apacheds/standalone/simple/main/src/main/java/org/apache/ldap/server/ServerMain.java?rev=373091&r1=373090&r2=373091&view=diff
==============================================================================
--- directory/trunks/apacheds/standalone/simple/main/src/main/java/org/apache/ldap/server/ServerMain.java (original)
+++ directory/trunks/apacheds/standalone/simple/main/src/main/java/org/apache/ldap/server/ServerMain.java Fri Jan 27 22:36:32 2006
@@ -41,13 +41,13 @@
if ( args.length > 0 )
{
- server.init( new InstallationLayout( args[0] ), null );
- server.start( false );
+ server.init( new InstallationLayout( args[0] ) );
+ server.start();
}
else
{
- server.init( null, null );
- server.start( false );
+ server.init( null );
+ server.start();
}
}
}