Author: wesw
Date: Thu Mar 12 20:44:50 2009
New Revision: 753010

URL: http://svn.apache.org/viewvc?rev=753010&view=rev
Log:
struts zone deployment files

Added:
    struts/current/zone/config-files/
    struts/current/zone/config-files/httpd.conf.patch
    struts/current/zone/config-files/jetty.xml.patch
    struts/current/zone/config-files/tomcat-server.xml.patch
    struts/current/zone/manifest/
    struts/current/zone/manifest/jetty-6-1-14-java5.xml
    struts/current/zone/manifest/s2app_deploy_daemon.xml
    struts/current/zone/manifest/tomcat-5-5-27-java5.xml
    struts/current/zone/s2app_deploy_daemon/
    struts/current/zone/s2app_deploy_daemon/config.xml
    struts/current/zone/s2app_deploy_daemon/logger.conf
    struts/current/zone/s2app_deploy_daemon/s2app_deploy_daemon   (with props)
    struts/current/zone/startup-scripts/
    struts/current/zone/startup-scripts/svc-jetty-6-1-14-java5   (with props)
    struts/current/zone/startup-scripts/svc-s2app_deploy_daemon   (with props)
    struts/current/zone/startup-scripts/svc-tomcat-5-5-27-java5   (with props)

Added: struts/current/zone/config-files/httpd.conf.patch
URL: 
http://svn.apache.org/viewvc/struts/current/zone/config-files/httpd.conf.patch?rev=753010&view=auto
==============================================================================
--- struts/current/zone/config-files/httpd.conf.patch (added)
+++ struts/current/zone/config-files/httpd.conf.patch Thu Mar 12 20:44:50 2009
@@ -0,0 +1,197 @@
+--- /etc/apache2/httpd.conf.orig       Mon Jan 19 04:33:46 2009
++++ /etc/apache2/httpd.conf    Thu Jan 22 14:30:27 2009
+@@ -322,7 +322,7 @@
+ # e-mailed.  This address appears on some server-generated pages, such
+ # as error documents.  e.g. ad...@your-domain.com
+ #
+-ServerAdmin y...@yourhost.com
++ServerAdmin d...@struts.apache.org
+ 
+ #
+ # ServerName gives the name and port that the server uses to identify itself.
+@@ -336,7 +336,7 @@
+ # You will have to access it by its address anyway, and this will make 
+ # redirections work in a sensible way.
+ #
+-ServerName 127.0.0.1
++ServerName struts.zones.apache.org
+ 
+ #
+ # UseCanonicalName: Determines how Apache constructs self-referencing 
+@@ -418,20 +418,20 @@
+ # Control access to UserDir directories.  The following is an example
+ # for a site where these directories are restricted to read-only.
+ #
+-<Directory /home/*/public_html>
+-    AllowOverride FileInfo AuthConfig Limit Indexes
+-    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
+-    <Limit GET POST OPTIONS PROPFIND>
+-        Order allow,deny
+-        Allow from all
+-    </Limit>
+-    <LimitExcept GET POST OPTIONS PROPFIND>
+-        Order deny,allow
+-        Deny from all
+-    </LimitExcept>
+-</Directory>
+-
++#<Directory /home/*/public_html>
++#    AllowOverride FileInfo AuthConfig Limit Indexes
++#    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
++#    <Limit GET POST OPTIONS PROPFIND>
++#        Order allow,deny
++#        Allow from all
++#    </Limit>
++#    <LimitExcept GET POST OPTIONS PROPFIND>
++#        Order deny,allow
++#        Deny from all
++#    </LimitExcept>
++#</Directory>
+ #
++#
+ # DirectoryIndex: sets the file that Apache will serve if a directory
+ # is requested.
+ #
+@@ -580,7 +580,7 @@
+ # Set to "EMail" to also include a mailto: link to the ServerAdmin.
+ # Set to one of:  On | Off | EMail
+ #
+-ServerSignature On
++ServerSignature Off
+ 
+ #
+ # Aliases: Add here as many aliases as you need (with no limit). The format 
is 
+@@ -595,37 +595,37 @@
+ # We include the /icons/ alias for FancyIndexed directory listings.  If you
+ # do not use FancyIndexing, you may comment this out.
+ #
+-Alias /icons/ "/var/apache2/icons/"
++#Alias /icons/ "/var/apache2/icons/"
++#
++#<Directory "/var/apache2/icons">
++#    Options Indexes MultiViews
++#    AllowOverride None
++#    Order allow,deny
++#    Allow from all
++#</Directory>
+ 
+-<Directory "/var/apache2/icons">
+-    Options Indexes MultiViews
+-    AllowOverride None
+-    Order allow,deny
+-    Allow from all
+-</Directory>
+-
+ #
+ # This should be changed to the ServerRoot/manual/.  The alias provides
+ # the manual, even if you choose to move your DocumentRoot.  You may comment
+ # this out if you do not care for the documentation.
+ #
+-AliasMatch ^/manual(?:/(?:de|en|es|fr|ja|ko|ru))?(/.*)?$ 
"/usr/apache2/manual$1"
+-
+-<Directory "/usr/apache2/manual">
+-    Options Indexes
+-    AllowOverride None
+-    Order allow,deny
+-    Allow from all
+-
+-    <Files *.html>
+-        SetHandler type-map
+-    </Files>
+-
+-    SetEnvIf Request_URI ^/manual/(de|en|es|fr|ja|ko|ru)/ prefer-language=$1
+-    RedirectMatch 301 ^/manual(?:/(de|en|es|fr|ja|ko|ru)){2,}(/.*)?$ 
/manual/$1$2
+-</Directory>
+-
++#AliasMatch ^/manual(?:/(?:de|en|es|fr|ja|ko|ru))?(/.*)?$ 
"/usr/apache2/manual$1"
+ #
++#<Directory "/usr/apache2/manual">
++#    Options Indexes
++#    AllowOverride None
++#    Order allow,deny
++#    Allow from all
++#
++#    <Files *.html>
++#        SetHandler type-map
++#    </Files>
++#
++#    SetEnvIf Request_URI ^/manual/(de|en|es|fr|ja|ko|ru)/ prefer-language=$1
++#    RedirectMatch 301 ^/manual(?:/(de|en|es|fr|ja|ko|ru)){2,}(/.*)?$ 
/manual/$1$2
++#</Directory>
++#
++#
+ # ScriptAlias: This controls which directories contain server scripts.
+ # ScriptAliases are essentially the same as Aliases, except that
+ # documents in the realname directory are treated as applications and
+@@ -633,7 +633,7 @@
+ # The same rules about trailing "/" apply to ScriptAlias directives as to
+ # Alias.
+ #
+-ScriptAlias /cgi-bin/ "/var/apache2/cgi-bin/"
++#ScriptAlias /cgi-bin/ "/var/apache2/cgi-bin/"
+ 
+ <IfModule mod_cgid.c>
+ #
+@@ -647,14 +647,14 @@
+ # "/var/apache2/cgi-bin" should be changed to whatever your ScriptAliased
+ # CGI directory exists, if you have that configured.
+ #
+-<Directory "/var/apache2/cgi-bin">
+-    AllowOverride None
+-    Options None
+-    Order allow,deny
+-    Allow from all
+-</Directory>
+-
++#<Directory "/var/apache2/cgi-bin">
++#    AllowOverride None
++#    Options None
++#    Order allow,deny
++#    Allow from all
++#</Directory>
+ #
++#
+ # Redirect allows you to tell clients about documents which used to exist in
+ # your server's namespace, but do not anymore. This allows you to tell the
+ # clients where to look for the relocated document.
+@@ -1057,7 +1057,40 @@
+     Include /etc/apache2/ssl.conf
+ </IfModule>
+ 
++ProxyRequests off
++#######################################################################
++## HERE IS WHERE YOU ADD THE APP SERVERS CONFIGURED FOR THE STRUTS ZONE
++#######################################################################
++# Tomcat 5.5.27 running on Java 5
++ProxyPass /tomcat-5-5-27-java5-struts2-showcase 
http://localhost:8080/tomcat-5-5-27-java5-struts2-showcase
++ProxyPassReverse /tomcat-5-5-27-java5-struts2-showcase 
http://localhost:8080/tomcat-5-5-27-java5-struts2-showcase
++ProxyPass /tomcat-5-5-27-java5-struts2-blank 
http://localhost:8080/tomcat-5-5-27-java5-struts2-blank
++ProxyPassReverse /tomcat-5-5-27-java5-struts2-blank 
http://localhost:8080/tomcat-5-5-27-java5-struts2-blank
++ProxyPass /tomcat-5-5-27-java5-struts2-mailreader 
http://localhost:8080/tomcat-5-5-27-java5-struts2-mailreader
++ProxyPassReverse /tomcat-5-5-27-java5-struts2-mailreader 
http://localhost:8080/tomcat-5-5-27-java5-struts2-mailreader
++ProxyPass /tomcat-5-5-27-java5-struts2-portlet 
http://localhost:8080/tomcat-5-5-27-java5-struts2-portlet
++ProxyPassReverse /tomcat-5-5-27-java5-struts2-portlet 
http://localhost:8080/tomcat-5-5-27-java5-struts2-portlet
++ProxyPass /tomcat-5-5-27-java5-struts2-rest-showcase 
http://localhost:8080/tomcat-5-5-27-java5-struts2-rest-showcase
++ProxyPassReverse /tomcat-5-5-27-java5-struts2-rest-showcase 
http://localhost:8080/tomcat-5-5-27-java5-struts2-rest-showcase
+ 
++# Jetty 6.1.14 running on Java 5
++ProxyPass /jetty-6-1-14-java5-struts2-showcase 
http://localhost:8081/jetty-6-1-14-java5-struts2-showcase
++ProxyPassReverse /jetty-6-1-14-java5-struts2-showcase 
http://localhost:8081/jetty-6-1-14-java5-struts2-showcase
++ProxyPass /jetty-6-1-14-java5-struts2-blank 
http://localhost:8081/jetty-6-1-14-java5-struts2-blank
++ProxyPassReverse /jetty-6-1-14-java5-struts2-blank 
http://localhost:8081/jetty-6-1-14-java5-struts2-blank
++ProxyPass /jetty-6-1-14-java5-struts2-mailreader 
http://localhost:8081/jetty-6-1-14-java5-struts2-mailreader
++ProxyPassReverse /jetty-6-1-14-java5-struts2-mailreader 
http://localhost:8081/jetty-6-1-14-java5-struts2-mailreader
++ProxyPass /jetty-6-1-14-java5-struts2-portlet 
http://localhost:8081/jetty-6-1-14-java5-struts2-portlet
++ProxyPassReverse /jetty-6-1-14-java5-struts2-portlet 
http://localhost:8081/jetty-6-1-14-java5-struts2-portlet
++ProxyPass /jetty-6-1-14-java5-struts2-rest-showcase 
http://localhost:8081/jetty-6-1-14-java5-struts2-rest-showcase
++ProxyPassReverse /jetty-6-1-14-java5-struts2-rest-showcase 
http://localhost:8081/jetty-6-1-14-java5-struts2-rest-showcase
++
++
++#######################################################################
++# END OF ADDED APP SERVERS
++#######################################################################
++
++
+ ### Section 3: Virtual Hosts
+ #
+ # VirtualHost: If you want to maintain multiple domains/hostnames on your

