SmartFrog 3.10.000

org.smartfrog.examples.dynamicwebserver.apache
Class ApacheImpl

java.lang.Object
  extended by org.smartfrog.sfcore.reference.RemoteReferenceResolverHelperImpl
      extended by org.smartfrog.sfcore.prim.PrimImpl
          extended by org.smartfrog.sfcore.compound.CompoundImpl
              extended by org.smartfrog.examples.dynamicwebserver.apache.ApacheImpl
All Implemented Interfaces:
java.lang.Runnable, java.rmi.Remote, Apache, DataSource, MessageKeys, Compound, ChildMinder, Diagnostics, Liveness, Prim, RemoteReferenceResolver, RemoteReferenceResolverHelper

public class ApacheImpl
extends CompoundImpl
implements Compound, Apache, DataSource, java.lang.Runnable

This class implements the Compound interface because it can "contain" Virtual Hosts components. The Apache interface is the Remoteable interface and the Runnable interface is used to monitor the httpd process. The httpd process is started in sfStart by setting the apacheState variable to true and ended in sfTerminate by setting the apacheState variable to false.


Field Summary
 
Fields inherited from class org.smartfrog.sfcore.compound.CompoundImpl
childCap, childInc, lifecycleChildren, sfChildren, sfSyncTerminate
 
Fields inherited from class org.smartfrog.sfcore.prim.PrimImpl
refLivenessDelay, refLivenessFactor, sfCompleteName, sfContext, sfDeployHooks, sfDeployWithHooks, sfExportRef, sfIsDeployed, sfIsStarted, sfIsTerminated, sfIsTerminating, sfLivenessCount, sfLivenessDelay, sfLivenessFactor, sfLivenessSender, sfParent, sfStartHooks, sfTerminateWithHooks, termLock
 
Fields inherited from interface org.smartfrog.examples.dynamicwebserver.apache.Apache
APACHECTLLOCATION, BASECONFIGFILENAME, BASECONFIGLOCATION, CONFIGFILENAME, CONFIGLOCATION, ENVVARS, INTERCHECKTIME, LOCATION, LOGTO, MANAGEDAEMON
 
Fields inherited from interface org.smartfrog.sfcore.common.MessageKeys
CANNOT_LINK_TO_PREDICATE, COMPONENT_TERMINATED, COPY_FAILED, COPY_SERIALIZE_FAILED, ERROR_NO_SECURITY_BUT_REQUIRED, ILLEGAL_BOOLEAN_PARAMETER, ILLEGAL_NUMERIC_PARAMETER, ILLEGAL_STRING_PARAMETER, ILLEGAL_VECTOR_PARAMETER, LIVENESS_SEND_FAILURE, LIVENESS_SEND_FAILURE_IN, MISSING_PARAMETER, MSG_CLASS_NOT_FOUND, MSG_CONNECT_ERR, MSG_CONT_OTHER_DEPLOY, MSG_DEPLOY_COMP_TERMINATED, MSG_DEPLOY_SUCCESS, MSG_DEPLOYWITH_PHASE_FAILED, MSG_DETACH_SUCCESS, MSG_DETACH_TERMINATE_SUCCESS, MSG_ERR_DEPLOY_FROM_URL, MSG_ERR_PARSE, MSG_ERR_RESOLVE_PHASE, MSG_ERR_SF_RUNNING, MSG_ERR_TERM, MSG_FAILED_INET_ADDRESS_LOOKUP, MSG_FAILED_TO_CONTACT_PARENT, MSG_FILE_NOT_FOUND, MSG_HOOK_ACTION_FAILED, MSG_ILLEGAL_ACCESS, MSG_ILLEGAL_CLASS_TYPE, MSG_ILLEGAL_CLASS_TYPE_EXPECTING_GOT, MSG_ILLEGAL_REFERENCE, MSG_INPUTSTREAM_NULL, MSG_INSTANTIATION_ERROR, MSG_INVALID_OBJECT_TYPE, MSG_INVOCATION_TARGET, MSG_LANG_NOT_FOUND, MSG_LIVENESS_START_FAILED, MSG_LOADING_URL, MSG_METHOD_NOT_FOUND, MSG_NON_REP_ATTRIB, MSG_NOT_COMPONENT_REFERENCE, MSG_NOT_FOUND_ATTRIBUTE, MSG_NOT_FOUND_REFERENCE, MSG_NOT_VALUE_REFERENCE, MSG_NULL_DEF_METHOD, MSG_NULL_URL, MSG_OBJECT_REGISTRATION_FAILED, MSG_PARENT_LOCATION_FAILED, MSG_PING_SUCCESS, MSG_RANDM_ERR, MSG_REMOTE_CONNECT_ERR, MSG_REPEATED_ATTRIBUTE, MSG_SF_DEAD, MSG_SF_READY, MSG_SF_TERMINATED, MSG_STACKTRACE_FOLLOWS, MSG_START_COMP_TERMINATED, MSG_TERMINATE_SUCCESS, MSG_UNHANDLED_EXCEPTION, MSG_UNKNOWN_HOST, MSG_UNRESOLVED_REFERENCE, MSG_UNRESOLVED_REFERENCE_IN, MSG_UPDATE_SUCCESS, MSG_URL_NOT_FOUND, MSG_URL_TO_PARSE_NOT_FOUND, MSG_WARNING_LIVENESS_ENABLED, MSG_WARNING_STACKTRACE_DISABLED, MSG_WARNING_STACKTRACE_ENABLED, ROOT_MUST_BE_COMPONENT, WARN_NO_SECURITY
 
