#!/bin/ksh -p
#
# startcre -- Startup script for the CR Service Tier container
#
# This script is expected to be invoked by the top-level esmcontrol
# script that is responsible for setting up the execution environment,
# including all necessary environment variables.
#
# Copyright 2001-2003 Sun Microsystems, Inc. All rights reserved.
###

prog=`whence $0` >/dev/null 2>&1
progdir=`/usr/bin/dirname "$prog"`
progname=`/usr/bin/basename $0`

# Resolve symlinks. See 4152645.
while [[ -h "$progdir" ]]; do
    ls=`/usr/bin/ls -ld "$progdir"`
    link=`/usr/bin/expr "$ls" : '^.*-> \(.*\)$'`
    if /usr/bin/expr "$link" : '^/' > /dev/null; then
	progdir="$link"
    else
	progdir="`/usr/bin/dirname $progdir`/$link"
    fi
    progdir=`whence "$progdir"` > /dev/null 2>&1
done

if [ -z "$JAVA_HOME" ]; then
   echo "JAVA_HOME must be defined"
   exit -1
fi
JAVA=$JAVA_HOME/bin/java

: ${ESM_BASE:=`/usr/bin/pkgparam SUNWstm ESM_BASE 2>/dev/null`}
if [ -z "$ESM_BASE" ]
then
    echo "Sorry, but ESM 2.0 is not installed on this host!"  >&2
    exit 1
fi
export ESM_BASE

: ${ESM_LIB:=$ESM_BASE/lib}
export ESM_LIB

: ${ESM_CONFIG:=$ESM_BASE/etc}
export ESM_CONFIG

: ${ESM_VARBASE:=/var/opt/SUNWstm}
export ESM_VARBASE

: ${JMQ_HOME=/opt/SUNWjmq}
export JMQ_HOME

: ${JNDI_PROVIDER_URL:=/tmp}
export JNDI_PROVIDER_URL

: ${ESM_DIST:=$ESM_LIB}
: ${ESM_LHLIB:=$ESM_LIB}

# Import the ESM pidfile.ksh library
#
. $ESM_LIB/pidfile.ksh
if [ $? -ne 0 ] ; then
    echo "Failure to load the $ESM_LIB/pidfile.ksh library!"  >&2
    exit 1
fi

# If the Services container is already running, then display an
# info message and exit with success; otherwise, continue to startup
# the container.
#
# A two-level check is done here: test interaction with the JobManager,
# then if that fails, see if the process exists (in which case, kill it).
#
if $progdir/pingcrcre ; then
    echo "[CR Service Tier container is already running]"
    exit 0
fi

if pf_isProcessRunning crcre > /dev/null ; then
    echo "[CR Service Tier container appears to be hung...restarting it]"
    pf_killProcess crcre
    if [ $? -ne 0 ] ; then
	pid=`pf_getPid crcre`
	echo "Failure to kill the hung CR Service Tier container process (pid: $pid)"
    fi
fi

pf_deletePidFile crcre


CATALINA_HOME=$ESM_BASE/platform/ih/jakarta-tomcat-4.0.6-LE-jdk14
CATALINA_BASE=$ESM_BASE/platform/ih/jakarta-tomcat-4.0.6-LE-jdk14

