Author: ivol37 at gmail.com
Date: Thu Nov 4 09:13:40 2010
New Revision: 244
Log:
[AMDATU-132] Replaced Pax-Web by Felix http service. Note that for filter
registration temporarily ExtHttpService.registerFilter is used.
Added:
trunk/platform-bundles/cassandra-application/src/main/resources/lib/jetty-6.1.21.jar
(contents, props changed)
trunk/platform-bundles/cassandra-application/src/main/resources/lib/jetty-util-6.1.21.jar
(contents, props changed)
Modified:
trunk/amdatu-release/pom.xml
trunk/amdatu-web/jsp-support-bundle/src/main/java/org/amdatu/web/jsp/service/ResourceProviderJspServlet.java
trunk/amdatu-web/jsp-support-bundle/src/main/java/org/amdatu/web/jsp/service/ResourceProviderListener.java
trunk/application-bundles/dashboard-bundle/src/main/java/org/amdatu/application/dashboard/osgi/Activator.java
trunk/example-bundles/friends-gadget/src/main/java/org/amdatu/example/friends/gadget/osgi/service/FriendsGadgetServiceImpl.java
trunk/integration-tests/pom.xml
trunk/integration-tests/src/test/java/org/amdatu/test/integration/base/IntegrationTestBase.java
trunk/integration-tests/src/test/java/org/amdatu/test/integration/tests/CassandraDaemonIntegrationTest.java
trunk/platform-bundles/cassandra-application/pom.xml
trunk/platform-bundles/filebased-configuration/src/main/resources/conf/org.amdatu.platform.shindig.application.cfg
trunk/platform-bundles/httpcontext/src/main/java/org/amdatu/platform/httpcontext/ExtHttpContext.java
trunk/platform-bundles/httpcontext/src/main/java/org/amdatu/platform/httpcontext/HttpContextServiceFactory.java
trunk/platform-bundles/httpcontext/src/main/java/org/amdatu/platform/httpcontext/osgi/Activator.java
trunk/platform-bundles/httpcontext/src/main/java/org/amdatu/platform/httpcontext/service/HttpContextFactoryServiceImpl.java
trunk/platform-bundles/httpcontext/src/main/java/org/amdatu/platform/httpcontext/service/HttpContextImpl.java
trunk/platform-bundles/shindig-application/pom.xml
trunk/platform-bundles/shindig-application/src/main/java/org/amdatu/platform/shindig/application/osgi/Activator.java
trunk/platform-bundles/shindig-application/src/main/java/org/amdatu/platform/shindig/application/service/ShindigRegistrationServiceImpl.java
trunk/platform-bundles/useradmin-cassandra-store/src/main/java/org/amdatu/platform/useradmin/store/cassandra/osgi/Activator.java
trunk/pom.xml
trunk/src/main/resources/conf/felix-config.properties
Modified: trunk/amdatu-release/pom.xml
==============================================================================
--- trunk/amdatu-release/pom.xml (original)
+++ trunk/amdatu-release/pom.xml Thu Nov 4 09:13:40 2010
@@ -230,11 +230,11 @@
<scope>compile</scope>
</dependency>
<dependency>
- <groupId>org.ops4j.pax.web</groupId>
- <artifactId>pax-web-jetty-bundle</artifactId>
- <version>${pax-web.version}</version>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.http.bundle</artifactId>
+ <version>${org.apache.felix.http.version}</version>
<scope>compile</scope>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.ops4j.pax.swissbox</groupId>
<artifactId>pax-swissbox-core</artifactId>
Modified:
trunk/amdatu-web/jsp-support-bundle/src/main/java/org/amdatu/web/jsp/service/ResourceProviderJspServlet.java
==============================================================================
---
trunk/amdatu-web/jsp-support-bundle/src/main/java/org/amdatu/web/jsp/service/ResourceProviderJspServlet.java
(original)
+++
trunk/amdatu-web/jsp-support-bundle/src/main/java/org/amdatu/web/jsp/service/ResourceProviderJspServlet.java
Thu Nov 4 09:13:40 2010
@@ -143,8 +143,6 @@
*/
public void service(final ServletRequest req, final ServletResponse res)
throws ServletException, IOException {
HttpServletRequest request = (HttpServletRequest) req;
- String resourcePath = request.getRequestURI().substring(1);
- resourcePath = resourcePath.substring(resourcePath.indexOf("/"));
req.setAttribute(Constants.JSP_FILE, request.getRequestURI());
try {
Modified:
trunk/amdatu-web/jsp-support-bundle/src/main/java/org/amdatu/web/jsp/service/ResourceProviderListener.java
==============================================================================
---
trunk/amdatu-web/jsp-support-bundle/src/main/java/org/amdatu/web/jsp/service/ResourceProviderListener.java
(original)
+++
trunk/amdatu-web/jsp-support-bundle/src/main/java/org/amdatu/web/jsp/service/ResourceProviderListener.java
Thu Nov 4 09:13:40 2010
@@ -118,8 +118,8 @@
// This callback is invoked for each ResourceProvider that becomes
unavailable
public void omRemoved(ResourceProvider provider) {
try {
-
m_dependencyManager.remove(m_components.get(provider.getResourceId()));
m_httpService.unregister(getServletAlias(provider));
+
m_dependencyManager.remove(m_components.get(provider.getResourceId()));
}
finally {
m_resourceProviders.remove(provider);
@@ -140,7 +140,12 @@
if (m_components.containsKey(prefix)) {
ResourceProvider provider =
((ResourceProviderJspServlet)
m_components.get(prefix).getService()).getResourceProvider();
- String resource = name.substring(("/" + prefix +
"/").length());
+ String resource;
+ if (name.startsWith("/")) {
+ resource = name.substring(("/" + prefix + "/").length());
+ } else {
+ resource = name.substring((prefix + "/").length());
+ }
URL url = provider.getResource(resource);
if (url == null) {
url =
provider.getClass().getClassLoader().getResource(resource);
Modified:
trunk/application-bundles/dashboard-bundle/src/main/java/org/amdatu/application/dashboard/osgi/Activator.java
==============================================================================
---
trunk/application-bundles/dashboard-bundle/src/main/java/org/amdatu/application/dashboard/osgi/Activator.java
(original)
+++
trunk/application-bundles/dashboard-bundle/src/main/java/org/amdatu/application/dashboard/osgi/Activator.java
Thu Nov 4 09:13:40 2010
@@ -21,8 +21,8 @@
import org.amdatu.platform.httpcontext.ResourceProvider;
import org.apache.felix.dm.DependencyActivatorBase;
import org.apache.felix.dm.DependencyManager;
-import org.ops4j.pax.web.service.WebContainer;
import org.osgi.framework.BundleContext;
+import org.osgi.service.http.HttpService;
import org.osgi.service.log.LogService;
/**
@@ -44,7 +44,7 @@
.setImplementation(DashboardService.class)
.add(createServiceDependency().setService(LogService.class).setRequired(true))
.add(createServiceDependency().setService(HttpContextServiceFactory.class).setRequired(true))
-
.add(createServiceDependency().setService(WebContainer.class).setRequired(true)));
+
.add(createServiceDependency().setService(HttpService.class).setRequired(true)));
}
@Override
Modified:
trunk/example-bundles/friends-gadget/src/main/java/org/amdatu/example/friends/gadget/osgi/service/FriendsGadgetServiceImpl.java
==============================================================================
---
trunk/example-bundles/friends-gadget/src/main/java/org/amdatu/example/friends/gadget/osgi/service/FriendsGadgetServiceImpl.java
(original)
+++
trunk/example-bundles/friends-gadget/src/main/java/org/amdatu/example/friends/gadget/osgi/service/FriendsGadgetServiceImpl.java
Thu Nov 4 09:13:40 2010
@@ -29,7 +29,6 @@
import org.amdatu.platform.shindig.application.GadgetDefinition;
import org.apache.felix.dm.Component;
import org.osgi.framework.BundleContext;
-import org.osgi.service.cm.ConfigurationAdmin;
import org.osgi.service.cm.ConfigurationException;
import org.osgi.service.cm.ManagedService;
import org.osgi.service.log.LogService;
@@ -48,7 +47,6 @@
// Service and other dependencies, injected by the OSGi framework
private volatile HttpContextServiceFactory m_httpContextFactoryService;
private volatile LogService m_logService;
- private volatile ConfigurationAdmin m_configurationAdmin;
private volatile GadgetManagement m_gadgetManagement;
// Instance variables, injected by the OSGi framework
Modified: trunk/integration-tests/pom.xml
==============================================================================
--- trunk/integration-tests/pom.xml (original)
+++ trunk/integration-tests/pom.xml Thu Nov 4 09:13:40 2010
@@ -36,6 +36,18 @@
<scope>test</scope>
</dependency>
<dependency>
+ <groupId>org.ops4j.pax.swissbox</groupId>
+ <artifactId>pax-swissbox-core</artifactId>
+ <version>${pax.swissbox.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.ops4j.base</groupId>
+ <artifactId>ops4j-base-lang</artifactId>
+ <version>1.2.2</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>org.amdatu.platform</groupId>
<artifactId>filebased-configuration</artifactId>
<scope>test</scope>
@@ -102,7 +114,21 @@
<artifactId>wink-application</artifactId>
<scope>test</scope>
<type>bundle</type>
- </dependency>
+ </dependency>
+ <dependency>
+ <groupId>org.amdatu.web</groupId>
+ <artifactId>jsp-support</artifactId>
+ <version>${platform.version}</version>
+ <scope>test</scope>
+ <type>bundle</type>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.http.bundle</artifactId>
+ <version>${org.apache.felix.http.version}</version>
+ <scope>test</scope>
+ <type>bundle</type>
+ </dependency>
</dependencies>
<build>
Modified:
trunk/integration-tests/src/test/java/org/amdatu/test/integration/base/IntegrationTestBase.java
==============================================================================
---
trunk/integration-tests/src/test/java/org/amdatu/test/integration/base/IntegrationTestBase.java
(original)
+++
trunk/integration-tests/src/test/java/org/amdatu/test/integration/base/IntegrationTestBase.java
Thu Nov 4 09:13:40 2010
@@ -23,6 +23,9 @@
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
+import org.amdatu.platform.cassandra.application.CassandraConfigurationService;
+import org.amdatu.platform.configtemplatemanager.ConfigTemplateManager;
+import org.amdatu.platform.httpcontext.HttpContextServiceFactory;
import org.apache.felix.dm.Component;
import org.apache.felix.dm.ComponentStateListener;
import org.apache.felix.dm.DependencyManager;
@@ -37,6 +40,8 @@
import org.osgi.framework.Constants;
import org.osgi.framework.InvalidSyntaxException;
import org.osgi.framework.ServiceReference;
+import org.osgi.service.cm.ConfigurationAdmin;
+import org.osgi.service.log.LogService;
/**
* This class works as a base for all our integration tests. The notable
components,
@@ -68,10 +73,13 @@
// Setting this system property unfortunately is necessary with
the current Cassandra implementation
systemProperty("org.osgi.framework.system.packages.extra").value("sun.misc,com.sun.management"),
-
+
+ // Set System property to enable Jetty for the Felix http bundle
+ systemProperty("org.apache.felix.http.jettyEnabled").value("true"),
+
new VMOption("-Xmx1g"),
// Enable this line to allow a remote debugger to attach to the VM
in which Pax Exam runs
- // new
VMOption("-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"),
+ //new
VMOption("-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"),
// Install bundles we need to execute our test
provision(
@@ -79,11 +87,13 @@
dependencyManager(),
configAdmin(),
felixLog(),
- paxWebJetty(),
+ felixHttpService(),
paxUserAdmin(),
slingMime(),
slingCommons(),
felixScr(),
+ paxSwissbox(),
+ ops4jBaseLang(),
// Amdatu platform bundles
// TODO: this works fine when running 'mvn install' since the
artifacts will then be deployed to the maven
@@ -101,6 +111,7 @@
amdatuUserAdminCassandraStore(),
amdatuWink(),
amdatuLogHandler(),
+ amdatuJspSupport(),
// And finally deploy ourselves
bundle(integrationTestJarFile().toURI().toString())
@@ -298,9 +309,17 @@
protected static MavenArtifactProvisionOption paxUserAdmin() {
return
mavenBundle().groupId("org.ops4j.pax.useradmin").artifactId("pax-useradmin-service").versionAsInProject();
}
+
+ protected static MavenArtifactProvisionOption paxSwissbox() {
+ return
mavenBundle().groupId("org.ops4j.pax.swissbox").artifactId("pax-swissbox-core").versionAsInProject();
+ }
+
+ protected static MavenArtifactProvisionOption ops4jBaseLang() {
+ return
mavenBundle().groupId("org.ops4j.base").artifactId("ops4j-base-lang").versionAsInProject();
+ }
- protected static MavenArtifactProvisionOption paxWebJetty() {
- return
mavenBundle().groupId("org.ops4j.pax.web").artifactId("pax-web-jetty-bundle").versionAsInProject();
+ protected static MavenArtifactProvisionOption felixHttpService() {
+ return
mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.http.bundle").versionAsInProject();
}
protected static MavenArtifactProvisionOption felixLog() {
@@ -319,4 +338,9 @@
return
mavenBundle().groupId("org.osgi").artifactId("org.osgi.compendium").versionAsInProject();
}
+ protected static MavenArtifactProvisionOption amdatuJspSupport() {
+ return
mavenBundle().groupId("org.amdatu.web").artifactId("jsp-support").versionAsInProject();
+ }
+
+
}
Modified:
trunk/integration-tests/src/test/java/org/amdatu/test/integration/tests/CassandraDaemonIntegrationTest.java
==============================================================================
---
trunk/integration-tests/src/test/java/org/amdatu/test/integration/tests/CassandraDaemonIntegrationTest.java
(original)
+++
trunk/integration-tests/src/test/java/org/amdatu/test/integration/tests/CassandraDaemonIntegrationTest.java
Thu Nov 4 09:13:40 2010
@@ -20,10 +20,13 @@
import junit.framework.Assert;
+import org.amdatu.platform.cassandra.application.CassandraConfigurationService;
import org.amdatu.platform.cassandra.application.CassandraDaemonService;
import
org.amdatu.platform.cassandra.listener.ColumnFamilyDefinition.ColumnType;
import
org.amdatu.platform.cassandra.listener.ColumnFamilyDefinition.CompareType;
import
org.amdatu.platform.cassandra.persistencemanager.CassandraPersistenceManager;
+import org.amdatu.platform.configtemplatemanager.ConfigTemplateManager;
+import org.amdatu.platform.httpcontext.HttpContextServiceFactory;
import org.amdatu.test.integration.base.IntegrationTestBase;
import org.apache.cassandra.thrift.InvalidRequestException;
import org.apache.felix.dm.Component;
@@ -35,6 +38,9 @@
import org.ops4j.pax.exam.Option;
import org.ops4j.pax.exam.junit.Configuration;
import org.ops4j.pax.exam.junit.JUnit4TestRunner;
+import org.osgi.service.cm.ConfigurationAdmin;
+import org.osgi.service.http.HttpService;
+import org.osgi.service.log.LogService;
/**
* This class provides an integration test for the Cassandra Daemon service.
@@ -68,6 +74,15 @@
@Before
public void setUp() throws Exception {
+ System.out.println("AVAILABLE: " + getService(LogService.class));
+ System.out.println("AVAILABLE: " +
getService(ConfigurationAdmin.class));
+ System.out.println("AVAILABLE: " + getService(HttpService.class));
+
+ System.out.println("AVAILABLE: " +
getService(HttpContextServiceFactory.class));
+
+ System.out.println("AVAILABLE: " +
getService(ConfigTemplateManager.class));
+ System.out.println("AVAILABLE: " +
getService(CassandraConfigurationService.class));
+
m_daemonService = getService(CassandraDaemonService.class);
}
Modified: trunk/platform-bundles/cassandra-application/pom.xml
==============================================================================
--- trunk/platform-bundles/cassandra-application/pom.xml (original)
+++ trunk/platform-bundles/cassandra-application/pom.xml Thu Nov 4
09:13:40 2010
@@ -84,6 +84,8 @@
lib/high-scale-lib.jar,
lib/jackson-core-asl-1.4.0.jar,
lib/jackson-mapper-asl-1.4.0.jar,
+ lib/jetty-6.1.21.jar,
+ lib/jetty-util-6.1.21.jar,
lib/json-simple-1.1.jar,
lib/jug-2.0.0.jar,
lib/libthrift-r959516.jar,
Added:
trunk/platform-bundles/cassandra-application/src/main/resources/lib/jetty-6.1.21.jar
==============================================================================
Binary file. No diff available.
Added:
trunk/platform-bundles/cassandra-application/src/main/resources/lib/jetty-util-6.1.21.jar
==============================================================================
Binary file. No diff available.
Modified:
trunk/platform-bundles/filebased-configuration/src/main/resources/conf/org.amdatu.platform.shindig.application.cfg
==============================================================================
---
trunk/platform-bundles/filebased-configuration/src/main/resources/conf/org.amdatu.platform.shindig.application.cfg
(original)
+++
trunk/platform-bundles/filebased-configuration/src/main/resources/conf/org.amdatu.platform.shindig.application.cfg
Thu Nov 4 09:13:40 2010
@@ -149,4 +149,6 @@
shindig.accelerate.remapInternalServerError=true
shindig.host=${server.hostname}
-shindig.port=${server.port}
\ No newline at end of file
+shindig.port=${server.port}
+
+shindig.proxy.remapInternalServerError=false
\ No newline at end of file
Modified:
trunk/platform-bundles/httpcontext/src/main/java/org/amdatu/platform/httpcontext/ExtHttpContext.java
==============================================================================
---
trunk/platform-bundles/httpcontext/src/main/java/org/amdatu/platform/httpcontext/ExtHttpContext.java
(original)
+++
trunk/platform-bundles/httpcontext/src/main/java/org/amdatu/platform/httpcontext/ExtHttpContext.java
Thu Nov 4 09:13:40 2010
@@ -16,9 +16,9 @@
*/
package org.amdatu.platform.httpcontext;
-import org.ops4j.pax.web.service.WebContainer;
import org.osgi.framework.BundleContext;
import org.osgi.service.http.HttpContext;
+import org.osgi.service.http.HttpService;
/**
* Extension of the normal HttContext, needed for proper filter registration
and deregistration
@@ -35,9 +35,9 @@
BundleContext getBundleContext();
/**
- * Returns the WebContainer associated with the given Http Context.
Important to note that this is not the same web
- * container as the one used by the bundle that holds the HTTP Context
service.
- * @return the WebContainer associated with the given Http Context.
+ * Returns the HttpService associated with the given Http Context.
Important to note that this is not the same
+ * HttpService as the one used by the bundle that holds the HTTP Context
service.
+ * @return the HttpService associated with the given Http Context.
*/
- WebContainer getWebContainer();
+ HttpService getHttpService();
}
Modified:
trunk/platform-bundles/httpcontext/src/main/java/org/amdatu/platform/httpcontext/HttpContextServiceFactory.java
==============================================================================
---
trunk/platform-bundles/httpcontext/src/main/java/org/amdatu/platform/httpcontext/HttpContextServiceFactory.java
(original)
+++
trunk/platform-bundles/httpcontext/src/main/java/org/amdatu/platform/httpcontext/HttpContextServiceFactory.java
Thu Nov 4 09:13:40 2010
@@ -35,7 +35,7 @@
Component create(BundleContext bundleContext);
/**
- * Create a new Http context and registers resources and JSPs in the
webcontainer for this context
+ * Create a new Http context and registers resources and JSPs in the
HttpService for this context
* for all URLs prefixed by the given resourceId.
* @param resourceId The resource id with which this HTTP context must be
associated. If you specify
* for example 'dashboard', all urls that start with /dashboard/ will be
mapped onto this context and
Modified:
trunk/platform-bundles/httpcontext/src/main/java/org/amdatu/platform/httpcontext/osgi/Activator.java
==============================================================================
---
trunk/platform-bundles/httpcontext/src/main/java/org/amdatu/platform/httpcontext/osgi/Activator.java
(original)
+++
trunk/platform-bundles/httpcontext/src/main/java/org/amdatu/platform/httpcontext/osgi/Activator.java
Thu Nov 4 09:13:40 2010
@@ -20,8 +20,8 @@
import org.amdatu.platform.httpcontext.service.HttpContextFactoryServiceImpl;
import org.apache.felix.dm.DependencyActivatorBase;
import org.apache.felix.dm.DependencyManager;
-import org.ops4j.pax.web.service.WebContainer;
import org.osgi.framework.BundleContext;
+import org.osgi.service.http.HttpService;
import org.osgi.service.log.LogService;
/**
@@ -35,13 +35,8 @@
createComponent()
.setImplementation(HttpContextFactoryServiceImpl.class)
.setInterface(HttpContextServiceFactory.class.getName(), null)
-
.add(createServiceDependency().setService(WebContainer.class).setRequired(true))
+
.add(createServiceDependency().setService(HttpService.class).setRequired(true))
.add(createServiceDependency().setService(LogService.class).setRequired(true)));
-
- // Register the custom commons-osgi-logging adapter factory which
passes Commons logging
- // messages to the OSGi logservice
- // System.setProperty("org.apache.commons.logging.LogFactory",
LogOSGIFactory.class.getName());
- // LogOSGIFactory.initOSGI(context);
}
@Override
Modified:
trunk/platform-bundles/httpcontext/src/main/java/org/amdatu/platform/httpcontext/service/HttpContextFactoryServiceImpl.java
==============================================================================
---
trunk/platform-bundles/httpcontext/src/main/java/org/amdatu/platform/httpcontext/service/HttpContextFactoryServiceImpl.java
(original)
+++
trunk/platform-bundles/httpcontext/src/main/java/org/amdatu/platform/httpcontext/service/HttpContextFactoryServiceImpl.java
Thu Nov 4 09:13:40 2010
@@ -24,10 +24,10 @@
import org.apache.felix.dm.Component;
import org.apache.felix.dm.DependencyManager;
import org.apache.sling.commons.mime.MimeTypeService;
-import org.ops4j.pax.web.service.WebContainer;
import org.osgi.framework.BundleContext;
import org.osgi.service.cm.ConfigurationAdmin;
import org.osgi.service.http.HttpContext;
+import org.osgi.service.http.HttpService;
import org.osgi.service.http.NamespaceException;
import org.osgi.service.log.LogService;
@@ -38,7 +38,7 @@
*/
public class HttpContextFactoryServiceImpl implements
HttpContextServiceFactory {
// Service depedencies, injected by the Felix dependency manager
- private volatile WebContainer m_webContainer;
+ private volatile HttpService m_httpService;
private volatile LogService m_logService;
// Injected by Felix
@@ -65,7 +65,7 @@
component
.setImplementation(HttpContextImpl.class)
.setInterface(HttpContext.class.getName(), properties)
-
.add(m_manager.createServiceDependency().setService(WebContainer.class).setRequired(true))
+
.add(m_manager.createServiceDependency().setService(HttpService.class).setRequired(true))
.add(m_manager.createServiceDependency().setService(ConfigurationAdmin.class).setRequired(true))
.add(m_manager.createServiceDependency().setService(MimeTypeService.class).setRequired(false))
.add(m_manager.createServiceDependency().setService(LogService.class).setRequired(true)));
@@ -96,7 +96,7 @@
HttpContext context = (HttpContext) component.getService();
// And register all resources on /[resourceId]/*
- m_webContainer.registerResources(resId + "/*", "", context);
+ m_httpService.registerResources(resId, "", context);
m_logService.log(LogService.LOG_INFO, "Http context created for '"
+ resourceId + "'");
} catch (NamespaceException e) {
Modified:
trunk/platform-bundles/httpcontext/src/main/java/org/amdatu/platform/httpcontext/service/HttpContextImpl.java
==============================================================================
---
trunk/platform-bundles/httpcontext/src/main/java/org/amdatu/platform/httpcontext/service/HttpContextImpl.java
(original)
+++
trunk/platform-bundles/httpcontext/src/main/java/org/amdatu/platform/httpcontext/service/HttpContextImpl.java
Thu Nov 4 09:13:40 2010
@@ -16,18 +16,16 @@
*/
package org.amdatu.platform.httpcontext.service;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
import org.amdatu.platform.httpcontext.ExtHttpContext;
import org.amdatu.platform.httpcontext.ResourceProvider;
import org.apache.felix.dm.Component;
import org.apache.sling.commons.mime.MimeTypeService;
-import org.ops4j.pax.web.service.WebContainer;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.InvalidSyntaxException;
@@ -56,7 +54,7 @@
private volatile MimeTypeService m_mimeTypeService;
private volatile BundleContext m_bundleContext;
private volatile LogService m_logService;
- private volatile WebContainer m_webContainer;
+ private volatile HttpService m_httpService;
// Instance variables
private String m_resourceId;
@@ -84,7 +82,7 @@
*/
public void destroy() {
if (m_resourceId != null) {
- m_webContainer.unregister("/" + m_resourceId + "/*");
+ m_httpService.unregister("/" + m_resourceId + "/*");
}
m_logService.log(LogService.LOG_INFO, "HTTP Context destroyed for
bundle " + m_bundleId + " ('" + m_resourceId
+ "')");
@@ -134,21 +132,21 @@
}
/**
- * Returns the WebContainer associated with the given Http Context.
Important to note that this is not the same web
+ * Returns the HttpService associated with the given Http Context.
Important to note that this is not the same web
* container as the one used by the bundle that holds the HTTP Context
service.
- * @return the WebContainer associated with the given Http Context.
+ * @return the HttpService associated with the given Http Context.
*/
- public WebContainer getWebContainer() {
+ public HttpService getHttpService() {
BundleContext bundleContext = getBundleContext();
try {
ServiceReference[] servRefs =
bundleContext.getAllServiceReferences(HttpService.class.getName(), null);
for (ServiceReference servRef : servRefs) {
- if (bundleContext.getService(servRef) instanceof WebContainer)
{
- return (WebContainer) bundleContext.getService(servRef);
+ if (bundleContext.getService(servRef) instanceof HttpService) {
+ return (HttpService) bundleContext.getService(servRef);
}
}
} catch (InvalidSyntaxException e) {
- m_logService.log(LogService.LOG_ERROR, "Could not find
WebContainer in http context for bundle "
+ m_logService.log(LogService.LOG_ERROR, "Could not find HttpService
in http context for bundle "
+ bundleContext.getBundle().getSymbolicName(), e);
}
return null;
Modified: trunk/platform-bundles/shindig-application/pom.xml
==============================================================================
--- trunk/platform-bundles/shindig-application/pom.xml (original)
+++ trunk/platform-bundles/shindig-application/pom.xml Thu Nov 4 09:13:40 2010
@@ -132,7 +132,13 @@
<artifactId>cassandra-listener</artifactId>
<scope>provided</scope>
<type>bundle</type>
- </dependency>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.http.bundle</artifactId>
+ <version>${org.apache.felix.http.version}</version>
+ <scope>provided</scope>
+ </dependency>
</dependencies>
<build>
Modified:
trunk/platform-bundles/shindig-application/src/main/java/org/amdatu/platform/shindig/application/osgi/Activator.java
==============================================================================
---
trunk/platform-bundles/shindig-application/src/main/java/org/amdatu/platform/shindig/application/osgi/Activator.java
(original)
+++
trunk/platform-bundles/shindig-application/src/main/java/org/amdatu/platform/shindig/application/osgi/Activator.java
Thu Nov 4 09:13:40 2010
@@ -34,9 +34,9 @@
import
org.amdatu.platform.shindig.application.service.ShindigRegistrationServiceImpl;
import org.apache.felix.dm.DependencyActivatorBase;
import org.apache.felix.dm.DependencyManager;
+import org.apache.felix.http.api.ExtHttpService;
import org.apache.shindig.gadgets.oauth.OAuthStore;
import org.apache.shindig.social.opensocial.spi.AppDataService;
-import org.ops4j.pax.web.service.WebContainer;
import org.osgi.framework.BundleContext;
import org.osgi.framework.Constants;
import org.osgi.service.log.LogService;
@@ -124,7 +124,18 @@
.setService(ConfigurationAdminGuiceModule.class, "("+
Constants.SERVICE_PID + "=" + SHINDIG_CONFIG_PID + ")")
.setRequired(true))
.add(createServiceDependency().setService(HttpContextServiceFactory.class).setRequired(true))
-
.add(createServiceDependency().setService(WebContainer.class).setRequired(true)));
+
.add(createServiceDependency().setService(ExtHttpService.class).setRequired(true)));
+
+ //TODO: Register authentication filter as a service
+ /*
+ Dictionary<String, String> props = new Hashtable<String, String>();
+ props.put("pattern ", "/*");
+ props.put("service.ranking", "0");
+ manager.add(
+ createComponent()
+ .setImplementation(AuthenticationServletFilter.class)
+ .setInterface(Filter.class.getName(), props));
+ */
}
@Override
Modified:
trunk/platform-bundles/shindig-application/src/main/java/org/amdatu/platform/shindig/application/service/ShindigRegistrationServiceImpl.java
==============================================================================
---
trunk/platform-bundles/shindig-application/src/main/java/org/amdatu/platform/shindig/application/service/ShindigRegistrationServiceImpl.java
(original)
+++
trunk/platform-bundles/shindig-application/src/main/java/org/amdatu/platform/shindig/application/service/ShindigRegistrationServiceImpl.java
Thu Nov 4 09:13:40 2010
@@ -32,15 +32,15 @@
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
-import net.oauth.server.OAuthServlet;
-
import org.amdatu.platform.httpcontext.HttpContextServiceFactory;
import org.amdatu.platform.httpcontext.ResourceProvider;
import org.amdatu.platform.shindig.application.OAuthModule;
import org.amdatu.platform.shindig.application.SocialApiModule;
import
org.amdatu.platform.shindig.application.module.ConfigurationAdminGuiceModule;
import org.amdatu.platform.shindig.application.oauth.AmdatuOAuthServlet;
+import org.amdatu.platform.shindig.application.osgi.Activator;
import org.apache.felix.dm.Component;
+import org.apache.felix.http.api.ExtHttpService;
import org.apache.shindig.auth.AuthenticationServletFilter;
import org.apache.shindig.common.servlet.GuiceServletContextListener;
import org.apache.shindig.gadgets.servlet.ConcatProxyServlet;
@@ -52,7 +52,6 @@
import org.apache.shindig.gadgets.servlet.RpcServlet;
import org.apache.shindig.protocol.DataServiceServlet;
import org.apache.shindig.protocol.JsonRpcServlet;
-import org.ops4j.pax.web.service.WebContainer;
import org.osgi.framework.BundleContext;
import org.osgi.service.http.HttpContext;
import org.osgi.service.http.HttpService;
@@ -68,6 +67,7 @@
/**
* This service is responsible for registration and unregistration of Shindig
servlets, filters and static
* resources.
+ *
* @author ivol
*/
public class ShindigRegistrationServiceImpl implements ResourceProvider {
@@ -97,7 +97,7 @@
// These variables are injected by the Felix dependency manager
private volatile BundleContext m_bundleContext;
- private volatile WebContainer m_httpService;
+ private volatile ExtHttpService m_httpService;
private volatile Component m_httpContextComponent;
private volatile LogService m_logService;
private volatile HttpContextServiceFactory m_httpContextFactoryService;
@@ -109,7 +109,7 @@
private boolean m_jmxInitialized;
private ServletContext m_servletContext = null;
private HttpContext m_httpContext;
- private List<HttpServlet> m_registeredServlets = new
ArrayList<HttpServlet>();
+ private List<String> m_registeredServletPaths = new ArrayList<String>();
private AuthenticationServletFilter m_authenticationServletFilter;
/**
@@ -138,14 +138,15 @@
while (m_servletContext == null && retryCount < 5) {
// TODO The servlet registration is asynchronous? Really?
try {
- System.out.println("Fake Guice servlet not yet available,
sleeping for 1 second... (" + (5-retryCount) + " retries left)");
+ System.out.println("Fake Guice servlet not yet available,
sleeping for 1 second... ("
+ + (5 - retryCount) + " retries left)");
Thread.sleep(1000);
- } catch (InterruptedException i) {
}
+ catch (InterruptedException i) {}
retryCount++;
}
- // Register statics, servlets and filters. This can only be done
after initializing
+ // Register statics, servlets and filters. This can only be done
after initializing
// the Guice context, for that reason we do it here.
registerResources();
}
@@ -163,7 +164,7 @@
* The stop() method is invoked by the Felix dependency manager.
*/
public void stop() {
- m_logService.log(LogService.LOG_INFO, "Stopping " +
getClass().getName() + " service");
+ m_logService.log(LogService.LOG_INFO, "Stopping " +
getClass().getName() + " service");
// Unregister statics, servlets and filters
unregisterResources();
@@ -191,31 +192,35 @@
is = tokenUrl.openStream();
fos = new FileOutputStream(targetFile);
int oneChar, count = 0;
- while ((oneChar=is.read()) != -1) {
+ while ((oneChar = is.read()) != -1) {
fos.write(oneChar);
count++;
}
- } finally {
+ }
+ finally {
try {
if (is != null) {
is.close();
}
- } finally {
+ }
+ finally {
if (fos != null) {
fos.close();
}
}
- }
- } catch (IOException e) {
+ }
+ }
+ catch (IOException e) {
m_logService.log(LogService.LOG_ERROR, "Could not copy security
token key file from '" +
tokenUrl.toString() + "' to '" + targetFile + "'", e);
- }
+ }
}
/**
* Invoked by the Guice servlet init() method to let the main registration
service know
* that the fake Guice servlet is initialized. This is requried before
other servlets are
* registered within the same context
+ *
* @param servletContext the servlet context of the fake Guice servlet
*/
private void setServletContext(ServletContext servletContext) {
@@ -227,14 +232,14 @@
* Since it can only be invoked when the Guice context is available, it is
invoked from there
*/
private void registerResources() {
- try {
+ try {
// Register the gadget rendering servlet. The gadget rendering
servlet takes a gadget XML file
// (for example
http://gerculanum.appspot.com/gadgets/com.example.chessgadget.client.ChessGadget.gadget.xml)
// and converts it to HTML. 'ifr' stands for the 'iframe' way of
gadget rendering
addServlet(m_httpContext, GADGET_SERVLET_BASE, new
GadgetRenderingServlet());
// Register other servlets
- String[] params = {"handlers",
"org.apache.shindig.social.handlers"};
+ String[] params = { "handlers",
"org.apache.shindig.social.handlers" };
addServlet(m_httpContext, MAKEREQUEST_BASE, new
MakeRequestServlet());
addServlet(m_httpContext, PROXY_BASE, new ProxyServlet());
addServlet(m_httpContext, CONCAT_BASE, new ConcatProxyServlet());
@@ -249,20 +254,23 @@
// Register filters
m_authenticationServletFilter = new AuthenticationServletFilter();
- m_httpService.registerFilter(m_authenticationServletFilter, new
String[]{
- GADGET_SERVLET_BASE,
- MAKEREQUEST_BASE,
- REST_BASE + "/*",
- GADGETS_REST_BASE + "/*",
- WINK_REST_BASE + "/*",
- GADGETS_RPC_BASE + "/*"}, null, null, m_httpContext);
-
- // Register static resources
- m_httpService.registerResources("/gadgets", "/files",
m_httpContext);
+ String baseMatch = "[/\\?]?.*";
+ String regex = ".*("
+ + GADGET_SERVLET_BASE + "[^/]*|"
+ + MAKEREQUEST_BASE + "[^/]*|"
+ + REST_BASE + baseMatch + "|"
+ + GADGETS_REST_BASE + baseMatch + "|"
+ + GADGETS_RPC_BASE + baseMatch + ")";
+ m_httpService.registerFilter(m_authenticationServletFilter, regex,
null, 0, m_httpContext);
+
+ // Since /gadgets is already registered automatically by the http
context factory service,
+ // unregister it first.
+ m_httpService.unregister("/" + Activator.RESOURCE_ID);
+ m_httpService.registerResources("/" + Activator.RESOURCE_ID,
"/files", m_httpContext);
m_httpService.registerResources("/features", "/features",
m_httpContext);
m_httpService.registerResources("/shindig", "/static",
m_httpContext);
-
- } catch (Throwable t) {
+ }
+ catch (Throwable t) {
m_logService.log(LogService.LOG_ERROR, "Can not activate
OpenSocial API.", t);
}
}
@@ -271,9 +279,9 @@
* This method sets the given {@link HttpService} object and deregisters
all Shindig-specific servlets.
*/
private void unregisterResources() {
- while (m_registeredServlets.size() > 0) {
- m_httpService.unregisterServlet(m_registeredServlets.get(0));
- m_registeredServlets.remove(0);
+ while (m_registeredServletPaths.size() > 0) {
+ m_httpService.unregister(m_registeredServletPaths.get(0));
+ m_registeredServletPaths.remove(0);
}
m_httpService.unregisterFilter(m_authenticationServletFilter);
m_httpService.unregister("/gadgets");
@@ -283,6 +291,7 @@
/**
* An utility method used to add a new servlet to the HttpService object.
+ *
* @param context the HttpContext common for all servlets
* @param path the path of the servlet
* @param servlet the servlet to register
@@ -291,17 +300,18 @@
* @throws NamespaceException
*/
private void addServlet(HttpContext context, String path, HttpServlet
servlet, String... params)
- throws ServletException, NamespaceException {
+ throws ServletException, NamespaceException {
Properties p = new Properties();
String key = null;
for (int i = 0; i < params.length; i++) {
if ((i % 2) == 0) {
key = params[i] != null ? params[i].toString() : null;
- } else {
+ }
+ else {
p.put(key, params[i]);
}
}
- m_registeredServlets.add(servlet);
+ m_registeredServletPaths.add(path);
m_httpService.registerServlet(path, servlet, p, context);
}
@@ -324,13 +334,17 @@
Module moduleInstance = (Module)
cl.loadClass(moduleName).newInstance();
modules.add(moduleInstance);
}
- } catch (InstantiationException e) {
+ }
+ catch (InstantiationException e) {
m_logService.log(LogService.LOG_ERROR, "Could not create
Guice module", e);
- } catch (ClassNotFoundException e) {
+ }
+ catch (ClassNotFoundException e) {
m_logService.log(LogService.LOG_ERROR, "Could not create
Guice module", e);
- } catch (IllegalAccessException e) {
+ }
+ catch (IllegalAccessException e) {
m_logService.log(LogService.LOG_ERROR, "Could not create
Guice module", e);
- } catch (ClassCastException e) {
+ }
+ catch (ClassCastException e) {
m_logService.log(LogService.LOG_ERROR, "Could not create
Guice module", e);
}
}
@@ -348,18 +362,18 @@
Manager.manage("ShindigGuiceContext", injector);
m_jmxInitialized = true;
}
- } catch (Exception e) {
+ }
+ catch (Exception e) {
// Ignore errors
}
return injector;
}
private String[] getGuiceModules() {
- return new String[] {
- "org.apache.shindig.gadgets.DefaultGuiceModule",
- "org.apache.shindig.extras.ShindigExtrasGuiceModule",
- "org.apache.shindig.common.cache.ehcache.EhCacheModule"
- };
+ return new String[] {
+ "org.apache.shindig.gadgets.DefaultGuiceModule",
+ "org.apache.shindig.extras.ShindigExtrasGuiceModule",
+ "org.apache.shindig.common.cache.ehcache.EhCacheModule" };
}
/**
@@ -368,6 +382,7 @@
* method of this fake servlet creates a new Guice instance, configures it
and sets in the given HttpContext. The
* same HttpContext instance will be used to register all other Shindig
servlets, so they will have access to the
* already configured Guice.
+ *
* @param context the HttpContext instance where a Guice context will be
stored.
* @throws ServletException
* @throws NamespaceException
Modified:
trunk/platform-bundles/useradmin-cassandra-store/src/main/java/org/amdatu/platform/useradmin/store/cassandra/osgi/Activator.java
==============================================================================
---
trunk/platform-bundles/useradmin-cassandra-store/src/main/java/org/amdatu/platform/useradmin/store/cassandra/osgi/Activator.java
(original)
+++
trunk/platform-bundles/useradmin-cassandra-store/src/main/java/org/amdatu/platform/useradmin/store/cassandra/osgi/Activator.java
Thu Nov 4 09:13:40 2010
@@ -34,8 +34,8 @@
import org.apache.felix.dm.DependencyManager;
import org.ops4j.pax.useradmin.service.UserAdminConstants;
import org.ops4j.pax.useradmin.service.spi.StorageProvider;
-import org.ops4j.pax.web.service.WebContainer;
import org.osgi.framework.BundleContext;
+import org.osgi.service.http.HttpService;
import org.osgi.service.log.LogService;
import org.osgi.service.useradmin.UserAdmin;
@@ -93,7 +93,7 @@
.setImplementation(HttpContextRegistrationServiceImpl.class)
.add(createServiceDependency().setService(LogService.class).setRequired(true))
.add(createServiceDependency().setService(HttpContextServiceFactory.class).setRequired(true))
-
.add(createServiceDependency().setService(WebContainer.class).setRequired(true)));
+
.add(createServiceDependency().setService(HttpService.class).setRequired(true)));
}
@Override
Modified: trunk/pom.xml
==============================================================================
--- trunk/pom.xml (original)
+++ trunk/pom.xml Thu Nov 4 09:13:40 2010
@@ -47,7 +47,7 @@
<org.apache.felix.log.version>1.0.0</org.apache.felix.log.version>
<org.apache.felix.file.install.version>3.0.0</org.apache.felix.file.install.version>
<org.apache.felix.scr.version>1.6.0</org.apache.felix.scr.version>
- <pax-web.version>0.7.1</pax-web.version>
+ <org.apache.felix.http.version>2.0.4</org.apache.felix.http.version>
<pax.swissbox.version>1.3.0</pax.swissbox.version>
<pax.useradmin.version>0.0.1-SNAPSHOT</pax.useradmin.version>
<pax.exam.version>1.2.2</pax.exam.version>
@@ -473,11 +473,11 @@
<scope>runtime</scope>
</dependency>
- <!-- Use Pax Web as HTTP service implementation -->
+ <!-- Use Felix as HTTP service implementation -->
<dependency>
- <groupId>org.ops4j.pax.web</groupId>
- <artifactId>pax-web-jetty-bundle</artifactId>
- <version>${pax-web.version}</version>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.http.bundle</artifactId>
+ <version>${org.apache.felix.http.version}</version>
<scope>provided</scope>
</dependency>
Modified: trunk/src/main/resources/conf/felix-config.properties
==============================================================================
--- trunk/src/main/resources/conf/felix-config.properties (original)
+++ trunk/src/main/resources/conf/felix-config.properties Thu Nov 4
09:13:40 2010
@@ -76,7 +76,7 @@
# to install and start when the framework starts. The ending numerical
# component is the target start level. Any number of these properties
# may be specified for different start levels.
-felix.auto.start.1=reference:file:system-bundles/org.apache.felix.configadmin-1.2.4.jar
reference:file:system-bundles/org.apache.felix.dependencymanager-3.0.0-SNAPSHOT.jar
reference:file:system-bundles/org.apache.felix.eventadmin-1.2.2.jar
reference:file:system-bundles/org.apache.felix.fileinstall-3.0.0.jar
reference:file:system-bundles/org.apache.felix.log-1.0.0.jar
reference:file:system-bundles/org.apache.felix.main-2.0.5.jar
reference:file:system-bundles/org.apache.felix.metatype-1.0.4.jar
reference:file:system-bundles/org.apache.felix.shell.tui-1.4.1.jar
reference:file:system-bundles/org.apache.felix.shell-1.4.2.jar
reference:file:system-bundles/org.apache.felix.webconsole-3.1.2.jar
reference:file:system-bundles/org.apache.sling.commons.mime-2.1.4.jar
reference:file:system-bundles/org.apache.sling.commons.osgi-2.0.6.jar
reference:file:system-bundles/org.osgi.compendium-1.0.0.jar
reference:file:system-bundles/org.osgi.core-1.0.0.jar
reference:file:system-bundles/pax-useradmin-service-0.0.1-SNAPSHOT.jar
reference:file:system-bundles/pax-web-jetty-bundle-0.7.1.jar
reference:file:system-bundles/pax-swissbox-core-${pax.swissbox.version}.jar
reference:file:system-bundles/ops4j-base-lang-1.2.2.jar
reference:file:system-bundles/org.apache.felix.scr-1.6.0.jar
+felix.auto.start.1=reference:file:system-bundles/org.apache.felix.configadmin-1.2.4.jar
reference:file:system-bundles/org.apache.felix.dependencymanager-3.0.0-SNAPSHOT.jar
reference:file:system-bundles/org.apache.felix.eventadmin-1.2.2.jar
reference:file:system-bundles/org.apache.felix.fileinstall-3.0.0.jar
reference:file:system-bundles/org.apache.felix.log-1.0.0.jar
reference:file:system-bundles/org.apache.felix.main-2.0.5.jar
reference:file:system-bundles/org.apache.felix.metatype-1.0.4.jar
reference:file:system-bundles/org.apache.felix.shell.tui-1.4.1.jar
reference:file:system-bundles/org.apache.felix.shell-1.4.2.jar
reference:file:system-bundles/org.apache.felix.webconsole-3.1.2.jar
reference:file:system-bundles/org.apache.sling.commons.mime-2.1.4.jar
reference:file:system-bundles/org.apache.sling.commons.osgi-2.0.6.jar
reference:file:system-bundles/org.osgi.compendium-1.0.0.jar
reference:file:system-bundles/org.osgi.core-1.0.0.jar
reference:file:system-bundles/pax-useradmin-service-0.0.1-SNAPSHOT.jar
reference:file:system-bundles/org.apache.felix.http.bundle-${org.apache.felix.http.version}.jar
reference:file:system-bundles/pax-swissbox-core-${pax.swissbox.version}.jar
reference:file:system-bundles/ops4j-base-lang-1.2.2.jar
reference:file:system-bundles/org.apache.felix.scr-1.6.0.jar
felix.auto.start.2=reference:file:platform-bundles/org.amdatu.platform.filebased-configuration-${platform.version}.jar
felix.auto.start.5=reference:file:platform-bundles/org.amdatu.platform.shindig-application-${platform.version}.jar
reference:file:platform-bundles/org.amdatu.platform.cassandra-application-${platform.version}.jar
reference:file:platform-bundles/org.amdatu.platform.cassandra-listener-${platform.version}.jar
reference:file:platform-bundles/org.amdatu.platform.cassandra-persistencemanager-${platform.version}.jar
reference:file:platform-bundles/org.amdatu.platform.loghandler-${platform.version}.jar
reference:file:platform-bundles/org.amdatu.platform.profile-service-${platform.version}.jar
reference:file:platform-bundles/org.amdatu.platform.tenant-service-${platform.version}.jar
reference:file:platform-bundles/org.amdatu.platform.authorization-${platform.version}.jar
reference:file:platform-bundles/org.amdatu.platform.httpcontext-${platform.version}.jar
reference:file:platform-bundles/org.amdatu.platform.wink-application-${platform.version}.jar
reference:file:platform-bundles/org.amdatu.platform.sesame-application-${platform.version}.jar
reference:file:platform-bundles/org.amdatu.platform.config-template-manager-${platform.version}.jar
reference:file:platform-bundles/org.amdatu.platform.useradmin-cassandra-store-${platform.version}.jar
felix.auto.start.10=reference:file:application-bundles/org.amdatu.application.dashboard-${platform.version}.jar
reference:file:application-bundles/org.amdatu.application.gadgetmanagement-${platform.version}.jar
reference:file:application-bundles/org.amdatu.web.jsp-support-${platform.version}.jar
@@ -104,4 +104,13 @@
felix.fileinstall.bundles.new.start=true
felix.fileinstall.filter=.*
felix.fileinstall.tmpdir=${work.directory.name}/tmp/web/org/apache/felix/fileinstall
-felix.fileinstall.start.level=40
\ No newline at end of file
+felix.fileinstall.start.level=40
+
+# Skype runs on port 80, Oracle db on 8080. Therefore use this 'arbitrary' port
+# Provides properties for the HTTP service (Felix HTTP Bundle or Pax Web)
+org.osgi.service.http.hostname=${server.hostname}
+org.osgi.service.http.port=${server.port}
+org.osgi.service.http.port.secure=${server.port.secure}
+org.apache.felix.http.jettyEnabled=true
+org.apache.felix.http.debug=true
+org.apache.felix.log.storeDebug=true