Merge remote-tracking branch 'origin/4.11'
diff --git a/packaging/systemd/cloudstack-usage.default b/packaging/systemd/cloudstack-usage.default
index 26f5528..089f3ee 100644
--- a/packaging/systemd/cloudstack-usage.default
+++ b/packaging/systemd/cloudstack-usage.default
@@ -15,8 +15,11 @@
 # specific language governing permissions and limitations
 # under the License.
 
-JAVA_OPTS="-Dpid=$$ -Xms256m -Xmx2048m"
+JAVA_OPTS="-Xms256m -Xmx2048m"
 
 CLASSPATH="/usr/share/cloudstack-usage/*:/usr/share/cloudstack-usage/lib/*:/usr/share/cloudstack-mysql-ha/lib/*:/etc/cloudstack/usage:/usr/share/java/mysql-connector-java.jar"
 
 JAVA_CLASS=com.cloud.usage.UsageServer
+
+# Enable the following to enable remote socket based debugging:
+#JAVA_DEBUG="-agentlib:jdwp=transport=dt_socket,address=8001,server=y,suspend=n"
diff --git a/packaging/systemd/cloudstack-usage.service b/packaging/systemd/cloudstack-usage.service
index f887486..8d9dff2 100644
--- a/packaging/systemd/cloudstack-usage.service
+++ b/packaging/systemd/cloudstack-usage.service
@@ -24,7 +24,8 @@
 [Service]
 Type=simple
 EnvironmentFile=/etc/default/cloudstack-usage
-ExecStart=/usr/bin/java $JAVA_OPTS -cp $CLASSPATH $JAVA_CLASS
+Environment=JAVA_PID=$$
+ExecStart=/bin/sh -ec '/usr/bin/java -Dpid=${JAVA_PID} $JAVA_OPTS $JAVA_DEBUG -cp $CLASSPATH $JAVA_CLASS'
 Restart=always
 RestartSec=10s
 
diff --git a/usage/src/main/java/com/cloud/usage/UsageServer.java b/usage/src/main/java/com/cloud/usage/UsageServer.java
index df3f374..5e8a69d 100644
--- a/usage/src/main/java/com/cloud/usage/UsageServer.java
+++ b/usage/src/main/java/com/cloud/usage/UsageServer.java
@@ -51,11 +51,7 @@
 
         appContext = new ClassPathXmlApplicationContext("usageApplicationContext.xml");
 
-        try {
-            ComponentContext.initComponentsLifeCycle();
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
+        ComponentContext.initComponentsLifeCycle();
 
         mgr = appContext.getBean(UsageManager.class);