Constructor Summary
ApacheImpl()
          Standard Remotable constructor
 
Method Summary
 boolean getApacheState()
          Get Apache state
 int getData()
          Returns an int containing the number of threads - implementation of DataSource interface
 void refreshConfig(java.lang.String scriptURL, java.lang.String fileName)
          This method is not currently used but could be used to maintain a desired configuration of Apache and then periodically refresh Apache to this state.
 void refreshDaemon()
          This method is not used by the ApacheImpl class but would be used by a Remote client.
 void run()
          This method is used to 'maintain' a processes desired state.
 void setApacheState(boolean newState)
          The logic behind this is: if Apache is not running and the desired state is to be running then Set Apaches state to running call start() else Set Apaches state to the required state end It is not possible to simply change the variable to true and start a new thread because it may already be running and you would end up starting too many httpd processes.
 void sfDeploy()
          This method retrieves the paramters from the .sf file.
 void sfStart()
          This sets a flag that will start the httpd process running.
 void sfTerminateWith(TerminationRecord tr)
          This shuts down Apache by requesting that the ApacheState variable be set to false.
 void startDaemon()
          This method is not used by the ApacheImpl class but would be used by a Remote client.
 void stopDaemon()
          This method is not used by the ApacheImpl class but would be used by a Remote client.
 
Methods inherited from class org.smartfrog.sfcore.compound.CompoundImpl
sfAddChild, sfASyncTerminateWith, sfChildren, sfContainsChild, sfCreateNewApp, sfCreateNewChild, sfCreateNewChild, sfDeployChildren, sfDeployComponentDescription, sfDeployWith, sfDeployWithChildren, sfDumpState, sfParentageChanged, sfPing, sfPingChild, sfRemoveAttribute, sfRemoveChild, sfStartChildren, sfSyncTerminateWith, sfTerminatedWith
 
Methods inherited from class org.smartfrog.sfcore.prim.PrimImpl
equals, hashCode, registerWithProcessCompound, sfAddAttribute, sfAttributeKeyFor, sfAttributes, sfCompleteName, sfCompleteNameSafe, sfContainsAttribute, sfContainsValue, sfContext, sfDeployedHost, sfDeployedProcessName, sfDetach, sfDetachAndTerminate, sfDiagnosticsReport, sfExport, sfExportRef, sfExportRef, sfGetApplicationLog, sfGetCoreLog, sfGetLog, sfIsDeployed, sfIsRemote, sfIsStarted, sfIsTerminated, sfIsTerminating, sfLivenessFailure, sfLog, sfParent, sfReplaceAttribute, sfResolve, sfResolve, sfResolveHere, sfResolveHere, sfResolveParent, sfSetLog, sfStartLivenessSender, sfStopLivenessSender, sfTerminate, sfTerminateQuietlyWith, sfValues, terminateComponent, terminateNotifying, toString
 
Methods inherited from class org.smartfrog.sfcore.reference.RemoteReferenceResolverHelperImpl
sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolveWithParser
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.smartfrog.sfcore.compound.Compound
sfCreateNewApp, sfCreateNewChild, sfCreateNewChild, sfDeployComponentDescription
 