Added: struts/current/zone/config-files/jetty.xml.patch
URL: 
http://svn.apache.org/viewvc/struts/current/zone/config-files/jetty.xml.patch?rev=753010&view=auto
==============================================================================
--- struts/current/zone/config-files/jetty.xml.patch (added)
+++ struts/current/zone/config-files/jetty.xml.patch Thu Mar 12 20:44:50 2009
@@ -0,0 +1,18 @@
+--- /local/appservers/jetty/jetty-6.1.14/etc/jetty.xml.orig    Thu Jan 22 
02:04:48 2009
++++ /local/appservers/jetty/jetty-6.1.14/etc/jetty.xml Thu Jan 22 02:11:25 2009
+@@ -46,12 +46,12 @@
+     <Call name="addConnector">
+       <Arg>
+           <New class="org.mortbay.jetty.nio.SelectChannelConnector">
+-            <Set name="host"><SystemProperty name="jetty.host" /></Set>
+-            <Set name="port"><SystemProperty name="jetty.port" 
default="8080"/></Set>
++            <Set name="host"><SystemProperty name="jetty.host" 
default="127.0.0.1" /></Set>
++            <Set name="port"><SystemProperty name="jetty.port" default="8081" 
/></Set>
+             <Set name="maxIdleTime">30000</Set>
+             <Set name="Acceptors">2</Set>
+             <Set name="statsOn">false</Set>
+-            <Set name="confidentialPort">8443</Set>
++            <Set name="confidentialPort">8444</Set>
+           <Set name="lowResourcesConnections">5000</Set>
+           <Set name="lowResourcesMaxIdleTime">5000</Set>
+           </New>

