You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by bh...@apache.org on 2017/08/07 11:24:40 UTC

[cloudstack] branch CLOUDSTACK-10012 created (now a448241)

This is an automated email from the ASF dual-hosted git repository.

bhaisaab pushed a change to branch CLOUDSTACK-10012
in repository https://gitbox.apache.org/repos/asf/cloudstack.git.


      at a448241  apidoc: Fix regressions, use fatjar instead of path

This branch includes the following new commits:

     new 8abc75f  Inception for backport jetty embedded with shaded jar
     new f7cc630  Modify cloudtack-amanement init with uber jar startup
     new 4b5531f  Remove dependency on tomcat, modify installation script for debian
     new c5d8167  Add jetty dependencies version 9.2 (java 7+)
     new a448241  apidoc: Fix regressions, use fatjar instead of path

The 5 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


-- 
To stop receiving notification emails like this one, please contact
['"commits@cloudstack.apache.org" <co...@cloudstack.apache.org>'].

[cloudstack] 02/05: Modify cloudtack-amanement init with uber jar startup

Posted by bh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

bhaisaab pushed a commit to branch CLOUDSTACK-10012
in repository https://gitbox.apache.org/repos/asf/cloudstack.git

commit f7cc6300b8add1227f1dea76e07d19337c66fa31
Author: Marc-Aurèle Brothier <m...@brothier.org>
AuthorDate: Mon Jul 31 08:11:37 2017 +0200

    Modify cloudtack-amanement init with uber jar startup
---
 packaging/debian/init/cloud-management | 111 +++++++++++----------------------
 1 file changed, 36 insertions(+), 75 deletions(-)

diff --git a/packaging/debian/init/cloud-management b/packaging/debian/init/cloud-management
index 05c38be..a1d64a8 100755
--- a/packaging/debian/init/cloud-management
+++ b/packaging/debian/init/cloud-management
@@ -34,9 +34,16 @@ PATH=/bin:/usr/bin:/sbin:/usr/sbin
 NAME=cloudstack-management
 DESC="CloudStack-specific Tomcat servlet engine"
 DAEMON=/usr/bin/jsvc
-CATALINA_HOME=/usr/share/cloudstack-management
-DEFAULT=/etc/cloudstack/management/tomcat6.conf
+MANAGEMENT_HOME=/usr/share/$NAME
+MANAGEMENT_CONFIG="/etc/cloudstack/management"
 JVM_TMP=/tmp/$NAME-temp
+USER="cloud"
+GROUP="cloud"
+UBER_JAR="$MANAGEMENT_HOME/cloud-management-server.jar"
+BOOTSTRAP_CLASS="org.apache.cloudstack.ServerDaemon"
+MANAGEMENT_PID="/var/run/$NAME.pid"
+JSVC_CLASSPATH="/usr/share/java/commons-daemon.jar:$MANAGEMENT_HOME/bcprov-jdk15on-1.55.jar:$MANAGEMENT_CONFIG:/usr/share/$NAME/setup:$MANAGEMENT_HOME:$UBER_JAR"
+
 
 # We have to explicitly set the HOME variable to the homedir from the user "cloud"
 # This is because various scripts run by the management server read the HOME variable
@@ -60,9 +67,6 @@ fi
 
 # The following variables can be overwritten in $DEFAULT
 
-# Run Tomcat 6 as this user ID
-TOMCAT6_USER=tomcat6
-
 # The first existing directory is used for JAVA_HOME (if JAVA_HOME is not
 # defined in $DEFAULT)
 JDK_DIRS="/usr/lib/jvm/java-8-openjdk-amd64 /usr/lib/jvm/java-8-openjdk-i386 /usr/lib/jvm/java-8-oracle /usr/lib/jvm/java-8-openjdk"
@@ -70,7 +74,7 @@ JDK_DIRS="/usr/lib/jvm/java-8-openjdk-amd64 /usr/lib/jvm/java-8-openjdk-i386 /us
 # Look for the right JVM to use
 for jdir in $JDK_DIRS; do
     if [ -r "$jdir/bin/java" -a -z "${JAVA_HOME}" ]; then
-	JAVA_HOME="$jdir"
+    JAVA_HOME="$jdir"
     fi
 done
 export JAVA_HOME
@@ -103,30 +107,17 @@ if [ ! -f "$CATALINA_HOME/bin/bootstrap.jar" ]; then
 fi
 
 [ -f "$DAEMON" ] || exit 0
+[ -r "$UBER_JAR" ] || exit 0
+[ -d "$MANAGEMENT_CONFIG" ] || exit 0
 
-POLICY_CACHE="$CATALINA_BASE/work/catalina.policy"
-
-JAVA_OPTS="$JAVA_OPTS -Djava.endorsed.dirs=$CATALINA_HOME/endorsed -Dcatalina.base=$CATALINA_BASE -Dcatalina.home=$CATALINA_HOME -Djava.io.tmpdir=$JVM_TMP"
-
-# Set the JSP compiler if set in the tomcat6.default file
-if [ -n "$JSP_COMPILER" ]; then
-	JAVA_OPTS="$JAVA_OPTS -Dbuild.compiler=$JSP_COMPILER"
-fi
-
-if [ "$TOMCAT6_SECURITY" = "yes" ]; then
-	JAVA_OPTS="$JAVA_OPTS -Djava.security.manager -Djava.security.policy=$POLICY_CACHE"
-fi
+JAVA_OPTS="$JAVA_OPTS -Djava.io.tmpdir=$JVM_TMP"
 