CP=$ESM_BASE/platform/container/cre/lib/container-impl.jar
CP=$CP:$ESM_LIB/esm-resources.jar
CP=$CP:$ESM_BASE/platform/container/cre/components/esm-resources_zh_CN.jar
CP=$CP:$ESM_BASE/platform/container/cre/components/esm-resources_fr.jar
CP=$CP:$ESM_BASE/platform/container/cre/components/esm-resources_ja.jar 
CP=$CP:$ESM_LIB/jaxb-api.jar
CP=$CP:$ESM_LIB/jaxb-ri.jar
CP=$CP:$ESM_LIB/jaxb-xjc.jar
CP=$CP:$ESM_LIB/jaxb-libs.jar
CP=$CP:$ESM_LIB/jaxp-api.jar
CP=$CP:$ESM_LIB/xercesImpl.jar
CP=$CP:$ESM_LIB/xalan.jar
CP=$CP:$ESM_LIB/sax.jar
CP=$CP:$ESM_LIB/dom.jar
CP=$CP:$ESM_LIB/jax-qname.jar
CP=$CP:$ESM_LIB/namespace.jar
CP=$CP:$JMQ_HOME/lib/jms.jar
CP=$CP:$JMQ_HOME/lib/jmq.jar
CP=$CP:$JMQ_HOME/lib/jndi.jar
CP=$CP:$JMQ_HOME/lib/fscontext.jar
CP=$CP:$JMQ_HOME/lib/providerutil.jar
CP=$CP:$ESM_LIB/esm-data.jar
CP=$CP:$ESM_LIB/esm-util.jar
CP=$CP:$ESM_LIB/esm-shared.jar
CP=$CP:$ESM_PLATFORM_LIB/esm-agent.jar
CP=$CP:$ESM_PLATFORM_LIB/esm-scanners.jar
CP=$CP:$ESM_LIB/xsu12.jar
CP=$CP:$ESM_LIB/wbem.jar
CP=$CP:$ESM_PLATFORM_LIB/esm-services.jar
CP=$CP:$ESM_LIB/ojdbc14.jar
CP=$CP:$ESM_LIB/sunwbem.jar
CP=$CP:$ESM_LIB/jdmkrt.jar
CP=$CP:$ESM_LIB/jsnmpapi.jar
CP=$CP:$ESM_LIB/mail.jar
CP=$CP:$ESM_LIB/activation.jar
CP=$CP:$ESM_LIB/serviceapi.jar
CP=$CP:$ESM_LIB/solaris_impl.jar
CP=$CP:$CATALINA_BASE/bin/bootstrap.jar
CP=$CP:$CATALINA_BASE/server/lib/catalina.jar
CP=$CP:$CATALINA_BASE/server/lib/servlets-invoker.jar
CP=$CP:$CATALINA_BASE/server/lib/tomcat-http11.jar
CP=$CP:$CATALINA_BASE/server/lib/commons-logging.jar
CP=$CP:$CATALINA_BASE/server/lib/servlets-manager.jar
CP=$CP:$CATALINA_BASE/server/lib/tomcat-util.jar
CP=$CP:$CATALINA_BASE/server/lib/jakarta-regexp-1.2.jar
CP=$CP:$CATALINA_BASE/server/lib/servlets-webdav.jar
CP=$CP:$CATALINA_BASE/server/lib/warp.jar
CP=$CP:$CATALINA_BASE/server/lib/servlets-common.jar
CP=$CP:$CATALINA_BASE/server/lib/tomcat-ajp.jar
CP=$CP:$CATALINA_BASE/server/lib/servlets-default.jar   
CP=$CP:$CATALINA_BASE/server/lib/tomcat-coyote.jar
CP=$CP:$CATALINA_BASE/common/lib/servlet.jar
CP=$CP:$CATALINA_BASE/common/lib/naming-common.jar
CP=$CP:$CATALINA_BASE/common/lib/naming-resources.jar
CP=$CP:$CATALINA_BASE/lib/jasper-compiler.jar
CP=$CP:$CATALINA_BASE/lib/jasper-runtime.jar
CP=$CP:$CATALINA_BASE/lib/naming-factory.jar
CP=$CP:$ESM_CONFIG

cr_container_log_file=$ESM_LOGDIR/cr.container.out
/usr/bin/touch $cr_container_log_file

: ${ESM_DEBUG_CRE_PORT:=6111}
DEBUG_OPTS=
if [ "-esmdebug" = "$1" -o ! -z "$ESM_DEBUG_CRE" ]; then
   DEBUG_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=$ESM_DEBUG_CRE_PORT,suspend=n"
   echo "listening for debugger connection on port $ESM_DEBUG_CRE_PORT"
   if [ "-esmdebug" = "$1" ]; then
      shift
   fi
fi

if [ "%$ESM_VM_OPTS" = "%" ]
then
	ESM_VM_OPTS="-Xmx256m"
fi

$JAVA $DEBUG_OPTS -classpath $CP $ESM_VM_OPTS \
    -Djava.naming.factory.initial=com.sun.jndi.fscontext.RefFSContextFactory \
    -Djavax.wbem.rmiport=11131 \
    -Desm.dpf.etc=$ESM_CONFIG  \
    -Desm.config=$ESM_CONFIG   \
    -DESM_CONFIG=$ESM_CONFIG   \
    -Dcatalina.home=$CATALINA_HOME \
    -Dcatalina.base=$CATALINA_BASE \
    -Djava.naming.provider.url="$JNDI_PROVIDER_URL" \
    com.sun.netstorage.mgmt.container.ContainerImpl \
    $ESM_PLATFORM/container/cre \
    $* >> $cr_container_log_file 2>&1 &
pid=$!
ecode=$?

# WARNING: ensure a short sleep is done before creating the pid file
# so that the forked process can be fully initialized before the
# pf_createPidfile function acquires the process "signature".
#
/usr/bin/sleep 2

pf_createPidfile crcre $pid ||
    echo "WARNING: unable to create the CR Service Tier container pid file"

# Write out the "last startup results" file for use in process auditing
#
lastexitfile=$ESM_VARBASE/log/cr.lasttime

echo "Last exit time for container: " `date`  > $lastexitfile
echo "Last exit code for container: " $ecode >> $lastexitfile

exit 0