Added: struts/current/zone/config-files/tomcat-server.xml.patch
URL: 
http://svn.apache.org/viewvc/struts/current/zone/config-files/tomcat-server.xml.patch?rev=753010&view=auto
==============================================================================
--- struts/current/zone/config-files/tomcat-server.xml.patch (added)
+++ struts/current/zone/config-files/tomcat-server.xml.patch Thu Mar 12 
20:44:50 2009
@@ -0,0 +1,391 @@
+--- /local/appservers/tomcat/apache-tomcat-5.5.27/conf/server.xml.orig Mon Jan 
19 03:52:38 2009
++++ /local/appservers/tomcat/apache-tomcat-5.5.27/conf/server.xml      Mon Jan 
19 04:01:58 2009
+@@ -1,387 +1,19 @@
+ <?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.
+--->
+-<!-- Example Server Configuration File -->
+-<!-- Note that component elements are nested corresponding to their
+-     parent-child relationships with each other -->
+-
+-<!-- A "Server" is a singleton element that represents the entire JVM,
+-     which may contain one or more "Service" instances.  The Server
+-     listens for a shutdown command on the indicated port.
+-
+-     Note:  A "Server" is not itself a "Container", so you may not
+-     define subcomponents such as "Valves" or "Loggers" at this level.
+- -->
+-
+ <Server port="8005" shutdown="SHUTDOWN">
+ 
+-  <!-- Comment these entries out to disable JMX MBeans support used for the 
+-       administration web application -->
+-  <Listener className="org.apache.catalina.core.AprLifecycleListener" />
+-  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
+-  <Listener 
className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
+-  <Listener 
className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/>
+-
+-  <!-- Global JNDI resources -->
+-  <GlobalNamingResources>
+-
+-    <!-- Test entry for demonstration purposes -->
+-    <Environment name="simpleValue" type="java.lang.Integer" value="30"/>
+-
+-    <!-- Editable user database that can also be used by
+-         UserDatabaseRealm to authenticate users -->
+-    <Resource name="UserDatabase" auth="Container"
+-              type="org.apache.catalina.UserDatabase"
+-       description="User database that can be updated and saved"
+-           factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
+-          pathname="conf/tomcat-users.xml" />
+-
+-  </GlobalNamingResources>
+-
+-  <!-- A "Service" is a collection of one or more "Connectors" that share
+-       a single "Container" (and therefore the web applications visible
+-       within that Container).  Normally, that Container is an "Engine",
+-       but this is not required.
+-
+-       Note:  A "Service" is not itself a "Container", so you may not
+-       define subcomponents such as "Valves" or "Loggers" at this level.
+-   -->
+-
+-  <!-- Define the Tomcat Stand-Alone Service -->
+   <Service name="Catalina">
+ 
+-    <!-- A "Connector" represents an endpoint by which requests are received
+-         and responses are returned.  Each Connector passes requests on to the
+-         associated "Container" (normally an Engine) for processing.
+-
+-         By default, a non-SSL HTTP/1.1 Connector is established on port 8080.
+-         You can also enable an SSL HTTP/1.1 Connector on port 8443 by
+-         following the instructions below and uncommenting the second 
Connector
+-         entry.  SSL support requires the following steps (see the SSL Config
+-         HOWTO in the Tomcat 5 documentation bundle for more detailed
+-         instructions):
+-         * If your JDK version 1.3 or prior, download and install JSSE 1.0.2 
or
+-           later, and put the JAR files into "$JAVA_HOME/jre/lib/ext".
+-         * Execute:
+-             %JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA 
(Windows)
+-             $JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA  (Unix)
+-           with a password value of "changeit" for both the certificate and
+-           the keystore itself.
+-
+-         By default, DNS lookups are enabled when a web application calls
+-         request.getRemoteHost().  This can have an adverse impact on
+-         performance, so you can disable it by setting the
+-         "enableLookups" attribute to "false".  When DNS lookups are disabled,
+-         request.getRemoteHost() will return the String version of the
+-         IP address of the remote client.
+-    -->
+-
+-    <!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
+-    <Connector port="8080" maxHttpHeaderSize="8192"
++    <Connector address="localhost" port="8080" maxHttpHeaderSize="8192"
+                maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
+                enableLookups="false" redirectPort="8443" acceptCount="100"
+                connectionTimeout="20000" disableUploadTimeout="true" />
+-    <!-- Note : To disable connection timeouts, set connectionTimeout value
+-     to 0 -->
+       
+-      <!-- Note : To use gzip compression you could set the following 
properties :
+-      
+-                         compression="on" 
+-                         compressionMinSize="2048" 
+-                         noCompressionUserAgents="gozilla, traviata" 
+-                         compressableMimeType="text/html,text/xml"
+-      -->
+-
+-    <!-- Define a SSL HTTP/1.1 Connector on port 8443 -->
+-    <!--
+-    <Connector port="8443" maxHttpHeaderSize="8192"
+-               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
+-               enableLookups="false" disableUploadTimeout="true"
+-               acceptCount="100" scheme="https" secure="true"
+-               clientAuth="false" sslProtocol="TLS" />
+-    -->
+-
+-    <!-- Define an AJP 1.3 Connector on port 8009 -->
+-    <Connector port="8009" 
+-               enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
+-
+-    <!-- Define a Proxied HTTP/1.1 Connector on port 8082 -->
+-    <!-- See proxy documentation for more information about using this. -->
+-    <!--
+-    <Connector port="8082" 
+-               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
+-               enableLookups="false" acceptCount="100" 
connectionTimeout="20000"
+-               proxyPort="80" disableUploadTimeout="true" />
+-    -->
+-
+-    <!-- An Engine represents the entry point (within Catalina) that processes
+-         every request.  The Engine implementation for Tomcat stand alone
+-         analyzes the HTTP headers included with the request, and passes them
+-         on to the appropriate Host (virtual host). -->
+-
+-    <!-- You should set jvmRoute to support load-balancing via AJP ie :
+-    <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">         
+-    --> 
+-         
+-    <!-- Define the top level container in our container hierarchy -->
+     <Engine name="Catalina" defaultHost="localhost">
+ 
+-      <!-- The request dumper valve dumps useful debugging information about
+-           the request headers and cookies that were received, and the 
response
+-           headers and cookies that were sent, for all requests received by
+-           this instance of Tomcat.  If you care only about requests to a
+-           particular virtual host, or a particular application, nest this
+-           element inside the corresponding <Host> or <Context> entry instead.
+-
+-           For a similar mechanism that is portable to all Servlet 2.4
+-           containers, check out the "RequestDumperFilter" Filter in the
+-           example application (the source for this filter may be found in
+-           "$CATALINA_HOME/webapps/examples/WEB-INF/classes/filters").
+-
+-           Note that this Valve uses the platform's default character 
encoding.
+-           This may cause problems for developers in another encoding, e.g.
+-           UTF-8.  Use the RequestDumperFilter instead.
+-
+-           Also note that enabling this Valve will write a ton of stuff to 
your
+-           logs.  They are likely to grow quite large.  This extensive log 
writing
+-           will definitely slow down your server.
+-
+-           Request dumping is disabled by default.  Uncomment the following
+-           element to enable it. -->
+-      <!--
+-      <Valve className="org.apache.catalina.valves.RequestDumperValve"/>
+-      -->
+-
+-      <!-- Because this Realm is here, an instance will be shared globally -->
+-
+-      <!-- This Realm uses the UserDatabase configured in the global JNDI
+-           resources under the key "UserDatabase".  Any edits
+-           that are performed against this UserDatabase are immediately
+-           available for use by the Realm.  -->
+-      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
+-             resourceName="UserDatabase"/>
+-
+-      <!-- Comment out the old realm but leave here for now in case we
+-           need to go back quickly -->
+-      <!--
+-      <Realm className="org.apache.catalina.realm.MemoryRealm" />
+-      -->
+-
+-      <!-- Replace the above Realm with one of the following to get a Realm
+-           stored in a database and accessed via JDBC -->
+-
+-      <!--
+-      <Realm  className="org.apache.catalina.realm.JDBCRealm"
+-             driverName="org.gjt.mm.mysql.Driver"
+-          connectionURL="jdbc:mysql://localhost/authority"
+-         connectionName="test" connectionPassword="test"
+-              userTable="users" userNameCol="user_name" 
userCredCol="user_pass"
+-          userRoleTable="user_roles" roleNameCol="role_name" />
+-      -->
+-
+-      <!--
+-      <Realm  className="org.apache.catalina.realm.JDBCRealm"
+-             driverName="oracle.jdbc.driver.OracleDriver"
+-          connectionURL="jdbc:oracle:thin:@ntserver:1521:ORCL"
+-         connectionName="scott" connectionPassword="tiger"
+-              userTable="users" userNameCol="user_name" 
userCredCol="user_pass"
+-          userRoleTable="user_roles" roleNameCol="role_name" />
+-      -->
+-
+-      <!--
+-      <Realm  className="org.apache.catalina.realm.JDBCRealm"
+-             driverName="sun.jdbc.odbc.JdbcOdbcDriver"
+-          connectionURL="jdbc:odbc:CATALINA"
+-              userTable="users" userNameCol="user_name" 
userCredCol="user_pass"
+-          userRoleTable="user_roles" roleNameCol="role_name" />
+-      -->
+-
+-      <!-- Define the default virtual host
+-           Note: XML Schema validation will not work with Xerces 2.2.
+-       -->
+       <Host name="localhost" appBase="webapps"
+        unpackWARs="true" autoDeploy="true"
+        xmlValidation="false" xmlNamespaceAware="false">
+ 
+-        <!-- Defines a cluster for this node,
+-             By defining this element, means that every manager will be 
changed.
+-             So when running a cluster, only make sure that you have webapps 
in there
+-             that need to be clustered and remove the other ones.
+-             A cluster has the following parameters:
+-
+-             className = the fully qualified name of the cluster class
+-
+-             clusterName = a descriptive name for your cluster, can be 
anything
+-
+-             mcastAddr = the multicast address, has to be the same for all 
the nodes
+-
+-             mcastPort = the multicast port, has to be the same for all the 
nodes
+-             
+-             mcastBindAddress = bind the multicast socket to a specific 
address
+-             
+-             mcastTTL = the multicast TTL if you want to limit your broadcast
+-             
+-             mcastSoTimeout = the multicast readtimeout 
+-
+-             mcastFrequency = the number of milliseconds in between sending a 
"I'm alive" heartbeat
+-
+-             mcastDropTime = the number a milliseconds before a node is 
considered "dead" if no heartbeat is received
+-
+-             tcpThreadCount = the number of threads to handle incoming 
replication requests, optimal would be the same amount of threads as nodes 
+-
+-             tcpListenAddress = the listen address (bind address) for TCP 
cluster request on this host, 
+-                                in case of multiple ethernet cards.
+-                                auto means that address becomes
+-                                InetAddress.getLocalHost().getHostAddress()
+-
+-             tcpListenPort = the tcp listen port
+-
+-             tcpSelectorTimeout = the timeout (ms) for the Selector.select() 
method in case the OS
+-                                  has a wakup bug in java.nio. Set to 0 for 
no timeout
+-
+-             printToScreen = true means that managers will also print to 
std.out
+-
+-             expireSessionsOnShutdown = true means that 
+-
+-             useDirtyFlag = true means that we only replicate a session after 
setAttribute,removeAttribute has been called.
+-                            false means to replicate the session after each 
request.
+-                            false means that replication would work for the 
following piece of code: (only for SimpleTcpReplicationManager)
+-                            <%
+-                            HashMap map = 
(HashMap)session.getAttribute("map");
+-                            map.put("key","value");
+-                            %>
+-             replicationMode = can be either 'pooled', 'synchronous' or 
'asynchronous'.
+-                               * Pooled means that the replication happens 
using several sockets in a synchronous way. Ie, the data gets replicated, then 
the request return. This is the same as the 'synchronous' setting except it 
uses a pool of sockets, hence it is multithreaded. This is the fastest and 
safest configuration. To use this, also increase the nr of tcp threads that you 
have dealing with replication.
+-                               * Synchronous means that the thread that 
executes the request, is also the
+-                               thread the replicates the data to the other 
nodes, and will not return until all
+-                               nodes have received the information.
+-                               * Asynchronous means that there is a specific 
'sender' thread for each cluster node,
+-                               so the request thread will queue the 
replication request into a "smart" queue,
+-                               and then return to the client.
+-                               The "smart" queue is a queue where when a 
session is added to the queue, and the same session
+-                               already exists in the queue from a previous 
request, that session will be replaced
+-                               in the queue instead of replicating two 
requests. This almost never happens, unless there is a 
+-                               large network delay.
+-        -->             
+-        <!--
+-            When configuring for clustering, you also add in a valve to catch 
all the requests
+-            coming in, at the end of the request, the session may or may not 
be replicated.
+-            A session is replicated if and only if all the conditions are met:
+-            1. useDirtyFlag is true or setAttribute or removeAttribute has 
been called AND
+-            2. a session exists (has been created)
+-            3. the request is not trapped by the "filter" attribute
+-
+-            The filter attribute is to filter out requests that could not 
modify the session,
+-            hence we don't replicate the session after the end of this 
request.
+-            The filter is negative, ie, anything you put in the filter, you 
mean to filter out,
+-            ie, no replication will be done on requests that match one of the 
filters.
+-            The filter attribute is delimited by ;, so you can't escape out ; 
even if you wanted to.
+-
+-            filter=".*\.gif;.*\.js;" means that we will not replicate the 
session after requests with the URI
+-            ending with .gif and .js are intercepted.
+-            
+-            The deployer element can be used to deploy apps cluster wide.
+-            Currently the deployment only deploys/undeploys to working 
members in the cluster
+-            so no WARs are copied upons startup of a broken node.
+-            The deployer watches a directory (watchDir) for WAR files when 
watchEnabled="true"
+-            When a new war file is added the war gets deployed to the local 
instance,
+-            and then deployed to the other instances in the cluster.
+-            When a war file is deleted from the watchDir the war is 
undeployed locally 
+-            and cluster wide
+-        -->
+-        
+-        <!--
+-        <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
+-                 
managerClassName="org.apache.catalina.cluster.session.DeltaManager"
+-                 expireSessionsOnShutdown="false"
+-                 useDirtyFlag="true"
+-                 notifyListenersOnReplication="true">
+-
+-            <Membership 
+-                className="org.apache.catalina.cluster.mcast.McastService"
+-                mcastAddr="228.0.0.4"
+-                mcastPort="45564"
+-                mcastFrequency="500"
+-                mcastDropTime="3000"/>
+-
+-            <Receiver 
+-                
className="org.apache.catalina.cluster.tcp.ReplicationListener"
+-                tcpListenAddress="auto"
+-                tcpListenPort="4001"
+-                tcpSelectorTimeout="100"
+-                tcpThreadCount="6"/>
+-
+-            <Sender
+-                
className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
+-                replicationMode="pooled"
+-                ackTimeout="15000"
+-                waitForAck="true"/>
+-
+-            <Valve 
className="org.apache.catalina.cluster.tcp.ReplicationValve"
+-                   
filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
+-                   
+-            <Deployer 
className="org.apache.catalina.cluster.deploy.FarmWarDeployer"
+-                      tempDir="/tmp/war-temp/"
+-                      deployDir="/tmp/war-deploy/"
+-                      watchDir="/tmp/war-listen/"
+-                      watchEnabled="false"/>
+-                      
+-            <ClusterListener 
className="org.apache.catalina.cluster.session.ClusterSessionListener"/>
+-        </Cluster>
+-        -->        
+-
+-
+-
+-        <!-- Normally, users must authenticate themselves to each web app
+-             individually.  Uncomment the following entry if you would like
+-             a user to be authenticated the first time they encounter a
+-             resource protected by a security constraint, and then have that
+-             user identity maintained across *all* web applications contained
+-             in this virtual host. -->
+-        <!--
+-        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
+-        -->
+-
+-        <!-- Access log processes all requests for this virtual host.  By
+-             default, log files are created in the "logs" directory relative 
to
+-             $CATALINA_HOME.  If you wish, you can specify a different
+-             directory with the "directory" attribute.  Specify either a 
relative
+-             (to $CATALINA_HOME) or absolute path to the desired directory.
+-        -->
+-        <!--
+-        <Valve className="org.apache.catalina.valves.AccessLogValve"
+-                 directory="logs"  prefix="localhost_access_log." 
suffix=".txt"
+-                 pattern="common" resolveHosts="false"/>
+-        -->
+-
+-        <!-- Access log processes all requests for this virtual host.  By
+-             default, log files are created in the "logs" directory relative 
to
+-             $CATALINA_HOME.  If you wish, you can specify a different
+-             directory with the "directory" attribute.  Specify either a 
relative
+-             (to $CATALINA_HOME) or absolute path to the desired directory.
+-             This access log implementation is optimized for maximum 
performance,
+-             but is hardcoded to support only the "common" and "combined" 
patterns.
+-        -->
+-        <!--
+-        <Valve className="org.apache.catalina.valves.FastCommonAccessLogValve"
+-                 directory="logs"  prefix="localhost_access_log." 
suffix=".txt"
+-                 pattern="common" resolveHosts="false"/>
+-        -->
+-
+       </Host>
+ 
+     </Engine>