-# Set juli LogManager if logging.properties is provided
-if [ -r "$CATALINA_BASE"/conf/logging.properties ]; then
-  JAVA_OPTS="$JAVA_OPTS "-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager" "-Djava.util.logging.config.file="$CATALINA_BASE/conf/logging.properties"
+# Load extra arguments from java-opts.conf if any
+if [ -r "$MANAGEMENT_CONFIG/java-opts.conf" ]; then
+	JAVA_EXTRA_OPTS=$(cat $MANAGEMENT_CONFIG/java-opts.conf)
+	JAVA_OPTS="$JAVA_OPTS $JAVA_EXTRA_OPTS"
 fi
 
-# Define other required variables
-CATALINA_PID="/var/run/$NAME.pid"
-BOOTSTRAP_CLASS=org.apache.catalina.startup.Bootstrap
-JSVC_CLASSPATH="/usr/share/java/commons-daemon.jar:$CATALINA_HOME/bin/bootstrap.jar:/etc/cloudstack/management:/usr/share/cloudstack-management/setup"
-
 # Look for Java Secure Sockets Extension (JSSE) JARs
 if [ -z "${JSSE_HOME}" -a -r "${JAVA_HOME}/jre/lib/jsse.jar" ]; then
     JSSE_HOME="${JAVA_HOME}/jre/"
@@ -140,25 +131,9 @@ case "$1" in
 		exit 1
 	fi
 
-	if [ ! -d "$CATALINA_BASE/conf" ]; then
-		log_failure_msg "invalid CATALINA_BASE: $CATALINA_BASE"
-		exit 1
-	fi
-
 	log_daemon_msg "Starting $DESC" "$NAME"