Methods inherited from interface org.smartfrog.sfcore.prim.Prim
sfAddAttribute, sfAttributeKeyFor, sfAttributes, sfCompleteName, sfContainsAttribute, sfContainsValue, sfContext, sfDeployedHost, sfDeployedProcessName, sfDeployWith, sfDetach, sfDetachAndTerminate, sfDumpState, sfIsDeployed, sfIsStarted, sfIsTerminated, sfIsTerminating, sfParent, sfParentageChanged, sfRemoveAttribute, sfReplaceAttribute, sfTerminate, sfTerminatedWith, sfTerminateQuietlyWith, sfValues
 
Methods inherited from interface org.smartfrog.sfcore.prim.Liveness
sfPing
 
Methods inherited from interface org.smartfrog.sfcore.reference.RemoteReferenceResolver
sfResolve, sfResolve, sfResolveHere, sfResolveHere, sfResolveParent
 
Methods inherited from interface org.smartfrog.sfcore.reference.RemoteReferenceResolverHelper
sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolve, sfResolveWithParser
 
Methods inherited from interface org.smartfrog.sfcore.prim.Diagnostics
sfDiagnosticsReport
 
Methods inherited from interface org.smartfrog.sfcore.prim.ChildMinder
sfAddChild, sfChildren, sfContainsChild, sfRemoveChild
 

Constructor Detail

ApacheImpl

public ApacheImpl()
           throws java.rmi.RemoteException
Standard Remotable constructor

Throws:
java.rmi.RemoteException - in case of Remote/network error
Method Detail

sfDeploy

public void sfDeploy()
              throws SmartFrogException,
                     java.rmi.RemoteException
This method retrieves the paramters from the .sf file.

Specified by:
sfDeploy in interface Prim
Overrides:
sfDeploy in class CompoundImpl
Throws:
SmartFrogException - error in deploying the component
java.rmi.RemoteException - in case of Remote/network error

sfStart

public void sfStart()
             throws SmartFrogException,
                    java.rmi.RemoteException
This sets a flag that will start the httpd process running.

Specified by:
sfStart in interface Prim
Overrides:
sfStart in class CompoundImpl
Throws:
SmartFrogException - error in starting the component
java.rmi.RemoteException - in case of Remote/network error

sfTerminateWith

public void sfTerminateWith(TerminationRecord tr)
This shuts down Apache by requesting that the ApacheState variable be set to false.

Overrides:
sfTerminateWith in class CompoundImpl
Parameters:
tr - TerminationRecord object

setApacheState

public void setApacheState(boolean newState)
The logic behind this is: if Apache is not running and the desired state is to be running then Set Apaches state to running call start() else Set Apaches state to the required state end It is not possible to simply change the variable to true and start a new thread because it may already be running and you would end up starting too many httpd processes.

Parameters:
newState - new state of Apache

getApacheState

public boolean getApacheState()
Get Apache state

Returns:
boolean

run

public void run()
This method is used to 'maintain' a processes desired state. In the case of the Apache httpd if the number of httpd listener threads is 0 then the process is restarted This method is linux/unix specific since it uses the command: "ps -A | grep httpd" This is not possible to do on windows without writing lots of messy W32 code and using JNI.

Specified by:
run in interface java.lang.Runnable

startDaemon

public void startDaemon()
                 throws java.rmi.RemoteException
This method is not used by the ApacheImpl class but would be used by a Remote client.

Specified by:
startDaemon in interface Apache
Throws:
java.rmi.RemoteException - in case of Remote/network error

stopDaemon

public void stopDaemon()
                throws java.rmi.RemoteException
This method is not used by the ApacheImpl class but would be used by a Remote client.

Specified by:
stopDaemon in interface Apache
Throws:
java.rmi.RemoteException - in case of Remote/network error

refreshDaemon

public void refreshDaemon()
                   throws java.rmi.RemoteException
This method is not used by the ApacheImpl class but would be used by a Remote client.

Specified by:
refreshDaemon in interface Apache
Throws:
java.rmi.RemoteException - in case of Remote/network error

refreshConfig

public void refreshConfig(java.lang.String scriptURL,
                          java.lang.String fileName)
                   throws java.rmi.RemoteException
This method is not currently used but could be used to maintain a desired configuration of Apache and then periodically refresh Apache to this state.

Specified by:
refreshConfig in interface Apache
Parameters:
scriptURL - script url
fileName - file name
Throws:
java.rmi.RemoteException - in case of Remote/network error

getData

public int getData()
            throws java.rmi.RemoteException
Returns an int containing the number of threads - implementation of DataSource interface

Specified by:
getData in interface DataSource
Returns:
int
Throws:
java.rmi.RemoteException - in case of Remote/network error

SmartFrog CORE 3.10.000

(C) Copyright 1998-2006 Hewlett-Packard Development Company, LP