Added: struts/current/zone/manifest/jetty-6-1-14-java5.xml
URL: 
http://svn.apache.org/viewvc/struts/current/zone/manifest/jetty-6-1-14-java5.xml?rev=753010&view=auto
==============================================================================
--- struts/current/zone/manifest/jetty-6-1-14-java5.xml (added)
+++ struts/current/zone/manifest/jetty-6-1-14-java5.xml Thu Mar 12 20:44:50 2009
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
+
+<service_bundle type="manifest" name="tomcat">
+  <service name="network/app-servers/jetty-6-1-14-java5" type="service" 
version="1">
+
+    <create_default_instance enabled="false"/>
+
+    <single_instance/>
+
+    <dependency name="filesystem" grouping="require_all" restart_on="none" 
type="service">
+      <service_fmri value="svc:/system/filesystem/local"/>
+    </dependency>
+
+    <dependency name="network" grouping="require_all" restart_on="none" 
type="service">
+      <service_fmri value="svc:/network/loopback"/>
+    </dependency>
+
+    <exec_method 
+         type="method" name="start" 
+         exec="/local/smf/scripts/svc-jetty-6-1-14-java5 start" 
+         timeout_seconds="30">
+      <method_context>
+        <method_credential user="appservers" group="appservers"/>
+      </method_context>
+    </exec_method>
+
+    <exec_method 
+         type="method" name="stop" 
+         exec="/local/smf/scripts/svc-jetty-6-1-14-java5 stop" 
+         timeout_seconds="60"/>
+
+    <exec_method 
+         type="method" name="restart" 
+         exec="/local/smf/scripts/svc-jetty-6-1-14-java5 restart" 
+         timeout_seconds="60"/>
+
+    <stability value="Unstable"/>
+
+    <template>
+      <common_name>
+        <loctext xml:lang="C"> Tomcat </loctext>
+      </common_name>
+    </template>
+
+  </service>
+</service_bundle>