-	if start-stop-daemon --test --start --pidfile "$CATALINA_PID" \
-		--user $TOMCAT6_USER --startas "$JAVA_HOME/bin/java" \
-		>/dev/null; then
-
-		# Regenerate POLICY_CACHE file
-		umask 022
-		echo "// AUTO-GENERATED FILE from /etc/tomcat6/policy.d/" \
-			> "$POLICY_CACHE"
-		echo ""  >> "$POLICY_CACHE"
-		if ls $CATALINA_BASE/conf/policy.d/*.policy > /dev/null 2>&1 ; then
-		cat $CATALINA_BASE/conf/policy.d/*.policy \
-			>> "$POLICY_CACHE"
-		fi
+	if start-stop-daemon --test --start --quiet --pidfile "$MANAGEMENT_PID" \
+		--user $USER --startas "$JAVA_HOME/bin/java"; then
 
 		# Remove / recreate JVM_TMP directory
 		rm -rf "$JVM_TMP"
@@ -166,48 +141,34 @@ case "$1" in
 			log_failure_msg "could not create JVM temporary directory"
 			exit 1
 		}
-		chown $TOMCAT6_USER "$JVM_TMP"
-		cd "$JVM_TMP"
-
 
 		# fix storage issues on nfs mounts
 		umask 000
-		$DAEMON -user "$TOMCAT6_USER" -cp "$JSVC_CLASSPATH" \
-		    -outfile SYSLOG -errfile SYSLOG \
-		    -pidfile "$CATALINA_PID" $JAVA_OPTS "$BOOTSTRAP_CLASS"
-
-		sleep 5
-        	if start-stop-daemon --test --start --pidfile "$CATALINA_PID" \
-			--user $TOMCAT6_USER --startas "$JAVA_HOME/bin/java" \
-			>/dev/null; then
-			log_end_msg 1
-		else
-			log_end_msg 0
-		fi
+		start-stop-daemon --start --quiet --pidfile "$MANAGEMENT_PID" \
+		--user $USER --group $GROUP --exec $DAEMON -- -user "$USER" -server \
+		-home "$JAVA_HOME" -cp "$JSVC_CLASSPATH" \
+		-outfile SYSLOG -errfile SYSLOG \
+		-pidfile "$MANAGEMENT_PID" $JAVA_OPTS "$BOOTSTRAP_CLASS"
+		log_end_msg $?
 	else
-	        log_progress_msg "(already running)"
+		log_progress_msg "(already running)"
 		log_end_msg 0
 	fi
 	;;
   stop)
 	log_daemon_msg "Stopping $DESC" "$NAME"
-        if start-stop-daemon --test --start --pidfile "$CATALINA_PID" \
-		--user "$TOMCAT6_USER" --startas "$JAVA_HOME/bin/java" \
-		>/dev/null; then
-		log_progress_msg "(not running)"
-	else
-		$DAEMON -cp "$JSVC_CLASSPATH" -pidfile "$CATALINA_PID" \
-		     -stop "$BOOTSTRAP_CLASS"
-	fi
-	rm -rf "$JVM_TMP"
+	start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile "$MANAGEMENT_PID"
+	RETVAL="$?"
+	[ "$RETVAL" = 2 ] && return 2
+	[ "$RETVAL" = 0 ] && rm -rf "$JVM_TMP"
 	log_end_msg 0
 	;;
    status)
-        if start-stop-daemon --test --start --pidfile "$CATALINA_PID" \
-		--user $TOMCAT6_USER --startas "$JAVA_HOME/bin/java" \
+        if start-stop-daemon --test --start --pidfile "$$MANAGEMENT_PID" \
+		--user $USER --startas "$JAVA_HOME/bin/java" \
 		>/dev/null; then
 
-		if [ -f "$CATALINA_PID" ]; then
+		if [ -f "$$MANAGEMENT_PID" ]; then
 		    log_success_msg "$DESC is not running, but pid file exists."
 			exit 1
 		else
@@ -215,12 +176,12 @@ case "$1" in
 			exit 3
 		fi
 	else
-		log_success_msg "$DESC is running with pid `cat $CATALINA_PID`"
+		log_success_msg "$DESC is running with pid `cat $$MANAGEMENT_PID`"
 	fi
         ;;
   restart|force-reload)
-        if start-stop-daemon --test --stop --pidfile "$CATALINA_PID" \
-		--user $TOMCAT6_USER --startas "$JAVA_HOME/bin/java" \
+        if start-stop-daemon --test --stop --pidfile "$$MANAGEMENT_PID" \
+		--user $USER --startas "$JAVA_HOME/bin/java" \
 		>/dev/null; then
 		$0 stop
 		sleep 1

-- 
To stop receiving notification emails like this one, please contact
"commits@cloudstack.apache.org" <co...@cloudstack.apache.org>.

[cloudstack] 04/05: Add jetty dependencies version 9.2 (java 7+)

Posted by bh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

bhaisaab pushed a commit to branch CLOUDSTACK-10012
in repository https://gitbox.apache.org/repos/asf/cloudstack.git

commit c5d81679c8b011f86363eadd6266596510f75f3a
Author: Marc-Aurèle Brothier <m...@brothier.org>
AuthorDate: Mon Jul 31 09:41:09 2017 +0200

    Add jetty dependencies version 9.2 (java 7+)
---
 pom.xml | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/pom.xml b/pom.xml
index edfd649..b3fea69 100644
--- a/pom.xml
+++ b/pom.xml
@@ -124,6 +124,7 @@
     <cs.cxf.version>3.1.4</cs.cxf.version>
     <cs.groovy.version>2.4.7</cs.groovy.version>
     <cs.nitro.version>10.1</cs.nitro.version>
+    <cs.jetty.version>9.2.22.v20170606</cs.jetty.version><!-- Java 7+ -->
   </properties>
 
   <distributionManagement>
@@ -474,6 +475,41 @@
         <artifactId>slf4j-log4j12</artifactId>
         <version>1.7.22</version>
       </dependency>
+      <dependency>
+        <groupId>org.eclipse.jetty</groupId>
+        <artifactId>jetty-server</artifactId>
+        <version>${cs.jetty.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.eclipse.jetty</groupId>
+        <artifactId>jetty-servlet</artifactId>
+        <version>${cs.jetty.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.eclipse.jetty</groupId>
+        <artifactId>jetty-servlets</artifactId>
+        <version>${cs.jetty.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.eclipse.jetty</groupId>
+        <artifactId>jetty-webapp</artifactId>
+        <version>${cs.jetty.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.eclipse.jetty</groupId>
+        <artifactId>jetty-jmx</artifactId>
+        <version>${cs.jetty.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.eclipse.jetty</groupId>
+        <artifactId>jetty-util</artifactId>
+        <version>${cs.jetty.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.eclipse.jetty</groupId>
+        <artifactId>jetty-annotations</artifactId>
+        <version>${cs.jetty.version}</version>
+      </dependency>
     </dependencies>
   </dependencyManagement>
 

-- 
To stop receiving notification emails like this one, please contact
"commits@cloudstack.apache.org" <co...@cloudstack.apache.org>.

[cloudstack] 03/05: Remove dependency on tomcat, modify installation script for debian

Posted by bh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

bhaisaab pushed a commit to branch CLOUDSTACK-10012
in repository https://gitbox.apache.org/repos/asf/cloudstack.git

commit 4b5531fcc8929e96415bff7631bf83d1cc369841
Author: Marc-Aurèle Brothier <m...@brothier.org>
AuthorDate: Mon Jul 31 08:18:43 2017 +0200

    Remove dependency on tomcat, modify installation script for debian
---
 debian/cloudstack-management.install  | 13 -------------
 debian/cloudstack-management.postinst | 20 --------------------
 debian/control                        |  2 +-
 debian/rules                          | 10 ++++++----
 4 files changed, 7 insertions(+), 38 deletions(-)

diff --git a/debian/cloudstack-management.install b/debian/cloudstack-management.install
index 9c3f04e..353813d 100644
--- a/debian/cloudstack-management.install
+++ b/debian/cloudstack-management.install
@@ -15,25 +15,12 @@
 # specific language governing permissions and limitations
 # under the License.
 
-/etc/cloudstack/management/catalina.policy
-/etc/cloudstack/management/catalina.properties
-/etc/cloudstack/management/logging.properties
 /etc/cloudstack/management/ehcache.xml
-/etc/cloudstack/management/server-ssl.xml
-/etc/cloudstack/management/server-nonssl.xml
-/etc/cloudstack/management/server7-ssl.xml
-/etc/cloudstack/management/server7-nonssl.xml
-/etc/cloudstack/management/classpath.conf
 /etc/cloudstack/management/db.properties
-/etc/cloudstack/management/tomcat6-ssl.conf
-/etc/cloudstack/management/tomcat6-nonssl.conf
-/etc/cloudstack/management/tomcat6.conf
 /etc/cloudstack/management/web.xml
 /etc/cloudstack/management/environment.properties
 /etc/cloudstack/management/java.security.ciphers
 /etc/cloudstack/management/log4j-cloud.xml
-/etc/cloudstack/management/tomcat-users.xml
-/etc/cloudstack/management/context.xml
 /etc/default/cloudstack-management
 /etc/init.d/cloudstack-management
 /etc/security/limits.d/cloudstack-limits.conf
diff --git a/debian/cloudstack-management.postinst b/debian/cloudstack-management.postinst
index 240224d..0891f70 100644
--- a/debian/cloudstack-management.postinst
+++ b/debian/cloudstack-management.postinst
@@ -61,26 +61,6 @@ if [ "$1" = configure ]; then
     chmod 0640 ${CONFDIR}/${DBPROPS}
     chgrp cloud ${CONFDIR}/${DBPROPS}
 
-    if [ -d "/usr/share/tomcat7" ]; then
-        rm -f /usr/share/cloudstack-management/bin
-        rm -f /usr/share/cloudstack-management/lib
-        ln -s /usr/share/tomcat7/bin /usr/share/cloudstack-management/bin
-        ln -s /usr/share/tomcat7/lib /usr/share/cloudstack-management/lib
-        invoke-rc.d tomcat7 stop || true
-        if [ ! -f "/etc/cloudstack/management/server.xml" ]; then
-            ln -s /etc/cloudstack/management/server7-nonssl.xml /etc/cloudstack/management/server.xml
-        fi
-    elif [ -d "/usr/share/tomcat6" ]; then
-        rm -f /usr/share/cloudstack-management/bin
-        rm -f /usr/share/cloudstack-management/lib
-        ln -s /usr/share/tomcat6/bin /usr/share/cloudstack-management/bin
-        ln -s /usr/share/tomcat6/lib /usr/share/cloudstack-management/lib
-        invoke-rc.d tomcat6 stop || true
-        if [ ! -f "/etc/cloudstack/management/server.xml" ]; then
-            ln -s /etc/cloudstack/management/server-nonssl.xml /etc/cloudstack/management/server.xml
-        fi
-    fi
-
     # Add jdbc MySQL driver settings to db.properties if not present
     grep -s -q "db.cloud.driver=jdbc:mysql" ${CONFDIR}/${DBPROPS} || sed -i -e "\$adb.cloud.driver=jdbc:mysql" ${CONFDIR}/${DBPROPS}
     grep -s -q "db.usage.driver=jdbc:mysql" ${CONFDIR}/${DBPROPS} || sed -i -e "\$adb.usage.driver=jdbc:mysql" ${CONFDIR}/${DBPROPS}
diff --git a/debian/control b/debian/control
index f402325..971b0a8 100644
--- a/debian/control
+++ b/debian/control
@@ -15,7 +15,7 @@ Description: A common package which contains files which are shared by several C
 
 Package: cloudstack-management
 Architecture: all
-Depends: ${python:Depends}, openjdk-8-jre-headless | java8-runtime-headless | java8-runtime | openjdk-7-jre-headless, cloudstack-common (= ${source:Version}), tomcat6 | tomcat7, sudo, jsvc, python-mysql.connector, libmysql-java, augeas-tools, mysql-client, adduser, bzip2, ipmitool, lsb-release, init-system-helpers (>= 1.14~)
+Depends: ${python:Depends}, openjdk-8-jre-headless | java8-runtime-headless | java8-runtime | openjdk-7-jre-headless, cloudstack-common (= ${source:Version}), sudo, jsvc, python-mysql.connector, libmysql-java, augeas-tools, mysql-client, adduser, bzip2, ipmitool, lsb-release, init-system-helpers (>= 1.14~)
 Conflicts: cloud-server, cloud-client, cloud-client-ui
 Description: CloudStack server library
  The CloudStack management server
diff --git a/debian/rules b/debian/rules
index 82a40239..6fc10ad 100755
--- a/debian/rules
+++ b/debian/rules
@@ -66,7 +66,6 @@ override_dh_auto_install:
 	mkdir -p $(DESTDIR)/$(SYSCONFDIR)/security/limits.d/
 	mkdir -p $(DESTDIR)/$(SYSCONFDIR)/sudoers.d/
 	mkdir -p $(DESTDIR)/usr/share/$(PACKAGE)-management
-	mkdir -p $(DESTDIR)/usr/share/$(PACKAGE)-management/webapps/client
 	mkdir $(DESTDIR)/usr/share/$(PACKAGE)-management/setup
 	mkdir $(DESTDIR)/var/log/$(PACKAGE)/management
 	mkdir $(DESTDIR)/var/cache/$(PACKAGE)/management
@@ -76,21 +75,24 @@ override_dh_auto_install:
 	mkdir $(DESTDIR)/var/lib/$(PACKAGE)/management
 	mkdir $(DESTDIR)/var/lib/$(PACKAGE)/mnt
 	cp -r client/target/utilities/scripts/db/* $(DESTDIR)/usr/share/$(PACKAGE)-management/setup/
-	cp -r client/target/cloud-client-ui-$(VERSION)/* $(DESTDIR)/usr/share/$(PACKAGE)-management/webapps/client/
 	cp server/target/conf/* $(DESTDIR)/$(SYSCONFDIR)/$(PACKAGE)/server/
 	cp client/target/conf/* $(DESTDIR)/$(SYSCONFDIR)/$(PACKAGE)/management/
+	cp client/target/cloud-client-ui-$(VERSION).jar $(DESTDIR)/usr/share/$(PACKAGE)-management/
+	# To have a uniq name across versions for the startup script
+	ln -s cloud-client-ui-$(VERSION).jar $(DESTDIR)/usr/share/$(PACKAGE)-management/cloud-management-server.jar
+	cp client/target/bcprov-jdk15on-1.55.jar $(DESTDIR)/usr/share/$(PACKAGE)-management/
+	# To make jetty happy from the 1st line of log
+	ln -s log4j-cloud.xml $(DESTDIR)/$(SYSCONFDIR)/$(PACKAGE)/management/log4j.xml
 
 	# nast hack for a couple of configuration files
 	mv $(DESTDIR)/$(SYSCONFDIR)/$(PACKAGE)/server/cloudstack-limits.conf $(DESTDIR)/$(SYSCONFDIR)/security/limits.d/
 	mv $(DESTDIR)/$(SYSCONFDIR)/$(PACKAGE)/server/cloudstack-sudoers $(DESTDIR)/$(SYSCONFDIR)/sudoers.d/$(PACKAGE)
 	chmod 0440 $(DESTDIR)/$(SYSCONFDIR)/sudoers.d/$(PACKAGE)
 
-	ln -s tomcat6-nonssl.conf $(DESTDIR)/$(SYSCONFDIR)/$(PACKAGE)/management/tomcat6.conf
 	install -D packaging/debian/init/cloud-management $(DESTDIR)/$(SYSCONFDIR)/init.d/$(PACKAGE)-management
 	install -D client/target/utilities/bin/cloud-update-xenserver-licenses $(DESTDIR)/usr/bin/cloudstack-update-xenserver-licenses
 	# Remove configuration in /ur/share/cloudstack-management/webapps/client/WEB-INF
 	# This should all be in /etc/cloudstack/management
-	rm $(DESTDIR)/usr/share/$(PACKAGE)-management/webapps/client/WEB-INF/classes/*.*
 	ln -s ../../..$(SYSCONFDIR)/$(PACKAGE)/management $(DESTDIR)/usr/share/$(PACKAGE)-management/conf
 	ln -s ../../../var/log/$(PACKAGE)/management $(DESTDIR)/usr/share/$(PACKAGE)-management/logs
 	ln -s ../../../var/cache/$(PACKAGE)/management/temp $(DESTDIR)/usr/share/$(PACKAGE)-management/temp

-- 
To stop receiving notification emails like this one, please contact
"commits@cloudstack.apache.org" <co...@cloudstack.apache.org>.

[cloudstack] 01/05: Inception for backport jetty embedded with shaded jar

Posted by bh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

bhaisaab pushed a commit to branch CLOUDSTACK-10012
in repository https://gitbox.apache.org/repos/asf/cloudstack.git

commit 8abc75f2f50a02d0b7c2a8279d349c8da86391fd
Author: Marc-Aurèle Brothier <m...@brothier.org>
AuthorDate: Fri Jul 28 08:17:56 2017 +0200

    Inception for backport jetty embedded with shaded jar
---
 client/pom.xml                                     | 233 ++++++++++++++++-----
 client/src/org/apache/cloudstack/ServerDaemon.java | 205 ++++++++++++++++++
 2 files changed, 381 insertions(+), 57 deletions(-)

diff --git a/client/pom.xml b/client/pom.xml
index 9b8fa38..9b0df82 100644
--- a/client/pom.xml
+++ b/client/pom.xml
@@ -13,7 +13,7 @@
   <modelVersion>4.0.0</modelVersion>
   <artifactId>cloud-client-ui</artifactId>
   <name>Apache CloudStack Client UI</name>
-  <packaging>war</packaging>
+  <packaging>jar</packaging>
   <parent>
     <groupId>org.apache.cloudstack</groupId>
     <artifactId>cloudstack</artifactId>
@@ -29,184 +29,257 @@
 
   <dependencies>
     <dependency>
+      <groupId>javax.servlet</groupId>
+      <artifactId>javax.servlet-api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.jetty</groupId>
+      <artifactId>jetty-server</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.jetty</groupId>
+      <artifactId>jetty-servlet</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.jetty</groupId>
+      <artifactId>jetty-servlets</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.jetty</groupId>
+      <artifactId>jetty-jmx</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.jetty</groupId>
+      <artifactId>jetty-util</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.jetty</groupId>
+      <artifactId>jetty-webapp</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.jetty</groupId>
+      <artifactId>jetty-annotations</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>mysql</groupId>
+      <artifactId>mysql-connector-java</artifactId>
+      <scope>runtime</scope>
+    </dependency>
+    <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-framework-spring-module</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-framework-spring-lifecycle</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-storage-volume-solidfire</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-storage-volume-cloudbyte</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-server</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-acl-static-role-based</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-acl-dynamic-role-based</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-dedicated-resources</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-api-limit-account-based</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-api-discovery</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-user-authenticator-ldap</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-user-authenticator-md5</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-user-authenticator-pbkdf2</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-user-authenticator-plaintext</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-user-authenticator-saml2</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-user-authenticator-sha256salted</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-metrics</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-network-nvp</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-network-contrail</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-network-palo-alto</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-network-netscaler</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
-  <groupId>org.apache.cloudstack</groupId>
+    <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-network-ovs</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-network-elb</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-network-bigswitch</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-network-ssp</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-network-internallb</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-network-vxlan</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-network-opendaylight</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-network-vcs</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-network-vsp</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-hypervisor-xenserver</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-hypervisor-baremetal</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-hypervisor-ucs</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-hypervisor-ovm</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-hypervisor-ovm3</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-hypervisor-kvm</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
       <exclusions>
         <exclusion>
           <groupId>org.mortbay.jetty</groupId>
@@ -218,186 +291,223 @@
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-hypervisor-hyperv</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-storage-allocator-random</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-planner-user-dispersing</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
        <artifactId>cloud-plugin-planner-skip-heurestics</artifactId>
        <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-planner-user-concentrated-pod</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-planner-implicit-dedication</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-explicit-dedication</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-host-allocator-random</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-outofbandmanagement-driver-ipmitool</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-mom-rabbitmq</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-mom-inmemory</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-mom-kafka</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-framework-ipc</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-framework-quota</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-framework-rest</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-engine-api</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-engine-components-api</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-engine-network</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-engine-orchestration</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-engine-schema</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-engine-storage</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-engine-storage-cache</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-controller-secondary-storage</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-engine-storage-image</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-engine-storage-datamotion</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-engine-storage-snapshot</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-engine-storage-volume</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-storage-volume-default</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-storage-image-default</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-storage-image-s3</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-storage-image-swift</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-syslog-alerts</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-snmp-alerts</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-host-anti-affinity</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
         <groupId>org.apache.cloudstack</groupId>
         <artifactId>cloud-plugin-api-solidfire-intg-test</artifactId>
         <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-network-globodns</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
       <artifactId>cloud-plugin-database-quota</artifactId>
       <version>${project.version}</version>
+      <scope>runtime</scope>
     </dependency>
   </dependencies>
   <build>
@@ -417,34 +527,17 @@
         </executions>
       </plugin>
       <plugin>
-        <groupId>com.googlecode.todomap</groupId>
-        <artifactId>maven-jettygzip-plugin</artifactId>
-        <version>0.0.4</version>
-        <configuration>
-          <webappDirectory>${project.build.directory}/generated-webapp</webappDirectory>
-          <outputDirectory>${project.build.directory}/generated-webapp</outputDirectory>
-        </configuration>
-        <executions>
-          <execution>
-            <phase>prepare-package</phase>
-            <goals>
-              <goal>process</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-war-plugin</artifactId>
-        <version>2.5</version>
+        <artifactId>maven-jar-plugin</artifactId>
         <configuration>
-          <webXml>./target/generated-webapp/WEB-INF/web.xml</webXml>
-          <warSourceDirectory>./target/generated-webapp</warSourceDirectory>
           <archive>
             <manifest>
-              <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
+              <mainClass>org.apache.cloudstack.ServerDaemon</mainClass>
             </manifest>
             <manifestEntries>
+              <X-Git-Branch>${git.branch}</X-Git-Branch>
+              <X-Git-Tag>${git.tag}</X-Git-Tag>
+              <X-Git-Revision>${git.revision}</X-Git-Revision>
               <Implementation-Revision>${git.revision}</Implementation-Revision>
               <Implementation-Branch>${git.branch}</Implementation-Branch>
             </manifestEntries>
@@ -489,15 +582,6 @@
         </configuration>
       </plugin>
       <plugin>
-        <groupId>org.apache.tomcat.maven</groupId>
-        <artifactId>tomcat7-maven-plugin</artifactId>
-        <configuration>
-          <path>/client</path>
-          <tomcatWebXml>${basedir}/WEB-INF/web.xml</tomcatWebXml>
-          <warSourceDirectory>${project.build.directory}/generated-webapp/</warSourceDirectory>
-        </configuration>
-      </plugin>
-      <plugin>
         <artifactId>maven-antrun-plugin</artifactId>
         <executions>
           <execution>
@@ -508,36 +592,20 @@
             </goals>
             <configuration>
               <target>
-                <copy todir="${basedir}/target/generated-webapp/WEB-INF/classes/scripts">
+                <copy todir="${project.build.directory}/classes/scripts">
                   <fileset dir="${basedir}/../scripts"/>
                 </copy>
                 <!-- CLOUDSTACK-1304 -->
                 <chmod perm="755"
-                  file="${basedir}/target/generated-webapp/WEB-INF/classes/scripts/**" type="both"/>
-                <copy todir="${basedir}/target/generated-webapp/WEB-INF/">
+                  file="${project.build.directory}/classes/scripts/**" type="both"/>
+                <copy todir="${project.build.directory}/classes/META-INF/webapp/WEB-INF/">
                   <fileset dir="${basedir}/WEB-INF/">
                     <include name="web.xml"/>
                   </fileset>
                 </copy>
-                <copy todir="${basedir}/target/generated-webapp">
+                <copy todir="${project.build.directory}/classes/META-INF/webapp">
                   <fileset dir="${basedir}/../ui"/>
                 </copy>
-                <copy overwrite="true" todir="${basedir}/target/generated-webapp/WEB-INF/classes">
-                  <fileset dir="${basedir}/tomcatconf">
-                    <include name="*.in"/>
-                  </fileset>
-                  <globmapper from="*.in" to="*"/>
-                  <filterchain>
-                    <filterreader classname="org.apache.tools.ant.filters.ReplaceTokens">
-                      <param type="propertiesfile" value="${cs.replace.properties}"/>
-                    </filterreader>
-                  </filterchain>
-                </copy>
-                <copy overwrite="true" todir="${basedir}/target/generated-webapp/WEB-INF/classes">
-                  <fileset dir="${basedir}/tomcatconf">
-                    <exclude name="*.in"/>
-                  </fileset>
-                </copy>
                 <copy overwrite="true" todir="${basedir}/target/utilities/bin">
                   <fileset dir="${basedir}/../setup/bindir">
                     <include name="*.in"/>
@@ -649,11 +717,10 @@
                   <outputDirectory>${project.build.directory}/pythonlibs</outputDirectory>
                 </artifactItem>
                 <artifactItem>
-                  <groupId>org.jasypt</groupId>
-                  <artifactId>jasypt</artifactId>
-                  <version>1.9.2</version>
+                  <groupId>org.bouncycastle</groupId>
+                  <artifactId>bcprov-jdk15on</artifactId>
                   <overWrite>false</overWrite>
-                  <outputDirectory>${project.build.directory}/pythonlibs</outputDirectory>
+                  <outputDirectory>${project.build.directory}</outputDirectory>
                 </artifactItem>
               </artifactItems>
             </configuration>
@@ -671,6 +738,58 @@
             </execution>
           </executions>
       </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-shade-plugin</artifactId>
+        <version>3.0.0</version>
+        <executions>
+          <execution>
+            <id>rebuild-war</id>
+            <phase>package</phase>
+            <goals>
+              <goal>shade</goal>
+            </goals>
+            <configuration>
+              <createDependencyReducedPom>false</createDependencyReducedPom>
+              <artifactSet>
+                <includes>
+                  <include>*:*</include>
+                </includes>
+                <excludes>
+                  <exclude>junit:junit</exclude>
+                  <exclude>org.bouncycastle:bcprov-jdk15on</exclude>
+                </excludes>
+              </artifactSet>
+              <transformers>
+                <transformer implementation="org.apache.maven.plugins.shade.resource.ApacheLicenseResourceTransformer" />
+                <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
+                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
+                  <mainClass>org.apache.cloudstack.ServerDaemon</mainClass>
+                </transformer>
+                <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
+                  <resource>META-INF/spring.handlers</resource>
+                </transformer>
+                <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
+                  <resource>META-INF/spring.schemas</resource>
+                </transformer>
+              </transformers>
+              <filters>
+                <filter>
+                  <artifact>*:*</artifact>
+                  <excludes>
+                    <exclude>META-INF/VERSION.txt</exclude>
+                    <exclude>META-INF/LICENSE.txt</exclude>
+                    <exclude>META-INF/*.SF</exclude>
+                    <exclude>META-INF/*.DSA</exclude>
+                    <exclude>META-INF/*.RSA</exclude>
+                    <exclude>META-INF/MANIFEST.MF</exclude>
+                  </excludes>
+                </filter>
+              </filters>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
     </plugins>
   </build>
   <profiles>
diff --git a/client/src/org/apache/cloudstack/ServerDaemon.java b/client/src/org/apache/cloudstack/ServerDaemon.java
new file mode 100644
index 0000000..a1ddbd3
--- /dev/null
+++ b/client/src/org/apache/cloudstack/ServerDaemon.java
@@ -0,0 +1,205 @@
+//
+// 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.
+//
+package org.apache.cloudstack;
+
+import org.apache.commons.daemon.Daemon;
+import org.apache.commons.daemon.DaemonContext;
+import org.eclipse.jetty.jmx.MBeanContainer;
+import org.eclipse.jetty.server.Handler;
+import org.eclipse.jetty.server.NCSARequestLog;
+import org.eclipse.jetty.server.NetworkTrafficServerConnector;
+import org.eclipse.jetty.server.RequestLog;
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.handler.HandlerCollection;
+import org.eclipse.jetty.server.handler.HandlerList;
+import org.eclipse.jetty.server.handler.RequestLogHandler;
+import org.eclipse.jetty.util.thread.QueuedThreadPool;
+import org.eclipse.jetty.util.thread.ThreadPool;
+import org.eclipse.jetty.webapp.Configuration;
+import org.eclipse.jetty.webapp.WebAppContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.File;
+import java.lang.management.ManagementFactory;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+
+/***
+ * Daemon server class to start the embedded server, either through JSVC or directly inside a JAR.
+ * Parameter to configure the jetty server are:
+ * - jetty.port: to start jetty on the specific port (default: 8080)
+ * - jetty.host: to bind to specific interface (default: null = all)
+ * - jetty.requestlog: path to log file for requests (default: request.log)
+ */
+public class ServerDaemon implements Daemon {
+    private static final Logger logger = LoggerFactory.getLogger(ServerDaemon.class);
+    private static final String WEB_XML = "META-INF/webapp/WEB-INF/web.xml";
+    private static final String PROJECT_RELATIVE_PATH_TO_WEBAPP = "src/main/webapp";
+    private static final String REQUEST_LOG = "request.log";
+
+    private Server jettyServer;
+    private int port;
+    private String bindInterface;
+    private String requestLogFile;
+
+    public static void main(String... anArgs) throws Exception {
+        ServerDaemon csServer = new ServerDaemon();
+        csServer.init(null);
+        csServer.start();
+        csServer.join();
+    }
+
+    @Override
+    public void init(DaemonContext context) {
+        Properties props = System.getProperties();
+        setPort(Integer.parseInt(props.getProperty("jetty.port", "8080")));
+        setBindInterface(props.getProperty("jetty.host"));
+        setRequestLogFile(props.getProperty("jetty.requestlog", REQUEST_LOG));
+        StringBuilder sb = new StringBuilder("Initializing server daemon on ");
+        sb.append(bindInterface == null ? "*" : bindInterface);
+        sb.append(":");
+        sb.append(port);
+        logger.info(sb.toString());
+    }
+
+    @Override
+    public void start() throws Exception {
+        jettyServer = new Server(createThreadPool());
+
+        // Setup JMX
+        MBeanContainer mbeanContainer = new MBeanContainer(ManagementFactory.getPlatformMBeanServer());
+        jettyServer.addBean(mbeanContainer);
+
+        NetworkTrafficServerConnector connector = createConnector();
+        jettyServer.addConnector(connector);
+
+        // This webapp will use jsps and jstl. We need to enable the
+        // AnnotationConfiguration in order to correctly
+        // set up the jsp container
+        Configuration.ClassList classlist = Configuration.ClassList
+                .setServerDefault( jettyServer );
+        classlist.addBefore(
+                "org.eclipse.jetty.webapp.JettyWebXmlConfiguration",
+                "org.eclipse.jetty.annotations.AnnotationConfiguration" );
+
+
+
+        jettyServer.setHandler(createHandlers());
+        jettyServer.setStopAtShutdown(true);
+
+        jettyServer.start();
+    }
+
+    public void join() throws InterruptedException {
+        jettyServer.join();
+    }
+
+    @Override
+    public void stop() throws Exception {
+        jettyServer.stop();
+    }
+
+    @Override
+    public void destroy() {
+        jettyServer.destroy();
+    }
+
+    public void setPort(int port) {
+        this.port = port;
+    }
+
+    public void setBindInterface(String bindInterface) {
+        this.bindInterface = bindInterface;
+    }
+
+    public void setRequestLogFile(String requestLogFile) {
+        this.requestLogFile = requestLogFile;
+    }
+
+    private ThreadPool createThreadPool() {
+        QueuedThreadPool threadPool = new QueuedThreadPool();
+        threadPool.setMinThreads(10);
+        threadPool.setMaxThreads(100);
+        return threadPool;
+    }
+
+    private NetworkTrafficServerConnector createConnector() {
+        NetworkTrafficServerConnector connector = new NetworkTrafficServerConnector(jettyServer);
+        connector.setPort(port);
+        connector.setHost(bindInterface);
+        return connector;
+    }
+
+    private HandlerCollection createHandlers() {
+        WebAppContext webapp = new WebAppContext();
+        webapp.setContextPath("/client");
+
+        if (isRunningInShadedJar()) {
+            webapp.setWar(getShadedWarUrl());
+        } else {
+            webapp.setWar(PROJECT_RELATIVE_PATH_TO_WEBAPP);
+        }
+
+        List<Handler> handlers = new ArrayList<>();
+        handlers.add(webapp);
+
+        HandlerList contexts = new HandlerList();
+        contexts.setHandlers(handlers.toArray(new Handler[0]));
+
+        RequestLogHandler log = new RequestLogHandler();
+        log.setRequestLog(createRequestLog());
+
+        HandlerCollection result = new HandlerCollection();
+        result.setHandlers(new Handler[]{log, contexts});
+
+        return result;
+    }
+
+    private RequestLog createRequestLog() {
+        NCSARequestLog log = new NCSARequestLog();
+        File logPath = new File(requestLogFile);
+        File parentFile = logPath.getParentFile();
+        if (parentFile != null) {
+            parentFile.mkdirs();
+        }
+
+        log.setFilename(logPath.getPath());
+        log.setAppend(true);
+        log.setLogTimeZone("GMT");
+        log.setLogLatency(true);
+        return log;
+    }
+
+
+    private boolean isRunningInShadedJar() {
+        return true;
+    }
+
+    private URL getResource(String aResource) {
+        return Thread.currentThread().getContextClassLoader().getResource(aResource);
+    }
+
+    private String getShadedWarUrl() {
+        String urlStr = getResource(WEB_XML).toString();
+        return urlStr.substring(0, urlStr.length() - 15);
+    }
+}

