diff --git a/edexOsgi/build.edex/esb/bin/yajsw/wrapper.jar b/edexOsgi/build.edex/esb/bin/yajsw/wrapper.jar
index 546a8e4c9b..f57bb629b5 100644
Binary files a/edexOsgi/build.edex/esb/bin/yajsw/wrapper.jar and b/edexOsgi/build.edex/esb/bin/yajsw/wrapper.jar differ
diff --git a/edexOsgi/build.edex/esb/bin/yajsw/wrapperApp.jar b/edexOsgi/build.edex/esb/bin/yajsw/wrapperApp.jar
index a4f58e7912..fda9a7c5bb 100644
Binary files a/edexOsgi/build.edex/esb/bin/yajsw/wrapperApp.jar and b/edexOsgi/build.edex/esb/bin/yajsw/wrapperApp.jar differ
diff --git a/javaUtilities/com.raytheon.wes2bridge.manager/src/com/raytheon/wes2bridge/manager/Wes2BridgeManager.java b/javaUtilities/com.raytheon.wes2bridge.manager/src/com/raytheon/wes2bridge/manager/Wes2BridgeManager.java
index ff16a2cd89..e1662dc0f7 100644
--- a/javaUtilities/com.raytheon.wes2bridge.manager/src/com/raytheon/wes2bridge/manager/Wes2BridgeManager.java
+++ b/javaUtilities/com.raytheon.wes2bridge.manager/src/com/raytheon/wes2bridge/manager/Wes2BridgeManager.java
@@ -64,6 +64,7 @@ import com.raytheon.wes2bridge.common.configuration.Wes2BridgeConfiguration;
* Jan 18, 2012 1490 bkowal Pypies is now added to each
* edex-environment instance
* Apr 18, 2013 1899 bkowal Updates qpid 0.18 configuration now.
+ * July 2, 2013 2133 bkowal Updates for yajsw-wrapped qpid
*
*
*
@@ -440,23 +441,11 @@ public class Wes2BridgeManager {
BufferedWriter bw = this.getBufferedWriter(qpidd);
final String line1 = "QPID_HOME=";
- /*
- * Need to update the 'ps' command that determines if qpid is running or
- * not.
- */
- final String line2 = "isRunning=`ps -ef | grep org.apache.qpid.server.Main | grep -c \"PNAME=QPBRKR \"`";
String line = StringUtils.EMPTY;
while ((line = br.readLine()) != null) {
if (line.startsWith(line1)) {
line = line1 + qpidDirectory;
- } else if (line.contains(line2)) {
- StringBuilder stringBuilder = new StringBuilder();
- stringBuilder
- .append("isRunning=`ps -ef | grep org.apache.qpid.server.Main | grep QPID_HOME=");
- stringBuilder.append(qpidDirectory);
- stringBuilder.append("| grep -c \"PNAME=QPBRKR \"`");
- line = stringBuilder.toString();
}
bw.write(line + "\n");
diff --git a/javaUtilities/yajsw/deploy.xml b/javaUtilities/yajsw/deploy.xml
new file mode 100644
index 0000000000..9b013eaf74
--- /dev/null
+++ b/javaUtilities/yajsw/deploy.xml
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/rpms/awips2.qpid/0.18/SOURCES/awips.patch b/rpms/awips2.qpid/0.18/SOURCES/awips.patch
index fe2d834485..385fc794e5 100644
--- a/rpms/awips2.qpid/0.18/SOURCES/awips.patch
+++ b/rpms/awips2.qpid/0.18/SOURCES/awips.patch
@@ -78,7 +78,7 @@ diff -crB a/qpid/java/build.deps b/qpid/java/build.deps
commons-cli=lib/required/commons-cli-1.2.jar
! commons-codec=lib/required/commons-codec-1.6.jar
commons-collections=lib/required/commons-collections-3.2.1.jar
-! commons-configuration=lib/required/commons-configuration-1.8.jar
+ commons-configuration=lib/required/commons-configuration-1.8.jar
commons-digester=lib/required/commons-digester-1.8.1.jar
! commons-lang=lib/required/commons-lang-2.6.jar
commons-logging=lib/required/commons-logging-1.1.1.jar
@@ -90,7 +90,7 @@ diff -crB a/qpid/java/build.deps b/qpid/java/build.deps
commons-cli=lib/required/commons-cli-1.2.jar
! commons-codec=lib/required/commons-codec-1.4.jar
commons-collections=lib/required/commons-collections-3.2.1.jar
-! commons-configuration=lib/required/commons-configuration-1.6.jar
+ commons-configuration=lib/required/commons-configuration-1.8.jar
commons-digester=lib/required/commons-digester-1.8.1.jar
! commons-lang=lib/required/commons-lang-2.3.jar
commons-logging=lib/required/commons-logging-1.1.1.jar
diff --git a/rpms/awips2.qpid/0.18/SOURCES/awips2/commons-configuration-1.8.jar b/rpms/awips2.qpid/0.18/SOURCES/awips2/commons-configuration-1.8.jar
new file mode 100644
index 0000000000..ae9ae9969b
Binary files /dev/null and b/rpms/awips2.qpid/0.18/SOURCES/awips2/commons-configuration-1.8.jar differ
diff --git a/rpms/awips2.qpid/0.18/SOURCES/awips2/dependencies.txt b/rpms/awips2.qpid/0.18/SOURCES/awips2/dependencies.txt
index 0ff6e28315..02518e4cef 100644
--- a/rpms/awips2.qpid/0.18/SOURCES/awips2/dependencies.txt
+++ b/rpms/awips2.qpid/0.18/SOURCES/awips2/dependencies.txt
@@ -7,7 +7,6 @@ org.apache.commons.digester/commons-digester-1.8.1.jar
org.apache.commons.codec/commons-codec-1.4.jar
org.apache.commons.lang/commons-lang-2.3.jar
org.apache.commons.collections/commons-collections-3.2.jar
-org.apache.commons.configuration/commons-configuration-1.6.jar
org.codehaus.jackson/jackson-core-asl-1.7.3.jar
org.codehaus.jackson/jackson-mapper-asl-1.7.3.jar
org.junit/mockito-all-1.9.0.jar
diff --git a/rpms/awips2.qpid/0.18/SOURCES/qpid-wrapper b/rpms/awips2.qpid/0.18/SOURCES/qpid-wrapper
new file mode 100644
index 0000000000..ff2c960ba1
--- /dev/null
+++ b/rpms/awips2.qpid/0.18/SOURCES/qpid-wrapper
@@ -0,0 +1,51 @@
+#!/bin/bash
+#
+# 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.
+#
+
+# this version of the qpid start script will utilize the yajsw wrapper
+
+CONF_FILE="wrapper.conf"
+
+WHEREAMI=`dirname $0`
+if [ -z "$QPID_HOME" ]; then
+ export QPID_HOME=`cd $WHEREAMI/../ && pwd`
+fi
+
+if [ -z "$QPID_WORK" ]; then
+ export QPID_WORK=$QPID_HOME
+fi
+
+if [ -z "${QPID_PID_FILENAME}" ]; then
+ export QPID_PID_FILENAME="qpid-server.pid"
+fi
+
+# Set other variables used by the wrapper
+export JAVA=/awips2/java/bin/java \
+ JAVA_VM=-server \
+ AMQJ_LOGGING_LEVEL=info \
+ QPID_PNAME=" -DPNAME=QPBRKR" \
+ CONSOLE_LOGLEVEL=DEBUG
+
+if [ ! -f ${JAVA} ]; then
+ echo "ERROR: the specified Java does not exist - ${JAVA}."
+ echo "Unable to Continue ... Terminating."
+ exit 1
+fi
+
+$JAVA -jar ${QPID_HOME}/bin/yajsw/wrapper.jar -c ${QPID_HOME}/conf/${CONF_FILE}
diff --git a/rpms/awips2.qpid/0.18/SOURCES/qpidd b/rpms/awips2.qpid/0.18/SOURCES/qpidd
index 46b5d44659..76fc3fde7d 100644
--- a/rpms/awips2.qpid/0.18/SOURCES/qpidd
+++ b/rpms/awips2.qpid/0.18/SOURCES/qpidd
@@ -19,7 +19,7 @@
[ ${NETWORKING} = "no" ] && exit 0
RETVAL=0
-prog="qpid-server"
+prog="qpid-wrapper"
# Who to run QPID as, usually "awips". (NOT "root")
QPIDUSER=awips
@@ -28,17 +28,37 @@ QPIDUSER=awips
TODAY=`/bin/date +%Y%m%d`
QPID_HOME=/awips2/qpid
+wrapper_process="org.rzo.yajsw.app.WrapperJVMMain"
+_wrapper_jar=${QPID_HOME}/bin/yajsw/wrapper.jar
-export QPID_JAVA_MEM=-Xmx2048m
+function getQPID_psCount()
+{
+ psCount_qpid=`ps -ef | grep ${wrapper_process} | grep QPID_HOME="${QPID_HOME}" | grep -c "PNAME=QPBRKR "`
+}
+
+function getQPID_pid()
+{
+ pid_qpid=`ps -e -o pid,args | grep ${wrapper_process} | grep QPID_HOME="${QPID_HOME}" | grep "PNAME=QPBRKR " | grep -e "^ *\([0-9]\+\)" -o`
+}
+
+function getWrapper_psCount()
+{
+ psCount_wrapper=`ps -ef | grep "${_wrapper_jar} -c" | grep -c wrapper.conf`
+}
+
+function getWrapper_pid()
+{
+ pid_wrapper=`ps -e -o pid,args | grep "${_wrapper_jar} -c" | grep wrapper.conf | grep -e "^ *\([0-9]\+\)" -o`
+}
start() {
- isRunning=`ps -ef | grep org.apache.qpid.server.Main | grep -c "PNAME=QPBRKR "`
- if [ $isRunning -eq 1 ]; then
+ getQPID_psCount
+ if [ ${psCount_qpid} -eq 1 ]; then
echo "WARNING: QPID already running, not starting another instance"
return 1
fi
- DAEMON="${QPID_HOME}/bin/qpid-server"
+ DAEMON="/bin/bash ${QPID_HOME}/bin/${prog}"
QPIDSTARTLOG=${QPID_HOME}/log/start-qpid-$TODAY.log
su $QPIDUSER -c "$DAEMON" >> $QPIDSTARTLOG 2>&1 &
@@ -47,35 +67,47 @@ start() {
}
stop() {
- isRunning=`ps -ef | grep org.apache.qpid.server.Main | grep -c "PNAME=QPBRKR "`
-
- if [ $isRunning -eq 1 ]; then
- pid=`ps -e -o pid,args | grep org.apache.qpid.server.Main | grep "PNAME=QPBRKR " | grep -e "^ *\([0-9]\+\)" -o`
- kill $pid
-
- CNT=0
- while [[ "X$pid" != "X" ]]; do
- if [ "$CNT" -ge "15" ]; then
- echo "QPID did not shut down gracefully in 15 seconds, force shutting down"
- kill -9 $pid
- else
- let CNT=${CNT}+1
- fi
-
- sleep 1
- pid=`ps -e -o pid,args | grep org.apache.qpid.server.Main | grep "PNAME=QPBRKR " | grep -e "^ *\([0-9]\+\)" -o`
- done
- else
- echo "QPID is not running"
+ # determine if qpid is running, first.
+ getQPID_psCount
+ if [ ${psCount_qpid} -ne 1 ]; then
+ echo "WARNING: Qpid is not running, no shutdown attempted!"
+ return 1
fi
-
+ # get the qpid pid
+ getQPID_pid
+
+ # determine if the qpid wrapper is running.
+ getWrapper_psCount
+ if [ ${psCount_wrapper} -eq 1 ]; then
+ # get the wrapper pid
+ getWrapper_pid
+
+ # stop the wrapper
+ kill ${pid_wrapper}
+ else
+ # stop qpid
+ kill ${pid_qpid}
+ fi
+
+ # wait for and verify that qpid has stopped running
+ savepid=${pid_qpid}
+ while [ "X${pid_qpid}" != "X" ]; do
+ sleep 1
+
+ getQPID_psCount
+ if [ ${psCount_qpid} -eq 1 ]; then
+ pid_qpid=${savepid}
+ else
+ pid_qpid=""
+ fi
+ done
}
checkStatus() {
- isRunning=`ps -ef | grep org.apache.qpid.server.Main | grep -c "PNAME=QPBRKR "`
- if [ $isRunning -eq 1 ]; then
- pid=`ps -e -o pid,args | grep org.apache.qpid.server.Main | grep "PNAME=QPBRKR " | grep -e "^ *\([0-9]\+\)" -o`
- echo "QPID is running (PID $pid)"
+ getQPID_psCount
+ if [ ${psCount_qpid} -eq 1 ]; then
+ getQPID_pid
+ echo "QPID is running (PID ${pid_qpid})"
else
echo "QPID is not running"
fi
diff --git a/rpms/awips2.qpid/0.18/SOURCES/wrapper.conf b/rpms/awips2.qpid/0.18/SOURCES/wrapper.conf
new file mode 100644
index 0000000000..9f5b7ad05b
--- /dev/null
+++ b/rpms/awips2.qpid/0.18/SOURCES/wrapper.conf
@@ -0,0 +1,121 @@
+#********************************************************************
+##
+# This software was developed and / or modified by Raytheon Company,
+# pursuant to Contract DG133W-05-CQ-1067 with the US Government.
+#
+# U.S. EXPORT CONTROLLED TECHNICAL DATA
+# This software product contains export-restricted data whose
+# export/transfer/disclosure is restricted by U.S. law. Dissemination
+# to non-U.S. persons whether in the United States or abroad requires
+# an export license or other authorization.
+#
+# Contractor Name: Raytheon Company
+# Contractor Address: 6825 Pine Street, Suite 340
+# Mail Stop B8
+# Omaha, NE 68106
+# 402.291.0100
+#
+# See the AWIPS II Master Rights File ("Master Rights File.pdf") for
+# further licensing information.
+##
+# Wrapper Properties
+#********************************************************************
+
+wrapper.debug=false
+set.default.QPID_HOME=../..
+wrapper.working.dir=/awips2/qpid/bin
+# required due to java bug:
+# http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4388188
+# not sure if the yajsw developers have any intention of
+# implementing the work-around (solution?) stated in the
+# ticket.
+wrapper.fork_hack=true
+# at a minimum: prevents the printing of the "Invalid parameter" messages
+wrapper.console.pipestreams=true
+
+# Java Application
+wrapper.java.command=/awips2/java/bin/java
+
+# Java Classpath (include wrapper.jar) Add class path elements as
+# needed starting from 1
+wrapper.java.classpath.1=${QPID_HOME}/bin/yajsw/wrapper.jar
+
+# include ANY jar files that are found in the locations denoted by
+# wrapper.search.java.classpath.#
+wrapper.search.java.classpath.1=${QPID_HOME}/lib/opt
+wrapper.search.java.classpath.2=${QPID_HOME}/lib/opt/qpid-deps
+
+# garbage collection settings
+wrapper.java.additional.gc.1=-XX:+UseConcMarkSweepGC
+wrapper.java.additional.gc.2=-XX:+HeapDumpOnOutOfMemoryError
+
+# the main qpid java class that will be started
+wrapper.java.app.mainclass=org.apache.qpid.server.Main
+
+# Java Additional Parameters
+# note that n is the parameter number starting from 1.
+wrapper.java.additional.1=${JAVA_VM}
+wrapper.java.additional.2=${QPID_PNAME}
+wrapper.java.additional.3=-Damqj.logging.level=${AMQJ_LOGGING_LEVEL}
+wrapper.java.additional.4=-DQPID_HOME=${QPID_HOME}
+wrapper.java.additional.5=-DQPID_WORK=${QPID_WORK}
+wrapper.java.additional.6=-Damqj.read_write_pool_size=32
+
+# Maximum Java Heap Size (in MB)
+wrapper.java.maxmemory=2048
+
+wrapper.ping.timeout=300
+
+#********************************************************************
+# Monitor the Application
+#********************************************************************
+wrapper.java.monitor.heap = true
+# warning messages will be logged; it is also possible to send an e-mail
+wrapper.java.monitor.heap.threshold.percent = 90
+
+wrapper.java.monitor.deadlock = true
+wrapper.filter.trigger.deadlock.restart=wrapper.java.monitor.deadlock: DEADLOCK IN THREADS:
+wrapper.filter.action.deadlock.restart=RESTART
+
+# restart the application if it runs out of memory
+wrapper.filter.trigger.1=java.lang.OutOfMemoryError
+wrapper.filter.action.1=RESTART
+
+# restart the application if it crashes
+wrapper.on_exit.default=RESTART
+
+#********************************************************************
+# Wrapper Logging Properties
+#********************************************************************
+# Format of output for the console. (See docs for formats)
+wrapper.console.format=M
+
+# Log file to use for wrapper output logging.
+wrapper.logfile=${QPID_HOME}/log/qpid-wrapper-YYYYMMDD.log
+
+# Format of output for the log file. (See docs for formats)
+wrapper.logfile.format=M
+
+# Log Level for log file output. (See docs for log levels)
+wrapper.logfile.loglevel=INFO
+
+# Set the log rollover mode for the log.
+# DATE - creates a new file each day - file name must include YYYYMMDD.
+# SIZE - uses log size for log roll-over.
+wrapper.logfile.rollmode=DATE
+
+# Maximum number of rolled log files which will be allowed before old
+# files are deleted. The default value of 0 implies no limit.
+wrapper.logfile.maxfiles=7
+
+# Log Level for console output. (See docs for log levels)
+wrapper.console.loglevel=${CONSOLE_LOGLEVEL}
+
+# Log Level for log file output. (See docs for log levels)
+wrapper.logfile.loglevel=INFO
+
+#********************************************************************
+# Wrapper Windows Properties
+#********************************************************************
+# Title to use when running as a console
+wrapper.console.title=QPID
diff --git a/rpms/awips2.qpid/0.18/SOURCES/yajsw-distribution.tar b/rpms/awips2.qpid/0.18/SOURCES/yajsw-distribution.tar
new file mode 100644
index 0000000000..6836495dee
Binary files /dev/null and b/rpms/awips2.qpid/0.18/SOURCES/yajsw-distribution.tar differ
diff --git a/rpms/awips2.qpid/0.18/SPECS/qpid-java.spec.patch0 b/rpms/awips2.qpid/0.18/SPECS/qpid-java.spec.patch0
index 64df514a2f..13b9e8ee7d 100644
--- a/rpms/awips2.qpid/0.18/SPECS/qpid-java.spec.patch0
+++ b/rpms/awips2.qpid/0.18/SPECS/qpid-java.spec.patch0
@@ -1,6 +1,6 @@
diff -crB a/qpid-java.spec b/qpid-java.spec
-*** a/qpid-java.spec 2013-05-14 20:24:21.000000000 -0500
---- b/qpid-java.spec 2013-05-14 20:23:49.000000000 -0500
+*** a/qpid-java.spec 2013-06-26 13:14:00.000000000 -0500
+--- b/qpid-java.spec 2013-06-26 13:12:59.000000000 -0500
***************
*** 1,6 ****
! Name: qpid-java
@@ -14,13 +14,13 @@ diff -crB a/qpid-java.spec b/qpid-java.spec
!
! Name: awips2-qpid-java
Version: 0.18
-! Release: 1%{?dist}
+! Release: 3%{?dist}
Summary: Java implementation of Apache Qpid
License: Apache Software License
Group: Development/Java
***************
*** 12,21 ****
---- 14,28 ----
+--- 14,31 ----
Source0: %{qpid_src_dir}.tar.gz
Source1: qpid-build-deps-%{version}.tar.gz
Source2: %{qpid_deps_src_dir}.tar.gz
@@ -28,6 +28,9 @@ diff -crB a/qpid-java.spec b/qpid-java.spec
+ Source4: virtualhosts.xml
+ Source5: qpidd
+ Source6: log4j.xml
++ Source7: qpid-wrapper
++ Source8: wrapper.conf
++ Source9: yajsw-distribution.tar
Patch0: mrg.patch
Patch1: examples.patch
@@ -49,7 +52,7 @@ diff -crB a/qpid-java.spec b/qpid-java.spec
Requires: log4j >= 1.2.12
%description client
---- 42,61 ----
+--- 45,64 ----
%description common
Java implementation of Apache Qpid - common files
@@ -79,7 +82,7 @@ diff -crB a/qpid-java.spec b/qpid-java.spec
%description example
Java implementation of Apache Qpid - example
---- 65,71 ----
+--- 68,74 ----
Summary: Java implementation of Apache Qpid - example
Group: Development/Java
BuildArch: noarch
@@ -89,7 +92,7 @@ diff -crB a/qpid-java.spec b/qpid-java.spec
Java implementation of Apache Qpid - example
***************
*** 58,67 ****
---- 74,98 ----
+--- 77,101 ----
%setup -q -n %{qpid_src_dir}
mkdir -p java/lib/required
tar -xvzf %SOURCE1 -C java/lib/required
@@ -124,7 +127,7 @@ diff -crB a/qpid-java.spec b/qpid-java.spec
# blacklisted jars are either provided by the Requires: or not needed.
BLACKLIST="slf4j qpid-client-tests qpid-all qpid-common-tests"
---- 101,115 ----
+--- 104,118 ----
(
cd %{qpid_src_dir}/java
@@ -189,7 +192,7 @@ diff -crB a/qpid-java.spec b/qpid-java.spec
%changelog
* Thu Sep 6 2012 Irina Boverman - 0.18-2
---- 123,234 ----
+--- 126,247 ----
cd ..
@@ -214,6 +217,14 @@ diff -crB a/qpid-java.spec b/qpid-java.spec
! # scripts for broker
! install -dm 755 %{buildroot}%{_awips2_directory}/bin
! install -pm 644 %{qpid_src_dir}/java/build/bin/* %{buildroot}%{_awips2_directory}/bin
+! # install the wrapper script
+! install -pm 644 %SOURCE7 %{buildroot}%{_awips2_directory}/bin
+! # add the yajsw distribution
+! tar -xf %SOURCE9 -C %{buildroot}%{_awips2_directory}/bin
+!
+! # wrapper configuration
+! install -dm 755 %{buildroot}%{_awips2_directory}/conf
+! install -pm 644 %SOURCE8 %{buildroot}%{_awips2_directory}/conf
!
! # service script
! mkdir -p %{buildroot}/etc/init.d
@@ -288,6 +299,8 @@ diff -crB a/qpid-java.spec b/qpid-java.spec
! /awips2/qpid/lib/opt/qpid-broker-plugins-firewall-%{version}.jar
! /awips2/qpid/lib/opt/qpid-broker-plugins-management-http-%{version}.jar
! %dir /awips2/qpid/log
+! %dir /awips2/qpid/conf
+! /awips2/qpid/conf/*
! %defattr(755,awips,fxalpha,755)
! %dir /awips2/qpid/bin
! /awips2/qpid/bin/*