Added: struts/current/zone/manifest/s2app_deploy_daemon.xml
URL: 
http://svn.apache.org/viewvc/struts/current/zone/manifest/s2app_deploy_daemon.xml?rev=753010&view=auto
==============================================================================
--- struts/current/zone/manifest/s2app_deploy_daemon.xml (added)
+++ struts/current/zone/manifest/s2app_deploy_daemon.xml Thu Mar 12 20:44:50 
2009
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
+
+<service_bundle type="manifest" name="s2app_deploy_daemon">
+  <service name="network/app-servers/s2app_deploy_daemon" type="service" 
version="1">
+
+    <create_default_instance enabled="false"/>
+
+    <single_instance/>
+
+    <dependency name="filesystem" grouping="require_all" restart_on="none" 
type="service">
+      <service_fmri value="svc:/system/filesystem/local"/>
+    </dependency>
+
+    <exec_method 
+         type="method" name="start" 
+         exec="/local/smf/scripts/svc-s2app_deploy_daemon start" 
+         timeout_seconds="30">
+      <method_context>
+        <method_credential user="appservers" group="appservers"/>
+      </method_context>
+    </exec_method>
+
+    <exec_method 
+         type="method" name="stop" 
+         exec="/local/smf/scripts/svc-s2app_deploy_daemon stop" 
+         timeout_seconds="120"/>
+
+    <exec_method 
+         type="method" name="restart" 
+         exec="/local/smf/scripts/svc-s2app_deploy_daemon restart" 
+         timeout_seconds="150"/>
+
+    <stability value="Unstable"/>
+
+    <template>
+      <common_name>
+        <loctext xml:lang="C"> Tomcat </loctext>
+      </common_name>
+    </template>
+
+  </service>
+</service_bundle>

