<username>root</username>
<groupname>root</groupname>
<filemode>644</filemode>
- <configuration>true</configuration>
+ <configuration>noreplace</configuration>
+ <directoryIncluded>false</directoryIncluded>
<sources>
<source>
<location>src/main/rpm/etc/osgiboot</location>
<includes>
- <include>*</include>
+ <include>*-settings.sh</include>
+ </includes>
+ </source>
+ </sources>
+ </mapping>
+ <mapping>
+ <directory>/etc/osgiboot</directory>
+ <username>root</username>
+ <groupname>root</groupname>
+ <filemode>644</filemode>
+ <directoryIncluded>false</directoryIncluded>
+ <sources>
+ <source>
+ <location>src/main/rpm/etc/osgiboot</location>
+ <includes>
+ <include>*-functions.sh</include>
</includes>
</source>
</sources>
</sources>
</mapping>
</mappings>
- <!-- <postinstallScriptlet> <scriptFile>src/main/scripts/postinstall</scriptFile>
- </postinstallScriptlet> <preremoveScriptlet> <scriptFile>src/main/scripts/preremove</scriptFile>
- </preremoveScriptlet> <postremoveScriptlet> <scriptFile>src/main/scripts/postremove</scriptFile>
- </postremoveScriptlet> -->
<requires>
<require>java</require>
- <!-- For the start/stop scripts <require>telnet</require> <require>expect</require> -->
</requires>
</configuration>
</execution>
--- /dev/null
+#!/bin/bash
+
+# Source function library.
+. /etc/rc.d/init.d/functions
+
+RETVAL=0
+
+osgi_service_start() {
+ APP=$1
+ # create log an run directories writable by the application user
+ USER=$APP
+ GROUP=$APP
+ RUN_DIR=/var/run/$APP
+ LOG_DIR=/var/log/$APP
+ if [ ! -d $LOG_DIR ];then
+ mkdir -m 0750 $LOG_DIR
+ chown -R $USER.$GROUP $LOG_DIR
+ fi
+ if [ ! -d $RUN_DIR ];then
+ mkdir -m 0750 $RUN_DIR
+ chown -R $USER.$GROUP $RUN_DIR
+ fi
+
+ # call Argeo Commons OSGi utilities as the application user
+ daemon --user $USER /usr/sbin/osgi-service $APP start
+
+ RETVAL=$?
+ #action $"Start $APP" /bin/true
+ if [ $RETVAL -eq 0 ];then
+ PID=`cat $RUN_DIR/$APP.pid`
+ action $"Started $APP with pid $PID" /bin/true
+ else
+ action $"Could not start $APP" /bin/false
+ fi
+ return $RETVAL
+}
+
+osgi_service_stop() {
+ APP=$1
+ USER=$APP
+ # call Argeo Commons OSGi utilities as the application user
+ runuser -s /bin/bash $USER -c "/usr/sbin/osgi-service $APP stop"
+ RETVAL=$?
+ if [ $RETVAL -eq 0 ];then
+ action $"Stopped $APP" /bin/true
+ else
+ action $"Could not stop $APP" /bin/false
+ fi
+ return $RETVAL
+}
+
+osgi_service_status() {
+ APP=$1
+ USER=$APP
+ # call Argeo Commons OSGi utilities as the application user
+ runuser -s /bin/bash $USER -c "/usr/sbin/osgi-service $APP status"
+ RETVAL=$?
+ return $RETVAL
+}
EXEC_DIR=/var/lib/$APP
DATA_DIR=$EXEC_DIR/data
CONF_RW=$EXEC_DIR/conf
+
LOG_DIR=/var/log/$APP
LOG_FILE=$LOG_DIR/$APP.log
-RUN_DIR=/var/run
+RUN_DIR=/var/run/$APP
PID_FILE=$RUN_DIR/$APP.pid
SHUTDOWN_FILE=$RUN_DIR/$APP.shutdown
RETVAL=0
start() {
- if [ ! -d $LOG_DIR ];then
- mkdir -m 0750 -p $LOG_DIR
- touch $LOG_FILE
- chown -R $APP.$APP $LOG_DIR
+ if [ -f $PID_FILE ];then
+ PID=`cat $PID_FILE`
+ kill -0 $PID &> /dev/null
+ PID_EXISTS=$?
+ if [ $PID_EXISTS -eq 0 ]; then
+ echo $APP already running with pid $PID
+ RETVAL=1
+ return $RETVAL
+ else
+ echo Old $APP process with pid $PID is dead, removing $PID_FILE
+ rm -f $PID_FILE
+ fi
fi
cp --preserve $CONF_DIR/config.ini $CONF_RW/config.ini
touch $SHUTDOWN_FILE
cd $EXEC_DIR
- # start as user $APP
- sudo -u $APP $JVM \
+ $JVM \
-Dosgi.bundles="org.argeo.osgi.boot.jar@start" \
-Dargeo.osgi.bundles="$CONF_DIR/modules;in=*,$LIB_DIR;in=*" \
-Dargeo.osgi.shutdownFile="$SHUTDOWN_FILE" \
&>> $LOG_FILE &
PID=$!
echo $PID > $PID_FILE
- echo Started $APP with pid $PID
+ #echo Started $APP with pid $PID
return $RETVAL
}
stop() {
if [ -f $PID_FILE ];then
PID=`cat $PID_FILE`
+ kill -0 $PID &> /dev/null
+ PID_EXISTS=$?
+ if [ $PID_EXISTS -ne 0 ]; then
+ echo Dead $APP process with pid $PID, removing $PID_FILE
+ rm -f $PID_FILE
+ RETVAL=1
+ return $RETVAL
+ fi
else
echo $APP is not running
+ RETVAL=1
return $RETVAL
fi
rm -f $SHUTDOWN_FILE
TIMEOUT_EXIT=$?
if [ $TIMEOUT_EXIT -eq 124 ];then
kill -9 $PID
+ RETVAL=1
+ echo Killed $APP with pid $PID
+# else
+# echo Stopped $APP with pid $PID
fi
rm -f $PID_FILE
- echo Stopped $APP with pid $PID
return $RETVAL
}
-# See how we were called.
+status() {
+ if [ -f $PID_FILE ];then
+ PID=`cat $PID_FILE`
+ else
+ echo $APP is not running
+ return $RETVAL
+ fi
+ kill -0 $PID &> /dev/null
+ PID_EXISTS=$?
+ if [ $PID_EXISTS -eq 0 ]; then
+ echo $APP is running with pid $PID ...
+ else
+ echo No $APP process with pid $PID, removing $PID_FILE
+ rm -f $PID_FILE
+ fi
+ return $RETVAL
+}
+
+# main
case "$2" in
start)
start
stop)
stop
;;
- restart)
- stop
- start
- RETVAL=$?
- ;;
status)
- if [ -f $PID_FILE ];then
- PID=`cat $PID_FILE`
- echo $APP is running with pid $PID ...
- else
- echo $APP is not running
- fi
+ status
;;
*)
- echo $"Usage: $0 {start|stop|restart|status}"
+ echo $"Usage: $0 {start|stop|status}"
exit 1
esac
\ No newline at end of file
+++ /dev/null
-#rm -f /usr/share/osgiboot/lib/org.eclipse.osgi.jar
-#ln -vs `ls /usr/share/osgiboot/lib/org.eclipse.osgi-*.jar` /usr/share/osgiboot/lib/org.eclipse.osgi.jar
-
-#rm -f /usr/share/osgiboot/lib/org.argeo.osgi.boot.jar
-#ln -vs `ls /usr/share/osgiboot/lib/org.argeo.osgi.boot-*.jar` /usr/share/osgiboot/lib/org.argeo.osgi.boot.jar
+++ /dev/null
-if [ $1 = "0" ];then
-
-fi
+++ /dev/null
-if [ $1 = "0" ];then
-
-fi