-- 
To stop receiving notification emails like this one, please contact
"commits@cloudstack.apache.org" <co...@cloudstack.apache.org>.

[cloudstack] 05/05: apidoc: Fix regressions, use fatjar instead of path

Posted by bh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

bhaisaab pushed a commit to branch CLOUDSTACK-10012
in repository https://gitbox.apache.org/repos/asf/cloudstack.git

commit a4482417c637a5263209b10d4e07c56a617c9735
Author: Rohit Yadav <ro...@shapeblue.com>
AuthorDate: Mon Aug 7 13:24:08 2017 +0200

    apidoc: Fix regressions, use fatjar instead of path
    
    Signed-off-by: Rohit Yadav <ro...@shapeblue.com>
---
 pom.xml                      | 3 +--
 tools/apidoc/build-apidoc.sh | 2 +-
 tools/apidoc/gen_toc.py      | 3 ++-
 tools/apidoc/pom.xml         | 4 ++--
 4 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/pom.xml b/pom.xml
index b3fea69..0a7b5a8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -120,11 +120,10 @@
     <cs.joda-time.version>2.8.1</cs.joda-time.version>
     <cs.batik.version>1.8</cs.batik.version>
     <cs.servicemix.version>2.3.4_1</cs.servicemix.version>
-    <cs.jetty.version>9.2.20.v20161216</cs.jetty.version>
     <cs.cxf.version>3.1.4</cs.cxf.version>
     <cs.groovy.version>2.4.7</cs.groovy.version>
     <cs.nitro.version>10.1</cs.nitro.version>