Added: struts/current/zone/manifest/tomcat-5-5-27-java5.xml
URL: 
http://svn.apache.org/viewvc/struts/current/zone/manifest/tomcat-5-5-27-java5.xml?rev=753010&view=auto
==============================================================================
--- struts/current/zone/manifest/tomcat-5-5-27-java5.xml (added)
+++ struts/current/zone/manifest/tomcat-5-5-27-java5.xml Thu Mar 12 20:44:50 
2009
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
+
+<service_bundle type="manifest" name="tomcat">
+  <service name="network/app-servers/tomcat-5-5-27-java5" type="service" 
version="1">
+
+    <create_default_instance enabled="false"/>
+
+    <single_instance/>
+
+    <dependency name="filesystem" grouping="require_all" restart_on="none" 
type="service">
+      <service_fmri value="svc:/system/filesystem/local"/>
+    </dependency>
+
+    <dependency name="network" grouping="require_all" restart_on="none" 
type="service">
+      <service_fmri value="svc:/network/loopback"/>
+    </dependency>
+
+    <exec_method 
+         type="method" name="start" 
+         exec="/local/smf/scripts/svc-tomcat-5-5-27-java5 start" 
+         timeout_seconds="30">
+      <method_context>
+        <method_credential user="appservers" group="appservers"/>
+      </method_context>
+    </exec_method>
+
+    <exec_method 
+         type="method" name="stop" 
+         exec="/local/smf/scripts/svc-tomcat-5-5-27-java5 stop" 
+         timeout_seconds="60"/>
+
+    <exec_method 
+         type="method" name="restart" 
+         exec="/local/smf/scripts/svc-tomcat-5-5-27-java5 restart" 
+         timeout_seconds="60"/>
+
+    <stability value="Unstable"/>
+
+    <template>
+      <common_name>
+        <loctext xml:lang="C"> Tomcat </loctext>
+      </common_name>
+    </template>
+
+  </service>
+</service_bundle>

