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

solomax pushed a commit to branch OPENMEETINGS-1649-kurento
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/OPENMEETINGS-1649-kurento by 
this push:
     new 2a553a2  [OPENMEETINGS-1649] local run with jetty is fixed
2a553a2 is described below

commit 2a553a228a7a2d02f4e774a0bf59d9dfec9e83cb
Author: Maxim Solodovnik <[email protected]>
AuthorDate: Tue Feb 27 23:50:59 2018 +0700

    [OPENMEETINGS-1649] local run with jetty is fixed
---
 openmeetings-install/pom.xml                       |   4 +
 .../src/site/xdoc/BuildInstructions.xml            |  12 ++-
 openmeetings-util/pom.xml                          |  12 +++
 .../openmeetings/util/OMContextListener.java       |  26 ++++-
 openmeetings-web/pom.xml                           | 119 +++++++++++----------
 .../apache/openmeetings/web/app/Application.java   |  43 ++++++++
 .../apache/openmeetings/web/app/ClientManager.java |  11 +-
 .../openmeetings/web/app/QuickPollManager.java     |   2 +-
 .../openmeetings/web/app/WhiteboardManager.java    |  14 +--
 .../openmeetings/web/pages/auth/SignInDialog.java  |   4 +
 .../WEB-INF/{classes => }/applicationContext.xml   |   0
 .../src/main/webapp/WEB-INF/red5-web.properties    |  17 ---
 .../src/main/webapp/WEB-INF/red5-web.xml           |  42 --------
 openmeetings-web/src/main/webapp/WEB-INF/web.xml   |  44 ++------
 .../apache/openmeetings/AbstractSpringTest.java    |   3 +-
 .../webservice/AbstractWebServiceTest.java         |  60 ++++++-----
 openmeetings-web/src/test/jetty/jetty-http.xml     |  54 ++++++++++
 openmeetings-web/src/test/jetty/jetty-https.xml    |  61 +++++++++++
 openmeetings-web/src/test/jetty/jetty-ssl.xml      |  52 +++++++++
 openmeetings-web/src/test/jetty/jetty.xml          |  39 +++++++
 pom.xml                                            |  37 ++++---
 21 files changed, 446 insertions(+), 210 deletions(-)

diff --git a/openmeetings-install/pom.xml b/openmeetings-install/pom.xml
index 6e9fd9d..2e8c07a 100644
--- a/openmeetings-install/pom.xml
+++ b/openmeetings-install/pom.xml
@@ -39,6 +39,10 @@
                        <artifactId>spring-context-support</artifactId>
                </dependency>
                <dependency>
+                       <groupId>org.springframework</groupId>
+                       <artifactId>spring-core</artifactId>
+               </dependency>
+               <dependency>
                        <groupId>org.apache.openmeetings</groupId>
                        <artifactId>openmeetings-core</artifactId>
                </dependency>
diff --git a/openmeetings-server/src/site/xdoc/BuildInstructions.xml 
b/openmeetings-server/src/site/xdoc/BuildInstructions.xml
index 6cbe1d3..e27fb4b 100644
--- a/openmeetings-server/src/site/xdoc/BuildInstructions.xml
+++ b/openmeetings-server/src/site/xdoc/BuildInstructions.xml
@@ -58,6 +58,12 @@
                        <source>mvn 
org.apache.maven.plugins:maven-dependency-plugin:3.0.0:analyze-only</source>
                </section>
                <section name="Tips and Gotchas">
+                       <source><![CDATA[
+MAVEN_OPTS='-Xdebug 
-Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n' mvn clean -P 
allModules,quick,mysql,jetty jetty:run-exploded
+
+cd ..; mvn clean install -pl openmeetings-util -P allModules,quick; cd 
openmeetings-web;
+
+                       ]]></source>
                        <p>To compile only client you can run following 