-    <cs.jetty.version>9.2.22.v20170606</cs.jetty.version><!-- Java 7+ -->
+    <cs.jetty.version>9.2.22.v20170606</cs.jetty.version>
   </properties>
 
   <distributionManagement>
diff --git a/tools/apidoc/build-apidoc.sh b/tools/apidoc/build-apidoc.sh
index 8ab69c8..4e1f9a6 100755
--- a/tools/apidoc/build-apidoc.sh
+++ b/tools/apidoc/build-apidoc.sh
@@ -47,7 +47,7 @@ fi
 
 CP=$PATHSEP/
 
-java -cp $CP$PATHSEP$TARGETJARDIR/*$PATHSEP$DEPSDIR/* com.cloud.api.doc.ApiXmlDocWriter -d "$DISTDIR" $*
+java -cp $CP$PATHSEP$TARGETJARDIR$PATHSEP$DEPSDIR com.cloud.api.doc.ApiXmlDocWriter -d "$DISTDIR" $*
 
 if [ $? -ne 0 ]
 then
diff --git a/tools/apidoc/gen_toc.py b/tools/apidoc/gen_toc.py
index a261037..39e1576 100644
--- a/tools/apidoc/gen_toc.py
+++ b/tools/apidoc/gen_toc.py
@@ -180,7 +180,8 @@ known_categories = {
     'stopNetScalerVpx' : 'Load Balancer',
     'deleteServicePackageOffering' : 'Load Balancer',
     'destroyNsVpx' : 'Load Balancer',
-    'startNsVpx' : 'Load Balancer'
+    'startNsVpx' : 'Load Balancer',
+    'listElastistorInterface': 'Misc'
     }
 
 
diff --git a/tools/apidoc/pom.xml b/tools/apidoc/pom.xml
index e6804a0..61c1ccd 100644
--- a/tools/apidoc/pom.xml
+++ b/tools/apidoc/pom.xml
@@ -21,8 +21,8 @@
         <relativePath>../pom.xml</relativePath>
     </parent>
     <properties>
-        <client.config.base>../../client/target/cloud-client-ui-${project.version}/WEB-INF/</client.config.base>
-        <client.config.jars>${client.config.base}/lib</client.config.jars>
+        <client.config.base>../../client/target/</client.config.base>
+        <client.config.jars>${client.config.base}/cloud-client-ui-${project.version}.jar</client.config.jars>
         <client.config.conf>${client.config.base}/classes</client.config.conf>
     </properties>
 

-- 
To stop receiving notification emails like this one, please contact
"commits@cloudstack.apache.org" <co...@cloudstack.apache.org>.