Added: struts/current/zone/s2app_deploy_daemon/config.xml
URL: 
http://svn.apache.org/viewvc/struts/current/zone/s2app_deploy_daemon/config.xml?rev=753010&view=auto
==============================================================================
--- struts/current/zone/s2app_deploy_daemon/config.xml (added)
+++ struts/current/zone/s2app_deploy_daemon/config.xml Thu Mar 12 20:44:50 2009
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<config>
+  <interval>15</interval>
+  <homeDir>/var/run/s2app_deploy_daemon</homeDir>
+  <configDir>/local/appservers/s2app_deploy_daemon</configDir>
+  <deployablesDir>assembly-zip</deployablesDir>
+  <workDir>work</workDir>
+  <app-servers>
+    <app-server 
+         name="tomcat-5-5-27-java5" 
+         warDir="/local/appservers/tomcat/apache-tomcat-5.5.27/webapps" 
+         deployCmd="" />
+    <app-server 
+         name="jetty-6-1-14-java5" 
+         warDir="/local/appservers/jetty/jetty-6.1.14/webapps"
+         deployCmd="/usr/bin/touch 
/local/appservers/jetty/jetty-6.1.14/contexts/*" />
+  </app-servers>
+</config>

Added: struts/current/zone/s2app_deploy_daemon/logger.conf
URL: 
http://svn.apache.org/viewvc/struts/current/zone/s2app_deploy_daemon/logger.conf?rev=753010&view=auto
==============================================================================
--- struts/current/zone/s2app_deploy_daemon/logger.conf (added)
+++ struts/current/zone/s2app_deploy_daemon/logger.conf Thu Mar 12 20:44:50 2009
@@ -0,0 +1,10 @@
+log4perl.rootLogger               = DEBUG, myFILE
+
+log4perl.appender.myFILE          = Log::Dispatch::FileRotate
+log4perl.appender.myFILE.filename = /var/run/s2app_deploy_daemon/logs/error_log
+log4perl.appender.myFILE.mode     = append
+log4perl.appender.Logfile.max     = 2
+log4perl.appender.Logfile.size    = 10000000
+log4perl.appender.myFILE.layout   = Log::Log4perl::Layout::PatternLayout
+log4perl.appender.myFILE.layout.ConversionPattern = %p (%d) %m%n
+

Added: struts/current/zone/s2app_deploy_daemon/s2app_deploy_daemon
URL: 
http://svn.apache.org/viewvc/struts/current/zone/s2app_deploy_daemon/s2app_deploy_daemon?rev=753010&view=auto
==============================================================================
--- struts/current/zone/s2app_deploy_daemon/s2app_deploy_daemon (added)
+++ struts/current/zone/s2app_deploy_daemon/s2app_deploy_daemon Thu Mar 12 
20:44:50 2009
@@ -0,0 +1,358 @@
+#!/usr/bin/perl
+
+use lib qw(/local/appservers/perl5/lib/site_perl);
+
+use strict;
+use POSIX qw(setsid);
+use XML::Simple;
+use Log::Log4perl;
+use File::Copy qw(move copy);
+use File::Path ;
+
+# for debugging
+use Data::Dumper;
+
+$| = 1; #flush
+
+# get config file from cmd line
+my $config_file = shift ;
+
+# go into background 
+&daemonize;
+
+$SIG{'HUP'} = \&read_config ; # try to re-configure when HUP'd
+$SIG{'TERM'} = \&shutdown ;   # when kill'd make sure to clean up after 
yourself
+
+# setup global for configuration
+my $config ; 
+&read_config;
+
+# setup global for logging
+my $logger ;
+
+&write_pid_file;
+
+while (1) {
+  &check_config;
+  &check_for_new_apps;
+  sleep(&get_config_value("interval"));
+}
+
+sub daemonize {
+# for debugging, if you want to run without daemonizing, 
+# just uncomment the return
+# TODO make into a cmd line arg
+# return ;
+
+  chdir '/'; # get off of any potentially mounted fs
+  open STDIN, '/dev/null' ;
+  open STDOUT, '>>/dev/null';
+  open STDERR, '>>/dev/null';
+  defined(my $l_pid = fork) or die "Failed to fork: $!";
+  if ($l_pid) { # kill off parent
+    exit ;
+  }
+  setsid ; 
+  umask 0;
+
+}
+
+sub read_config {
+
+  # parse our config file
+  if (-e $config_file ) {
+    $config = undef;
+    $config = XMLin($config_file);
+  }
+  else {
+    die "config_file does not exist - " . $config_file;
+  }
+   
+  # initialize logging
+  Log::Log4perl::init( &get_config_value("configDir") . "/logger.conf" );
+  $logger = Log::Log4perl->get_logger;
+
+  $logger->debug("debug dump - ");
+  $logger->debug(Dumper($config));
+
+  my $hupFile = &get_config_value("homeDir") . "/.deployer-hup";
+  if (-e $hupFile ) {
+    unlink $hupFile ;
+  }
+
+}
+
+sub check_config {
+
+  $logger->debug("checking config, config file - $config_file");
+
+  # should we just stop now
+  my $homeDir = &get_config_value("homeDir");
+  if (! $homeDir) {
+    $logger->error("unable to find homeDir, bailing");
+    exit(1);
+  }
+  
+  if (-e $homeDir . "/.deployer-quit" ) {
+    $logger->info("found a quit file");
+    &shutdown;
+  }
+
+  # should we re-read the config file
+  if (-e $homeDir . "/.deployer-hup" ) {
+    $logger->info("found a hup file");
+    &read_config;
+  }
+
+}
+
+sub check_for_new_apps {
+
+  $logger->debug("checking for new apps" );
+  
+  # get deployablesDir
+  my $deployDir = &get_dir_config_value("deployablesDir");
+
+  # read deployablesDir
+  my @files ;
+  if ( opendir(DIRH, $deployDir)) { 
+    @files = readdir(DIRH);
+    closedir(DIRH);
+  }
+  else {
+    $logger->error("failed to open deployablesDir -  $deployDir,  error $!" );
+    exit(1);
+  }
+
+  # check deploy directory for zip
+  my $goodZip = undef ;
+  foreach my $file (@files) {
+    if ( $file =~ m/\.zip$/) {
+      my $cmd = "/usr/bin/unzip -q -t $deployDir/$file";
+      $logger->debug("running: $cmd");
+      my @res = `$cmd`;
+      my $returnVal = $? >> 8;
+      $logger->debug("result = $returnVal");
+      if ($returnVal == 0 ) {
+         $logger->debug("setting goodZip to $file");
+         $goodZip = "$file";
+         last ;
+      }
+      else {
+        $logger->error("not a goodZip, unzip returned status - $returnVal");
+      }
+    }
+  }
+
+  if (!defined($goodZip)) {
+    $logger->debug("goodZip not defined, moving along");
+    return ;
+  }
+  else {
+    # get a work dir
+    my $workDir = &get_dir_config_value("workDir");
+
+    # move zip to work dir
+    my $fileMoved = move("$deployDir/$goodZip", $workDir);
+    if (! $fileMoved) {
+      $logger->error("failed to move $deployDir/$goodZip to $workDir - $!");
+    }
+    else {
+      &deploy_apps("$workDir/$goodZip");
+    }
+  }
+}
+
+sub deploy_apps {
+  my $zipFile = shift;
+  $logger->debug("deploying apps from $zipFile" );
+  
+  my $workDir = &get_dir_config_value("workDir");
+  my $cmd = "/usr/bin/unzip -q -d '$workDir' '$zipFile'";
+  $logger->debug("running: $cmd");
+  my @res = `$cmd`;
+  my $returnVal = $? >> 8;
+      $logger->debug("result = $returnVal");
+  if ($returnVal != 0 ) {
+    $logger->error("unzip had a problem, return code - $returnVal");
+    move($zipFile, $zipFile.".bad");
+    return ;
+  }
+  else {
+    $logger->debug("unzip succeeded!");
+  }
+
+  my $findCmd = "/usr/bin/find '$workDir' -name \\*.war";
+  $logger->debug("running: $findCmd");
+  my @origWarFiles = `$findCmd`;
+  chomp @origWarFiles ;
+  my @newWars = ();
+  foreach my $origWarFile (@origWarFiles) {
+     my $newNameCmd = "/usr/bin/basename $origWarFile";
+     $logger->debug("running: $newNameCmd");
+     my $newName = `$newNameCmd`;
+     chomp $newName;
+     $newName =~ s/\-\d+\.\d+\.\d+\-SNAPSHOT//g;
+     $logger->debug("using $newName as basename for $origWarFile");
+     $logger->debug("copying $origWarFile to $workDir/$newName" );
+     copy("$origWarFile","$workDir/$newName");
+     push @newWars, $newName;
+  }
+  
+  my $appServers = &get_config_value('app-servers');
+  unless ($appServers) {
+    $logger->warn("error parsing config for app-servers, nowhere to deploy");
+    &clean_work_dir();
+    return ;
+  }
+  # this is sort of silly, but so is using XML::Simple
+  my $appServersHashRef = $appServers->{'app-server'};
+  foreach my $appServer (keys %$appServersHashRef) {
+    $logger->debug("working on app server - " . $appServer);
+
+    # check warDir, then deploy
+    my $curWarDir = $appServersHashRef->{$appServer}{'warDir'};
+    $curWarDir =~ s/\/$//g;
+    unless (-d $curWarDir ) {
+      $logger->error("warDir for $appServer is not a directory");
+      next;
+    }
+
+    foreach my $war (@newWars) {
+      my $deployedName = "$appServer-$war" ;
+      $logger->debug("deploying $deployedName to $curWarDir");
+      if (-e "$curWarDir/$deployedName" ) {
+        unlink "$curWarDir/$deployedName" ;
+      }
+      copy("$workDir/$war", "$curWarDir/$deployedName");
+    }
+   
+    # some app servers can't hot deploy, so deploy manually
+    my $deployCmd = $appServersHashRef->{$appServer}{'deployCmd'};
+    if ($deployCmd ne "") {
+      $logger->debug("running - " . $deployCmd);
+      my @res = `$deployCmd`;
+    }
+  }
+  &clean_work_dir();
+}
+
+sub get_dir_config_value {
+  my $dirName = shift;
+  $logger->debug("getting dir config for $dirName");
+  my $dir = &get_config_value($dirName);
+  unless ( -d $dir ) {
+    my $dir2 = &get_config_value("homeDir") . "/" . $dir ;
+    unless (-d $dir2 ) {
+      $logger->error("the dir for $dirName is not valid, tried $dir and 
$dir2");
+      exit(1);
+    }
+    $dir = $dir2;
+  }
+  return $dir ;
+}
+
+sub write_pid_file {
+
+  my $pidFile = &get_config_value("homeDir") . "/pid";
+
+  if (-e $pidFile) {
+    die "pid file exists, please clean " . &get_config_value('homeDir') ;
+  }
+
+  open PIDFILE, ">" . $pidFile
+       or die "unable to open pid file " . $pidFile ;
+
+  print PIDFILE "$$" ;
+
+  close PIDFILE
+       or die "unable to close pid file " . $pidFile ;
+
+}
+
+sub get_config_value {
+
+  my $key = shift;
+
+  if ($config->{$key}) { 
+    return $config->{$key} ;
+  }
+
+  $logger->info("unable to find a value for " . $key . " attempting defaults");
+
+  if ( $key eq "homeDir" ) {
+    return "/var/run/s2app_deploy_daemon";
+  }
+
+  if ( $key eq "configDir" ) {
+    return "/local/appservers/s2app_deploy_daemon";
+  }
+
+  if ( $key eq "deployablesDir" ) {
+    return "assembly-zip";
+  }
+
+  if ( $key eq "workDir" ) {
+    return "work";
+  }
+
+  $logger->error("unable to retrieve a value for " . $key );
+  return undef;
+
+}
+
+sub clean_work_dir {
+  my $workDir = &get_dir_config_value("workDir");
+  if (-d $workDir && $workDir ne "/" ) {
+    my @files ;
+    if ( opendir(DIRH, $workDir)) { 
+      @files = readdir(DIRH);
+      closedir(DIRH);
+    }
+    else {
+      $logger->error("workDir failed to open");
+    }
+    $logger->debug("cleaning out $workDir");
+    foreach my $workDirObj (@files) {
+      if ($workDirObj eq '.' || $workDirObj eq '..') {
+        $logger->debug("skipping . or ..");
+        next;
+      }
+      if (-d "$workDir/$workDirObj") {
+        $logger->debug("rmtreeing $workDir/$workDirObj");
+        rmtree("$workDir/$workDirObj", {'keep_root'=> 1 } );
+      }
+      else {
+        $logger->debug("unlinking $workDir/$workDirObj");
+        unlink("$workDir/$workDirObj");
+      } 
+    }
+  }
+}
+
+sub clean_up {
+
+  $logger->info("cleaning up");
+  my $homeDir = &get_dir_config_value("homeDir");
+
+  # clean out the workDir
+  &clean_work_dir;
+
+  # clean up .deployer- files
+  unlink $homeDir . "/.deployer-hup" ;
+  unlink $homeDir . "/.deployer-quit" ;
+
+  # remove pid file
+  unlink $homeDir . "/pid" ;
+
+}
+
+sub shutdown {
+
+  $logger->info("shutting down");
+
+  &clean_up;
+
+  exit 0;
+
+}

Propchange: struts/current/zone/s2app_deploy_daemon/s2app_deploy_daemon
------------------------------------------------------------------------------
    svn:executable = *

Added: struts/current/zone/startup-scripts/svc-jetty-6-1-14-java5
URL: 
http://svn.apache.org/viewvc/struts/current/zone/startup-scripts/svc-jetty-6-1-14-java5?rev=753010&view=auto
==============================================================================
--- struts/current/zone/startup-scripts/svc-jetty-6-1-14-java5 (added)
+++ struts/current/zone/startup-scripts/svc-jetty-6-1-14-java5 Thu Mar 12 
20:44:50 2009
@@ -0,0 +1,37 @@
+#!/usr/bin/sh
+
+. /lib/svc/share/smf_include.sh
+
+JAVA_HOME=/usr/jdk/jdk1.5.0_17
+export JAVA_HOME
+JAVA_OPTIONS="-Xms128m -Xmx768m -XX:MaxPermSize=256m"
+export JAVA_OPTIONS
+JETTY_HOME="/local/appservers/jetty/jetty-6.1.14"
+export JETTY_HOME
+JETTY_PORT="8081"
+export JETTY_PORT
+JETTY_RUN="/var/run/jetty-6.1.14"
+export JETTY_RUN
+
+case $1 in
+'start')
+        echo "starting jetty.."
+       /local/appservers/jetty/jetty-6.1.14/bin/jetty.sh start
+        ;;
+
+'stop')
+        echo "stopping jetty.."
+       /local/appservers/jetty/jetty-6.1.14/bin/jetty.sh stop
+        ;;
+
+'restart')
+        stop
+        sleep 25
+        start
+        ;;
+
+*)
+        echo "Usage: $0 { start | stop | restart }"
+        exit 1
+        ;;
+esac

Propchange: struts/current/zone/startup-scripts/svc-jetty-6-1-14-java5
------------------------------------------------------------------------------
    svn:executable = *

Added: struts/current/zone/startup-scripts/svc-s2app_deploy_daemon
URL: 
http://svn.apache.org/viewvc/struts/current/zone/startup-scripts/svc-s2app_deploy_daemon?rev=753010&view=auto
==============================================================================
--- struts/current/zone/startup-scripts/svc-s2app_deploy_daemon (added)
+++ struts/current/zone/startup-scripts/svc-s2app_deploy_daemon Thu Mar 12 
20:44:50 2009
@@ -0,0 +1,26 @@
+#!/usr/bin/sh
+
+. /lib/svc/share/smf_include.sh
+
+case $1 in
+'start')
+        echo "starting s2app_deploy_daemon.."
+       /local/appservers/s2app_deploy_daemon/s2app_deploy_daemon 
/local/appservers/s2app_deploy_daemon/config.xml
+        ;;
+
+'stop')
+        echo "stopping s2app_deploy_daemon.."
+       /usr/bin/touch /var/run/s2app_deploy_daemon/.deployer-quit
+        ;;
+
+'restart')
+        stop
+        sleep 60
+        start
+        ;;
+
+*)
+        echo "Usage: $0 { start | stop | restart }"
+        exit 1
+        ;;
+esac

Propchange: struts/current/zone/startup-scripts/svc-s2app_deploy_daemon
------------------------------------------------------------------------------
    svn:executable = *

Added: struts/current/zone/startup-scripts/svc-tomcat-5-5-27-java5
URL: 
http://svn.apache.org/viewvc/struts/current/zone/startup-scripts/svc-tomcat-5-5-27-java5?rev=753010&view=auto
==============================================================================
--- struts/current/zone/startup-scripts/svc-tomcat-5-5-27-java5 (added)
+++ struts/current/zone/startup-scripts/svc-tomcat-5-5-27-java5 Thu Mar 12 
20:44:50 2009
@@ -0,0 +1,29 @@
+#!/usr/bin/sh
+
+. /lib/svc/share/smf_include.sh
+
+JAVA_HOME=/usr/jdk/jdk1.5.0_17
+export JAVA_HOME
+
+case $1 in
+'start')
+        echo "starting tomcat.."
+       /local/appservers/tomcat/apache-tomcat-5.5.27/bin/startup.sh 
+        ;;
+
+'stop')
+        echo "stopping tomcat.."
+       /local/appservers/tomcat/apache-tomcat-5.5.27/bin/shutdown.sh 
+        ;;
+
+'restart')
+        stop
+        sleep 25
+        start
+        ;;
+
+*)
+        echo "Usage: $0 { start | stop | restart }"
+        exit 1
+        ;;
+esac

Propchange: struts/current/zone/startup-scripts/svc-tomcat-5-5-27-java5
------------------------------------------------------------------------------
    svn:executable = *


Reply via email to