command: </p>
                        <source>
 <![CDATA[
@@ -67,19 +73,19 @@ mvn install -P allModules -pl openmeetings-flash            
   # compiles a comp
                        <p>In case you would like to develop Openmeetings you 
need to run <i>"unpacked"</i> build: </p>
                        <source>
 <![CDATA[
-mvn clean install -P allModules,unpacked,mysql -DskipTests=true 
-Dwicket.mode=DEVELOPMENT
+mvn clean install -P allModules,unpacked,mysql -DskipTests=true 
-Dwicket.configuration=DEVELOPMENT
 ]]>
                        </source>
                        <p>After modifications are made you can run 
<i>"quick"</i> build: </p>
                        <source>
 <![CDATA[
-mvn install -P allModules,quick,mysql -pl openmeetings-web -pl 
openmeetings-server -Dwicket.mode=DEVELOPMENT
+mvn install -P allModules,quick,mysql -pl openmeetings-web -pl 
openmeetings-server -Dwicket.configuration=DEVELOPMENT
 ]]>
                        </source>
                        <p>Any number of projects can be specified during 
build: </p>
                        <source>
 <![CDATA[
-mvn install -P allModules,quick,mysql -pl openmeetings-util -pl 
openmeetings-db -pl openmeetings-core -pl openmeetings-install -pl 
openmeetings-service -pl openmeetings-web -pl openmeetings-server -pl 
openmeetings-webservice -Dwicket.mode=DEVELOPMENT
+mvn install -P allModules,quick,mysql -pl openmeetings-util -pl 
openmeetings-db -pl openmeetings-core -pl openmeetings-install -pl 
openmeetings-service -pl openmeetings-web -pl openmeetings-server -pl 
openmeetings-webservice -Dwicket.configuration=DEVELOPMENT
 ]]>
                        </source>
                        <div>
diff --git a/openmeetings-util/pom.xml b/openmeetings-util/pom.xml
index 8ce63dd..e8d7a96 100644
--- a/openmeetings-util/pom.xml
+++ b/openmeetings-util/pom.xml
@@ -120,6 +120,18 @@
                        <artifactId>wicket-extensions</artifactId>
                </dependency>
                <dependency>
+                       <groupId>org.slf4j</groupId>
+                       <artifactId>slf4j-api</artifactId>
+               </dependency>
+               <dependency>
+                       <groupId>org.slf4j</groupId>
+                       <artifactId>log4j-over-slf4j</artifactId>
+               </dependency>
+               <dependency>
+                       <groupId>ch.qos.logback</groupId>
+                       <artifactId>logback-classic</artifactId>
+               </dependency>
+               <dependency>
                        <groupId>org.apache.tika</groupId>
                        <artifactId>tika-parsers</artifactId>
                        <version>1.17</version>
diff --git 
a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OMContextListener.java
 
b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OMContextListener.java
index d6bd72e..9f4c1a3 100644
--- 
a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OMContextListener.java
+++ 
b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OMContextListener.java
@@ -21,13 +21,29 @@ package org.apache.openmeetings.util;
 import javax.servlet.ServletContextEvent;
 import javax.servlet.ServletContextListener;
 
+import org.slf4j.LoggerFactory;
+
+import ch.qos.logback.classic.LoggerContext;
+import ch.qos.logback.classic.joran.JoranConfigurator;
+import ch.qos.logback.core.joran.spi.JoranException;
+
 public class OMContextListener implements ServletContextListener {
 
        @Override
        public void contextInitialized(ServletContextEvent event) {
-               System.setProperty("current_openmeetings_context_name", 
pathToName(event));
-               System.setProperty("webapp.contextPath", String.format("/%s"));
-               System.setProperty("logback.configurationFile", 
"logback-config.xml");
+               String ctx = pathToName(event);
+               System.setProperty("current_openmeetings_context_name", ctx);
+               System.setProperty("webapp.contextPath", String.format("/%s", 
ctx));
+               try {
+                       LoggerContext context = 
(LoggerContext)LoggerFactory.getILoggerFactory();
+                       JoranConfigurator configurator = new 
JoranConfigurator();
+                       configurator.setContext(context);
+                       context.reset();
+                       configurator.doConfigure("logback-config.xml");
+               } catch (JoranException je) {
+                       // StatusPrinter will handle this
+               }
+               //System.setProperty("logback.configurationFile", 
"logback-config.xml");
        }
 
        private static String pathToName(ServletContextEvent event) {
@@ -37,4 +53,8 @@ public class OMContextListener implements 
ServletContextListener {
                }
                return contextName;
        }
+
+       @Override
+       public void contextDestroyed(ServletContextEvent arg0) {
+       }
 }
diff --git a/openmeetings-web/pom.xml b/openmeetings-web/pom.xml
index 0a77370..59fccab 100644
--- a/openmeetings-web/pom.xml
+++ b/openmeetings-web/pom.xml
@@ -251,10 +251,36 @@
                                        
<filteringDeploymentDescriptors>true</filteringDeploymentDescriptors>
                                        <webResources>
                                                <webResource>
+                                                       
<directory>${project.basedir}/src/main/java</directory>
+                                                       
<targetPath>WEB-INF/classes</targetPath>
+                                                       <includes>
+                                                               
<include>**/*.html</include>
+                                                               
<include>**/*.css</include>
+                                                               
<include>**/*.js</include>
+                                                               
<include>**/*.xml</include>
+                                                               
<include>**/*.properties</include>
+                                                       </includes>
+                                               </webResource>
+                                               <webResource>
+                                                       
<directory>${project.parent.basedir}/openmeetings-service/src/main/java</directory>
+                                                       
<targetPath>WEB-INF/classes</targetPath>
+                                                       <includes>
+                                                               
<include>**/*.html</include>
+                                                               
<include>**/*.css</include>
+                                                               
<include>**/*.js</include>
+                                                               
<include>**/*.xml</include>
+                                                               
<include>**/*.properties</include>
+                                                       </includes>
+                                               </webResource>
+                                               <webResource>
                                                        
<directory>${project.build.directory}/generated-res</directory>
                                                        
<targetPath>WEB-INF/classes/META-INF</targetPath>
                                                        
<filtering>true</filtering>
                                                </webResource>
+                                               <webResource>
+                                                       
<directory>${project.build.directory}/generated-sources/main/java/</directory>
+                                                       
<targetPath>WEB-INF/classes</targetPath>
+                                               </webResource>
                                        </webResources>
                                </configuration>
                                <executions>
@@ -436,13 +462,34 @@
                                                
<languages.home>${project.build.directory}/test-root/languages</languages.home>
                                                <red5.root>red5.root</red5.root>
                                                
<backups.dir>${old-backups.dir}</backups.dir>
-                                               
<logback.ContextSelector>org.red5.logging.LoggingContextSelector</logback.ContextSelector>
                                                
<catalina.useNaming>true</catalina.useNaming>
                                        </systemPropertyVariables>
                                        <skip>${maven.test.skip}</skip>
                                </configuration>
                        </plugin>
                </plugins>
+               <pluginManagement>
+                       <plugins>
+                               <plugin>
+                                       <groupId>org.eclipse.jetty</groupId>
+                                       
<artifactId>jetty-maven-plugin</artifactId>
+                                       <version>${jetty9.version}</version>
+                                       <configuration>
+                                               <!--systemProperties>
+                                                       <systemProperty>
+                                                               
<name>logback.configurationFile</name>
+                                                               
<value>${project.build.directory}/${project.build.finalName}/WEB-INF/classes/logback-config.xml</value>
+                                                       </systemProperty>
+                                               </systemProperties-->
+                                               <webApp>
+                                                       
<contextPath>/openmeetings</contextPath>
+                                               </webApp>
+                                               <!-- 
jettyXml>${project.basedir}/src/test/jetty/jetty.xml,${project.basedir}/src/test/jetty/jetty-ssl.xml,${project.basedir}/src/test/jetty/jetty-http.xml,${project.basedir}/src/test/jetty/jetty-https.xml</jettyXml-->
+                                               
<jettyXml>${project.basedir}/src/test/jetty/jetty.xml,${project.basedir}/src/test/jetty/jetty-http.xml</jettyXml>
+                                       </configuration>
+                               </plugin>
+                       </plugins>
+               </pluginManagement>
        </build>
        <dependencies>
                <dependency>
@@ -498,6 +545,11 @@
                        <version>${wicket.version}</version>
                </dependency>
                <dependency>
+                       <groupId>org.apache.wicket</groupId>
+                       <artifactId>wicket-spring</artifactId>
+                       <version>${wicket.version}</version>
+               </dependency>
+               <dependency>
                        <groupId>com.googlecode.wicket-jquery-ui</groupId>
                        <artifactId>wicket-jquery-ui-core</artifactId>
                        <version>${wicketju.version}</version>
@@ -548,44 +600,6 @@
                        <version>${wickets.version}</version>
                </dependency>
                <dependency>
-                       <groupId>org.apache.tomcat.embed</groupId>
-                       <artifactId>tomcat-embed-websocket</artifactId>
-                       <version>${tomcat.version}</version>
-                       <!--exclusions> commented for Red5 lib substitution
-                               <exclusion>
-                                       
<groupId>org.apache.tomcat.embed</groupId>
-                                       
<artifactId>tomcat-embed-core</artifactId>
-                               </exclusion>
-                       </exclusions-->
-               </dependency>
-               <dependency>
-                       <groupId>org.apache.tomcat</groupId>
-                       <artifactId>tomcat-catalina-ha</artifactId>
-                       <version>${tomcat.version}</version>
-                       <exclusions>
-                               <exclusion>
-                                       <groupId>org.apache.tomcat</groupId>
-                                       <artifactId>tomcat-coyote</artifactId>
-                               </exclusion>
-                               <exclusion>
-                                       <groupId>org.apache.tomcat</groupId>
-                                       <artifactId>tomcat-juli</artifactId>
-                               </exclusion>
-                               <exclusion>
-                                       <groupId>org.apache.tomcat</groupId>
-                                       <artifactId>tomcat-catalina</artifactId>
-                               </exclusion>
-                               <exclusion>
-                                       <groupId>org.apache.tomcat</groupId>
-                                       <artifactId>tomcat-util</artifactId>
-                               </exclusion>
-                               <exclusion>
-                                       <groupId>org.apache.tomcat</groupId>
-                                       
<artifactId>tomcat-util-scan</artifactId>
-                               </exclusion>
-                       </exclusions>
-               </dependency>
-               <dependency>
                        <groupId>org.apache.commons</groupId>
                        <artifactId>commons-lang3</artifactId>
                </dependency>
@@ -614,12 +628,6 @@
                        <version>${cxf.version}</version>
                        <scope>test</scope>
                </dependency>
-               <!--dependency> commented for Red5 lib substitution
-                       <groupId>org.apache.tomcat.embed</groupId>
-                       <artifactId>tomcat-embed-core</artifactId>
-                       <version>${tomcat.version}</version>
-                       <scope>test</scope>
-               </dependency-->
                <dependency>
                        <groupId>org.apache.derby</groupId>
                        <artifactId>derbynet</artifactId>
@@ -637,21 +645,18 @@
                                </exclusion>
                        </exclusions>
                </dependency>
-                <!-- added for Red5 lib substitution -->
-               <dependency>
-                       <groupId>org.springframework</groupId>
-                       <artifactId>spring-context-support</artifactId>
-                       <version>${spring.version}</version>
-               </dependency>
+               <!-- JETTY DEPENDENCIES FOR TESTING -->
                <dependency>
-                       <groupId>org.apache.tomcat.embed</groupId>
-                       <artifactId>tomcat-embed-core</artifactId>
-                       <version>${tomcat.version}</version>
+                       <groupId>org.eclipse.jetty</groupId>
+                       <artifactId>jetty-webapp</artifactId>
+                       <scope>test</scope>
+                       <version>${jetty9.version}</version>
                </dependency>
                <dependency>
-                       <groupId>org.apache.tomcat.embed</groupId>
-                       <artifactId>tomcat-embed-jasper</artifactId>
-                       <version>${tomcat.version}</version>
+                       <groupId>org.eclipse.jetty</groupId>
+                       <artifactId>jetty-jmx</artifactId>
+                       <version>${jetty9.version}</version>
+                       <scope>test</scope>
                </dependency>
        </dependencies>
 </project>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
index 495b04f..8881f12 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
@@ -18,11 +18,18 @@
  */
 package org.apache.openmeetings.web.app;
 
+import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_EXT_PROCESS_TTL;
+import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_HEADER_CSP;
+import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_HEADER_XFRAME;
+import static 
org.apache.openmeetings.util.OpenmeetingsVariables.HEADER_CSP_SELF;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.HEADER_XFRAME_SAMEORIGIN;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.getApplicationName;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.getBaseUrl;
+import static 
org.apache.openmeetings.util.OpenmeetingsVariables.getExtProcessTtl;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.getWicketApplicationName;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.isInitComplete;
+import static 
org.apache.openmeetings.util.OpenmeetingsVariables.setExtProcessTtl;
+import static 
org.apache.openmeetings.util.OpenmeetingsVariables.setInitComplete;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.setWicketApplicationName;
 import static org.apache.openmeetings.web.pages.HashPage.INVITATION_HASH;
 import static 
org.apache.openmeetings.web.user.rooms.RoomEnterBehavior.getRoomUrlFragment;
@@ -30,6 +37,7 @@ import static 
org.apache.openmeetings.web.util.OmUrlFragment.PROFILE_MESSAGES;
 import static org.apache.wicket.resource.JQueryResourceReference.getV3;
 import static 
org.springframework.web.context.support.WebApplicationContextUtils.getWebApplicationContext;
 
+import java.io.File;
 import java.net.UnknownHostException;
 import java.text.MessageFormat;
 import java.util.ArrayList;
@@ -46,6 +54,7 @@ import org.apache.openmeetings.core.service.MainService;
 import org.apache.openmeetings.core.util.WebSocketHelper;
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.label.LabelDao;
+import org.apache.openmeetings.db.dao.record.RecordingDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.basic.Client;
 import org.apache.openmeetings.db.entity.record.Recording;
@@ -55,7 +64,9 @@ import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.entity.user.User.Type;
 import org.apache.openmeetings.db.util.ws.RoomMessage;
 import org.apache.openmeetings.db.util.ws.TextRoomMessage;
+import org.apache.openmeetings.util.OmFileHelper;
 import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.apache.openmeetings.util.Version;
 import org.apache.openmeetings.util.ws.IClusterWsMessage;
 import org.apache.openmeetings.web.pages.AccessDeniedPage;
 import org.apache.openmeetings.web.pages.ActivatePage;
@@ -105,9 +116,12 @@ import org.apache.wicket.request.http.WebResponse;
 import org.apache.wicket.request.mapper.info.PageComponentInfo;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.request.mapper.parameter.PageParametersEncoder;
+import org.apache.wicket.spring.injection.annot.SpringComponentInjector;
 import org.apache.wicket.validation.validator.UrlValidator;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 import org.springframework.web.context.WebApplicationContext;
 import org.wicketstuff.dashboard.WidgetRegistry;
 import org.wicketstuff.dashboard.web.DashboardContext;
@@ -124,6 +138,7 @@ import com.hazelcast.core.MemberAttributeEvent;
 import com.hazelcast.core.MembershipEvent;
 import com.hazelcast.core.MembershipListener;
 
+@Component
 public class Application extends AuthenticatedWebApplication implements 
IApplication {
        private static final Logger log = 
LoggerFactory.getLogger(Application.class);
        private static boolean isInstalled;
@@ -145,6 +160,11 @@ public class Application extends 
AuthenticatedWebApplication implements IApplica
        private String contentSecurityPolicy = 
OpenmeetingsVariables.HEADER_CSP_SELF;
        private ITopic<IClusterWsMessage> hazelWsTopic;
 
+       @Autowired
+       private ConfigurationDao cfgDao;
+       @Autowired
+       private RecordingDao recordingDao;
+
        @Override
        protected void init() {
                setWicketApplicationName(super.getName());
@@ -252,6 +272,29 @@ public class Application extends 
AuthenticatedWebApplication implements IApplica
                mountResource("/room/preview/${id}", new 
RoomPreviewResourceReference());
                mountResource("/profile/${id}", new 
ProfileImageResourceReference());
                mountResource("/group/${id}", new GroupLogoResourceReference());
+               getComponentInstantiationListeners().add(new 
SpringComponentInjector(this));
+
+               log.debug("InitComponent::PostConstruct");
+               try {
+                       OmFileHelper.setOmHome(new 
File(getServletContext().getRealPath("/"))); //FIXME TODO move to 
OMContextListener
+                       LabelDao.initLanguageMap();  //FIXME TODO move to 
OMContextListener
+
+                       log.debug("webAppPath : {}", OmFileHelper.getOmHome()); 
//FIXME TODO move to OMContextListener
+
+                       // Init all global config properties
+                       cfgDao.reinit();
+
+                       setInitComplete(true);
+                       // Init properties
+                       setXFrameOptions(cfgDao.getString(CONFIG_HEADER_XFRAME, 
HEADER_XFRAME_SAMEORIGIN));
+                       
setContentSecurityPolicy(cfgDao.getString(CONFIG_HEADER_CSP, HEADER_CSP_SELF));
+                       updateJpaAddresses(cfgDao);
+                       setExtProcessTtl(cfgDao.getInt(CONFIG_EXT_PROCESS_TTL, 
getExtProcessTtl()));
+                       Version.logOMStarted();
+                       recordingDao.resetProcessingStatus(); //we are starting 
so all processing recordings are now errors
+               } catch (Exception err) {
+                       log.error("[appStart]", err);
+               }
        }
 
        private static class NoVersionMapper extends MountedMapper {
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/ClientManager.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/ClientManager.java
index cf77652..f64d813 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/ClientManager.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/ClientManager.java
@@ -29,7 +29,6 @@ import java.util.Map.Entry;
 import java.util.Set;
 import java.util.function.Predicate;
 
-import org.apache.openmeetings.core.remote.ScopeApplicationAdapter;
 import org.apache.openmeetings.db.dao.log.ConferenceLogDao;
 import org.apache.openmeetings.db.entity.basic.Client;
 import org.apache.openmeetings.db.entity.basic.IClient;
@@ -53,18 +52,20 @@ public class ClientManager implements IClientManager {
 
        @Autowired
        private ConferenceLogDao confLogDao;
+       /*
        @Autowired
        private ScopeApplicationAdapter scopeAdapter;
+       */
 
-       private Map<String, Client> map() {
+       private static Map<String, Client> map() {
                return getHazelcast().getMap(ONLINE_USERS_KEY);
        }
 
-       private Map<String, String> mapUidBySid() {
+       private static Map<String, String> mapUidBySid() {
                return getHazelcast().getMap(UID_BY_SID_KEY);
        }
 
-       private IMap<Long, Set<String>> getRooms() {
+       private static IMap<Long, Set<String>> getRooms() {
                return getHazelcast().getMap(ROOMS_KEY);
        }
 
@@ -252,7 +253,7 @@ public class ClientManager implements IClientManager {
                return false;
        }
 
-       private Client getByKeys(Long userId, String sessionId) {
+       private static Client getByKeys(Long userId, String sessionId) {
                Client client = null;
                for (Map.Entry<String, Client> e : map().entrySet()) {
                        Client c = e.getValue();
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/QuickPollManager.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/QuickPollManager.java
index f5e01e1..e2f8a33 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/QuickPollManager.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/QuickPollManager.java
@@ -41,7 +41,7 @@ public class QuickPollManager {
        private static final Logger log = 
LoggerFactory.getLogger(QuickPollManager.class);
        private static final String QPOLLS_KEY = "QPOLLS_KEY";
 
-       private IMap<Long, Map<Long, Boolean>> map() {
+       private static IMap<Long, Map<Long, Boolean>> map() {
                return getHazelcast().getMap(QPOLLS_KEY);
        }
 
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WhiteboardManager.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WhiteboardManager.java
index 9a8c4f4..52b9994 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WhiteboardManager.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WhiteboardManager.java
@@ -42,16 +42,16 @@ import com.hazelcast.core.IMap;
 public class WhiteboardManager implements IWhiteboardManager {
        private static final String WBS_KEY = "WBS_KEY";
 
-       private IMap<Long, Whiteboards> getCache() {
+       private static IMap<Long, Whiteboards> map() {
                return getHazelcast().getMap(WBS_KEY);
        }
 
        public boolean tryLock(Long roomId) {
-               return getCache().tryLock(roomId);
+               return map().tryLock(roomId);
        }
 
        public void unlock(Long roomId) {
-               getCache().unlock(roomId);
+               map().unlock(roomId);
        }
 
        private static String getDefaultName(Long langId, int num) {
@@ -63,7 +63,7 @@ public class WhiteboardManager implements IWhiteboardManager {
        }
 
        public boolean contains(Long roomId) {
-               return getCache().containsKey(roomId);
+               return map().containsKey(roomId);
        }
 
        @Override
@@ -75,7 +75,7 @@ public class WhiteboardManager implements IWhiteboardManager {
                if (roomId == null) {
                        return null;
                }
-               Whiteboards wbs = getCache().get(roomId);
+               Whiteboards wbs = map().get(roomId);
                if (wbs == null) {
                        wbs = new Whiteboards(roomId);
                        Whiteboard wb = add(wbs, langId);
@@ -132,7 +132,7 @@ public class WhiteboardManager implements 
IWhiteboardManager {
                update(wbs);
        }
 
-       private void update(Whiteboards wbs) {
-               getCache().put(wbs.getRoomId(), wbs);
+       private static void update(Whiteboards wbs) {
+               map().put(wbs.getRoomId(), wbs);
        }
 }
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
index 027546a..9b0e267 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
@@ -65,6 +65,7 @@ import org.apache.wicket.markup.html.list.ListView;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.apache.wicket.util.string.Strings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -90,6 +91,9 @@ public class SignInDialog extends NonClosableDialog<String> {
        private LdapConfig domain;
        private final KendoFeedbackPanel feedback = new 
KendoFeedbackPanel("feedback", new Options("button", true));
 
+       @SpringBean
+       private ConfigurationDao cfgDao;
+
        public SignInDialog(String id) {
                super(id, "");
                add(form = new SignInForm("signin"));
diff --git 
a/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml 
b/openmeetings-web/src/main/webapp/WEB-INF/applicationContext.xml
similarity index 100%
rename from 
openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml
rename to openmeetings-web/src/main/webapp/WEB-INF/applicationContext.xml
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/red5-web.properties 
b/openmeetings-web/src/main/webapp/WEB-INF/red5-web.properties
deleted file mode 100644
index 518301d..0000000
--- a/openmeetings-web/src/main/webapp/WEB-INF/red5-web.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-#  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.
-webapp.virtualHosts=*,localhost, 127.0.0.1
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/red5-web.xml 
b/openmeetings-web/src/main/webapp/WEB-INF/red5-web.xml
deleted file mode 100644
index 4723baf..0000000
--- a/openmeetings-web/src/main/webapp/WEB-INF/red5-web.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  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.
-
--->
-<beans xmlns="http://www.springframework.org/schema/beans";
-               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-               xsi:schemaLocation="
-                       http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd";
-       >
-       <bean id="placeholderConfig" 
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
-               <property name="location" value="/WEB-INF/red5-web.properties" 
/>
-       </bean>
-
-       <bean id="web.context" class="org.red5.server.Context" 
autowire="byType" />
-
-       <bean id="web.scope" class="org.red5.server.scope.WebScope">
-               <property name="server" ref="red5.server" />
-               <property name="parent" ref="global.scope" />
-               <property name="context" ref="web.context" />
-               <property name="handler" ref="web.handler" />
-               <property name="contextPath" value="${webapp.contextPath}" />
-               <property name="virtualHosts" value="${webapp.virtualHosts}" />
-       </bean>
-
-       <import resource="classes/applicationContext.xml" />
-</beans>
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/web.xml 
b/openmeetings-web/src/main/webapp/WEB-INF/web.xml
index 209395a..634ffee 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/web.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/web.xml
@@ -21,38 +21,11 @@
 <web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee";
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd";>
-       <context-param>
-               <param-name>globalScope</param-name>
-               <param-value>default</param-value>
-       </context-param>
-       <context-param>
-               <param-name>contextConfigLocation</param-name>
-               <param-value>/WEB-INF/red5-*.xml</param-value>
-       </context-param>
-       <context-param>
-               <param-name>locatorFactorySelector</param-name>
-               <param-value>red5.xml</param-value>
-       </context-param>
-       <context-param>
-               <param-name>parentContextKey</param-name>
-               <param-value>default.context</param-value>
-       </context-param>
-
        <listener>
                
<listener-class>org.apache.openmeetings.util.OMContextListener</listener-class>
        </listener>
 
        <filter>
-               <filter-name>LoggerContextFilter</filter-name>
-               
<filter-class>org.red5.logging.LoggerContextFilter</filter-class>
-               <async-supported>true</async-supported>
-       </filter>
-       <filter-mapping>
-               <filter-name>LoggerContextFilter</filter-name>
-               <url-pattern>/*</url-pattern>
-       </filter-mapping>
-
-       <filter>
                <filter-name>OpenmeetingsApplication</filter-name>
                
<filter-class>org.apache.wicket.protocol.ws.javax.JavaxWebSocketFilter</filter-class>
                <async-supported>true</async-supported>
@@ -61,8 +34,12 @@
                        
<param-value>org.apache.openmeetings.web.app.Application</param-value>
                </init-param>
                <init-param>
+                       <param-name>applicationFactoryClassName</param-name>
+                       
<param-value>org.apache.wicket.spring.SpringWebApplicationFactory</param-value>
+               </init-param>
+               <init-param>
                        <param-name>configuration</param-name>
-                       <param-value>${wicket.mode}</param-value>
+                       <param-value>${wicket.configuration}</param-value>
                </init-param>
                <init-param>
                        <param-name>ignorePaths</param-name>
@@ -73,6 +50,11 @@
                <filter-name>OpenmeetingsApplication</filter-name>
                <url-pattern>/*</url-pattern>
        </filter-mapping>
+
+       <listener>
+               
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
+       </listener>
+
        <servlet>
                <servlet-name>CXFServlet</servlet-name>
                
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
@@ -88,12 +70,6 @@
                <url-pattern>/services/*</url-pattern>
        </servlet-mapping>
 
-       <!-- remove the following servlet tags if you want to disable remoting 
for this application -->
-       <servlet>
-               <servlet-name>gateway</servlet-name>
-               
<servlet-class>org.red5.server.net.servlet.AMFGatewayServlet</servlet-class>
-       </servlet>
-
        <mime-mapping>
                <extension>inc</extension>
                <mime-type>text/plain</mime-type>
diff --git 
a/openmeetings-web/src/test/java/org/apache/openmeetings/AbstractSpringTest.java
 
b/openmeetings-web/src/test/java/org/apache/openmeetings/AbstractSpringTest.java
index f5b83b1..4985bc2 100644
--- 
a/openmeetings-web/src/test/java/org/apache/openmeetings/AbstractSpringTest.java
+++ 
b/openmeetings-web/src/test/java/org/apache/openmeetings/AbstractSpringTest.java
@@ -22,7 +22,6 @@ import static org.junit.Assert.fail;
 
 import org.apache.openmeetings.db.dao.label.LabelDao;
 import org.apache.openmeetings.util.OmFileHelper;
-import org.apache.tomcat.util.scan.Constants;
 import org.junit.BeforeClass;
 import org.junit.runner.RunWith;
 import org.springframework.test.context.ContextConfiguration;
@@ -38,7 +37,7 @@ public abstract class AbstractSpringTest extends 
AbstractJUnit4SpringContextTest
        @BeforeClass
        public static void init() {
                setOmHome();
-               System.setProperty(Constants.SKIP_JARS_PROPERTY, "*");
+               //FIXME TODO System.setProperty(Constants.SKIP_JARS_PROPERTY, 
"*");
                LabelDao.initLanguageMap();
                if (LabelDao.getLanguages().isEmpty()) {
                        fail("Failed to set languages");
diff --git 
a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/AbstractWebServiceTest.java
 
b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/AbstractWebServiceTest.java
index 94dcac3..80039d7 100644
--- 
a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/AbstractWebServiceTest.java
+++ 
b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/AbstractWebServiceTest.java
@@ -20,7 +20,6 @@ package org.apache.openmeetings.webservice;
 
 import static javax.ws.rs.core.MediaType.APPLICATION_FORM_URLENCODED;
 import static org.apache.openmeetings.AbstractWicketTester.getWicketTester;
-import static org.apache.openmeetings.util.OmFileHelper.getOmHome;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 
@@ -28,19 +27,16 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.net.InetAddress;
-import java.nio.file.Files;
+import java.lang.management.ManagementFactory;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.UUID;
 
+import javax.management.MBeanServer;
 import javax.ws.rs.core.Form;
 import javax.ws.rs.core.MediaType;
 
-import org.apache.catalina.LifecycleState;
-import org.apache.catalina.connector.Connector;
-import org.apache.catalina.startup.Tomcat;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.cxf.jaxrs.ext.multipart.Attachment;
 import org.apache.cxf.transports.http.configuration.HTTPClientPolicy;
@@ -54,13 +50,20 @@ import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.webservice.util.AppointmentMessageBodyReader;
 import org.apache.wicket.util.tester.WicketTester;
+import org.eclipse.jetty.jmx.MBeanContainer;
+import org.eclipse.jetty.server.HttpConfiguration;
+import org.eclipse.jetty.server.HttpConnectionFactory;
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.ServerConnector;
+import org.eclipse.jetty.util.component.AbstractLifeCycle;
+import org.eclipse.jetty.webapp.WebAppContext;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
 import org.junit.BeforeClass;
 
 public class AbstractWebServiceTest extends AbstractJUnitDefaults {
-       private static Tomcat tomcat;
+       private static Server server;
        private static final String HOST = "localhost";
        private static final String CONTEXT = "/openmeetings";
        private static int port = 8080;
@@ -97,21 +100,27 @@ public class AbstractWebServiceTest extends 
AbstractJUnitDefaults {
 
        @BeforeClass
        public static void initialize() throws Exception {
-               tomcat = new Tomcat();
-               Connector connector = new Connector("HTTP/1.1");
-               connector.setAttribute("address", 
InetAddress.getByName(HOST).getHostAddress());
-               connector.setPort(0);
-               tomcat.getService().addConnector(connector);
-               tomcat.setConnector(connector);
-               File wd = Files.createTempDirectory("om" + 
UUID.randomUUID().toString()).toFile();
-               tomcat.setBaseDir(wd.getCanonicalPath());
-               tomcat.getHost().setAppBase(wd.getCanonicalPath());
-               tomcat.getHost().setAutoDeploy(false);
-               tomcat.getHost().setDeployOnStartup(false);
-               tomcat.addWebapp(CONTEXT, getOmHome().getAbsolutePath());
-               tomcat.getConnector(); // to init the connector
-               tomcat.start();
-               port = tomcat.getConnector().getLocalPort();
+               server = new Server();
+               HttpConfiguration config = new HttpConfiguration();
+               ServerConnector http = new ServerConnector(server, new 
HttpConnectionFactory(config));
+               http.setPort(0);
+               http.setIdleTimeout(1000 * 60 * 60);
+               server.addConnector(http);
+
+               WebAppContext bb = new WebAppContext();
+               bb.setServer(server);
+               bb.setContextPath("/");
+               bb.setWar("src/main/webapp");
+
+               server.setHandler(bb);
+
+               MBeanServer mBeanServer = 
ManagementFactory.getPlatformMBeanServer();
+               MBeanContainer mBeanContainer = new MBeanContainer(mBeanServer);
+               server.addEventListener(mBeanContainer);
+               server.addBean(mBeanContainer);
+               server.start();
+               server.join();
+               port = 
((ServerConnector)server.getConnectors()[0]).getLocalPort();
        }
 
        @Override
@@ -131,11 +140,8 @@ public class AbstractWebServiceTest extends 
AbstractJUnitDefaults {
 
        @AfterClass
        public static void destroy() throws Exception {
-               if (tomcat.getServer() != null && tomcat.getServer().getState() 
!= LifecycleState.DESTROYED) {
-                       if (tomcat.getServer().getState() != 
LifecycleState.STOPPED) {
-                               tomcat.stop();
-                       }
-                       tomcat.destroy();
+               if (server != null && 
(AbstractLifeCycle.STARTING.equals(server.getState()) || 
AbstractLifeCycle.STARTED.equals(server.getState()))) {
+                       server.stop();
                }
        }
 
diff --git a/openmeetings-web/src/test/jetty/jetty-http.xml 
b/openmeetings-web/src/test/jetty/jetty-http.xml
new file mode 100644
index 0000000..92ad3d1
--- /dev/null
+++ b/openmeetings-web/src/test/jetty/jetty-http.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+<!--
+   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.
+-->
+<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" 
"http://www.eclipse.org/jetty/configure_9_0.dtd";>
+<!-- ============================================================= -->
+<!-- Configure the Jetty Server instance with an ID "Server"       -->
+<!-- by adding a HTTP connector.                                   -->
+<!-- This configuration must be used in conjunction with jetty.xml -->
+<!-- ============================================================= -->
+<Configure id="Server" class="org.eclipse.jetty.server.Server">
+  <!-- =========================================================== -->
+  <!-- Add a HTTP Connector.                                       -->
+  <!-- Configure an o.e.j.server.ServerConnector with a single     -->
+  <!-- HttpConnectionFactory instance using the common httpConfig  -->
+  <!-- instance defined in jetty.xml                               -->
+  <!--                                                             -->
+  <!-- Consult the javadoc of o.e.j.server.ServerConnector and     -->
+  <!-- o.e.j.server.HttpConnectionFactory for all configuration    -->
+  <!-- that may be set here.                                       -->
+  <!-- =========================================================== -->
+  <Call name="addConnector">
+    <Arg>
+      <New class="org.eclipse.jetty.server.ServerConnector">
+        <Arg name="server"><Ref refid="Server" /></Arg>
+        <Arg name="factories">
+          <Array type="org.eclipse.jetty.server.ConnectionFactory">
+            <Item>
+              <New class="org.eclipse.jetty.server.HttpConnectionFactory">
+                <Arg name="config"><Ref refid="httpConfig" /></Arg>
+              </New>
+            </Item>
+          </Array>
+        </Arg>
+        <Set name="host"><Property name="jetty.host" /></Set>
+        <Set name="port"><Property name="jetty.port" default="5080" /></Set>
+        <Set name="idleTimeout"><Property name="http.timeout" 
default="30000"/></Set>
+      </New>
+    </Arg>
+  </Call>
+</Configure>
diff --git a/openmeetings-web/src/test/jetty/jetty-https.xml 
b/openmeetings-web/src/test/jetty/jetty-https.xml
new file mode 100644
index 0000000..8718ac3
--- /dev/null
+++ b/openmeetings-web/src/test/jetty/jetty-https.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" 
"http://www.eclipse.org/jetty/configure_9_0.dtd";>
+<!--
+   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.
+-->
+<!-- ============================================================= -->
+<!-- Configure a HTTPS connector.                                  -->
+<!-- This configuration must be used in conjunction with jetty.xml -->
+<!-- and jetty-ssl.xml.                                            -->
+<!-- ============================================================= -->
+<Configure id="Server" class="org.eclipse.jetty.server.Server">
+  <!-- =========================================================== -->
+  <!-- Add a HTTPS Connector.                                      -->
+  <!-- Configure an o.e.j.server.ServerConnector with connection   -->
+  <!-- factories for TLS (aka SSL) and HTTP to provide HTTPS.      -->
+  <!-- All accepted TLS connections are wired to a HTTP connection.-->
+  <!--                                                             -->
+  <!-- Consult the javadoc of o.e.j.server.ServerConnector,        -->
+  <!-- o.e.j.server.SslConnectionFactory and                       -->
+  <!-- o.e.j.server.HttpConnectionFactory for all configuration    -->
+  <!-- that may be set here.                                       -->
+  <!-- =========================================================== -->
+  <Call id="httpsConnector" name="addConnector">
+    <Arg>
+      <New class="org.eclipse.jetty.server.ServerConnector">
+        <Arg name="server"><Ref refid="Server" /></Arg>
+          <Arg name="factories">
+            <Array type="org.eclipse.jetty.server.ConnectionFactory">
+              <Item>
+                <New class="org.eclipse.jetty.server.SslConnectionFactory">
+                  <Arg name="next">http/1.1</Arg>
+                  <Arg name="sslContextFactory"><Ref 
refid="sslContextFactory"/></Arg>
+                </New>
+              </Item>
+              <Item>
+                <New class="org.eclipse.jetty.server.HttpConnectionFactory">
+                  <Arg name="config"><Ref refid="sslHttpConfig"/></Arg>
+                </New>
+              </Item>
+            </Array>
+          </Arg>
+          <Set name="host"><Property name="jetty.host" /></Set>
+          <Set name="port"><Property name="jetty.https.port" default="5443" 
/></Set>
+          <Set name="idleTimeout">30000</Set>
+        </New>
+    </Arg>
+  </Call>
+</Configure>
diff --git a/openmeetings-web/src/test/jetty/jetty-ssl.xml 
b/openmeetings-web/src/test/jetty/jetty-ssl.xml
new file mode 100644
index 0000000..dad4b38
--- /dev/null
+++ b/openmeetings-web/src/test/jetty/jetty-ssl.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0"?>
+<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" 
"http://www.eclipse.org/jetty/configure_9_0.dtd";>
+<!--
+   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.
+-->
+<!-- ============================================================= -->
+<!-- Configure a TLS (SSL) Context Factory                         -->
+<!-- This configuration must be used in conjunction with jetty.xml -->
+<!-- and either jetty-https.xml or jetty-spdy.xml (but not both)   -->
+<!-- ============================================================= -->
+<Configure id="sslContextFactory" 
class="org.eclipse.jetty.util.ssl.SslContextFactory">
+  <Set name="KeyStorePath"><Property 
name="maven.project.build.directory.test-classes" default="." />/<Property 
name="jetty.keystore" default="keystore"/></Set>
+  <Set name="KeyStorePassword"><Property name="jetty.keystore.password" 
default="wicket"/></Set>
+  <Set name="KeyManagerPassword"><Property name="jetty.keymanager.password" 
default="wicket"/></Set>
+  <Set name="EndpointIdentificationAlgorithm"></Set>
+  <Set name="ExcludeCipherSuites">
+    <Array type="String">
+      <Item>SSL_RSA_WITH_DES_CBC_SHA</Item>
+      <Item>SSL_DHE_RSA_WITH_DES_CBC_SHA</Item>
+      <Item>SSL_DHE_DSS_WITH_DES_CBC_SHA</Item>
+      <Item>SSL_RSA_EXPORT_WITH_RC4_40_MD5</Item>
+      <Item>SSL_RSA_EXPORT_WITH_DES40_CBC_SHA</Item>
+      <Item>SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA</Item>
+      <Item>SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA</Item>
+    </Array>
+  </Set>
+  <!-- =========================================================== -->
+  <!-- Create a TLS specific HttpConfiguration based on the        -->
+  <!-- common HttpConfiguration defined in jetty.xml               -->
+  <!-- Add a SecureRequestCustomizer to extract certificate and    -->
+  <!-- session information                                         -->
+  <!-- =========================================================== -->
+  <New id="sslHttpConfig" class="org.eclipse.jetty.server.HttpConfiguration">
+    <Arg><Ref refid="httpConfig"/></Arg>
+    <Call name="addCustomizer">
+      <Arg><New 
class="org.eclipse.jetty.server.SecureRequestCustomizer"/></Arg>
+    </Call>
+  </New>
+</Configure>
diff --git a/openmeetings-web/src/test/jetty/jetty.xml 
b/openmeetings-web/src/test/jetty/jetty.xml
new file mode 100644
index 0000000..edaeb72
--- /dev/null
+++ b/openmeetings-web/src/test/jetty/jetty.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" 
"http://www.eclipse.org/jetty/configure_9_0.dtd";>
+<!--
+   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.
+-->
+<!-- ============================================================= -->
+<!-- Configure a HTTP connector.                                  -->
+<!-- ============================================================= -->
+<Configure>
+       <New id="httpConfig" class="org.eclipse.jetty.server.HttpConfiguration">
+               <Set name="secureScheme">https</Set>
+               <Set name="securePort">
+                       <Property name="jetty.secure.port" default="8443" />
+               </Set>
+               <Set name="outputBufferSize">32768</Set>
+               <Set name="requestHeaderSize">8192</Set>
+               <Set name="responseHeaderSize">8192</Set>
+               <Set name="sendServerVersion">true</Set>
+               <Set name="sendDateHeader">false</Set>
+               <Set name="headerCacheSize">512</Set>
+
+               <!-- Uncomment to enable handling of X-Forwarded- style headers 
<Call name="addCustomizer"> -->
+               <!-- <Arg><New 
class="org.eclipse.jetty.server.ForwardedRequestCustomizer"/></Arg> -->
+               <!-- </Call> -->
+       </New>
+</Configure>
diff --git a/pom.xml b/pom.xml
index a03b2c6..bbc69c9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -33,7 +33,7 @@
        <properties>
                
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
                <maven.build.timestamp.format>yyyy/MM/dd 
HH:mm</maven.build.timestamp.format>
-               <wicket.mode>DEPLOYMENT</wicket.mode>
+               <wicket.configuration>DEPLOYMENT</wicket.configuration>
                <om.quick.build>false</om.quick.build>
                <db>derby</db>
                <jdk.version>1.8</jdk.version>
@@ -74,6 +74,9 @@
                <src.pack.skip>false</src.pack.skip>
                <derby.version>10.14.1.0</derby.version>
                <commons-lang3.version>3.7</commons-lang3.version>
+               <slf4j.version>1.7.25</slf4j.version>
+               <logback.version>1.2.3</logback.version>
+               <jetty9.version>9.4.8.v20171121</jetty9.version>
                <license.excludedScopes>test</license.excludedScopes>
                <!--  URL of the ASF SonarQube server  -->
                
<sonar.host.url>https://builds.apache.org/analysis</sonar.host.url>
@@ -109,7 +112,7 @@
                        <properties>
                                <maven.test.skip>true</maven.test.skip>
                                <om.quick.build>true</om.quick.build>
-                               <wicket.mode>DEVELOPMENT</wicket.mode>
+                               
<wicket.configuration>DEVELOPMENT</wicket.configuration>
                                <src.pack.skip>true</src.pack.skip>
                        </properties>
                </profile>
@@ -776,9 +779,9 @@
                                </exclusions>
                        </dependency>
                        <dependency>
-                               <groupId>org.apache.tomcat</groupId>
-                               <artifactId>tomcat-servlet-api</artifactId>
-                               <version>${tomcat.version}</version>
+                               <groupId>javax.servlet</groupId>
+                               <artifactId>javax.servlet-api</artifactId>
+                               <version>3.1.0</version>
                                <scope>provided</scope>
                        </dependency>
                        <dependency>
@@ -791,6 +794,21 @@
                                <artifactId>commons-text</artifactId>
                                <version>1.2</version>
                        </dependency>
+                       <dependency>
+                               <groupId>org.slf4j</groupId>
+                               <artifactId>slf4j-api</artifactId>
+                               <version>${slf4j.version}</version>
+                       </dependency>
+                       <dependency>
+                               <groupId>org.slf4j</groupId>
+                               <artifactId>log4j-over-slf4j</artifactId>
+                               <version>${slf4j.version}</version>
+                       </dependency>
+                       <dependency>
+                               <groupId>ch.qos.logback</groupId>
+                               <artifactId>logback-classic</artifactId>
+                               <version>${logback.version}</version>
+                       </dependency>
                </dependencies>
        </dependencyManagement>
        <dependencies>
@@ -802,18 +820,13 @@
                </dependency>
                <dependency>
                        <groupId>org.springframework</groupId>
-                       <artifactId>spring-core</artifactId>
-                       <scope>test</scope>
-               </dependency>
-               <dependency>
-                       <groupId>org.springframework</groupId>
                        <artifactId>spring-test</artifactId>
                        <version>${spring.version}</version>
                        <scope>test</scope>
                </dependency>
                <dependency>
-                       <groupId>org.apache.tomcat</groupId>
-                       <artifactId>tomcat-servlet-api</artifactId>
+                       <groupId>javax.servlet</groupId>
+                       <artifactId>javax.servlet-api</artifactId>
                </dependency>
        </dependencies>
        <build>

-- 
To stop receiving notification emails like this one, please contact
[email protected].

Reply via email to