You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2017/07/08 14:38:56 UTC

[2/2] openmeetings git commit: [OPENMEETINGS-1665] dublicated beans are removed

[OPENMEETINGS-1665] dublicated beans are removed


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/4850a819
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/4850a819
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/4850a819

Branch: refs/heads/3.3.x
Commit: 4850a8191830606268a5c6e0ca7d90af9ba3ee85
Parents: e77cd1d
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Sat Jul 8 21:38:44 2017 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
Committed: Sat Jul 8 21:38:44 2017 +0700

----------------------------------------------------------------------
 .../org/apache/openmeetings/IApplication.java   |  1 +
 .../apache/openmeetings/db/dto/basic/Info.java  |  7 ++
 .../openmeetings/db/util/TimezoneUtil.java      |  9 ++-
 openmeetings-util/pom.xml                       | 17 +++++
 .../org/apache/openmeetings/util/Version.java   | 30 ++++----
 .../apache/openmeetings/util/version.properties | 21 ++++++
 openmeetings-web/pom.xml                        |  7 ++
 .../openmeetings/web/app/Application.java       |  5 ++
 .../WEB-INF/classes/applicationContext.xml      | 48 +-----------
 .../main/webapp/WEB-INF/classes/cxf-servlet.xml | 74 +++++++++++++++++++
 .../src/main/webapp/WEB-INF/web.xml             | 55 +++++++-------
 .../test/AbstractJUnitDefaults.java             |  6 +-
 .../test/invitiation/TestInvitation.java        |  7 +-
 .../openmeetings/test/user/TestUserContact.java |  4 +-
 .../openmeetings/test/user/TestUserGroup.java   |  2 +-
 .../test/webservice/AbstractWebServiceTest.java | 46 +++++++++++-
 .../test/webservice/TestCalendarService.java    | 10 +--
 .../test/webservice/TestFileService.java        | 23 +-----
 .../test/webservice/TestGroupService.java       | 20 -----
 .../test/webservice/TestRecordingService.java   |  7 +-
 .../test/webservice/TestUserService.java        | 22 +-----
 .../openmeetings/webservice/BaseWebService.java | 63 ++++++++++++++++
 .../webservice/CalendarWebService.java          | 70 ++++++++----------
 .../webservice/ErrorWebService.java             | 13 +---
 .../openmeetings/webservice/FileWebService.java | 77 +++++++++----------
 .../webservice/GroupWebService.java             | 66 ++++++++---------
 .../webservice/RecordingWebService.java         | 54 ++++++--------
 .../openmeetings/webservice/RoomWebService.java | 78 ++++++++------------
 .../webservice/ServerWebService.java            | 49 +++++-------
 .../openmeetings/webservice/UserWebService.java | 66 ++++++++---------
 pom.xml                                         | 27 -------
 31 files changed, 506 insertions(+), 478 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4850a819/openmeetings-db/src/main/java/org/apache/openmeetings/IApplication.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/IApplication.java b/openmeetings-db/src/main/java/org/apache/openmeetings/IApplication.java
index 49e3385..809f471 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/IApplication.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/IApplication.java
@@ -32,6 +32,7 @@ import org.apache.wicket.request.mapper.parameter.PageParameters;
 
 public interface IApplication {
 	<T> T getOmBean(Class<T> clazz);
+	<T> T _getOmBean(Class<T> clazz);
 	ServletContext getServletContext();
 	IRequestMapper getRootRequestMapper();
 	Supplier<IExceptionMapper> getExceptionMapperProvider();

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4850a819/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/Info.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/Info.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/Info.java
index 3b585bf..a32dd66 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/Info.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/Info.java
@@ -24,6 +24,7 @@ import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlRootElement;
 
+import org.apache.openmeetings.util.InitializationContainer;
 import org.apache.openmeetings.util.Version;
 
 @XmlRootElement
@@ -33,11 +34,13 @@ public class Info implements Serializable {
 	private final String version;
 	private final String revision;
 	private final String buildDate;
+	private final boolean inited;
 
 	public Info() {
 		version = Version.getVersion();
 		revision = Version.getRevision();
 		buildDate = Version.getBuildDate();
+		inited = InitializationContainer.initComplete;
 	}
 
 	public String getVersion() {
@@ -51,4 +54,8 @@ public class Info implements Serializable {
 	public String getBuildDate() {
 		return buildDate;
 	}
+
+	public boolean isInited() {
+		return inited;
+	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4850a819/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/TimezoneUtil.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/TimezoneUtil.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/TimezoneUtil.java
index f2d185c..3898589 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/TimezoneUtil.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/TimezoneUtil.java
@@ -25,6 +25,7 @@ import java.util.TimeZone;
 
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.entity.user.User;
+import org.apache.wicket.util.string.Strings;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -39,18 +40,18 @@ public class TimezoneUtil {
 	 * Parameters: ID - the ID for a TimeZone, either an abbreviation such as "PST", a full name such as
 	 * "America/Los_Angeles", or a custom ID such as "GMT-8:00". Note that the support of abbreviations is for JDK 1.1.x
 	 * compatibility only and full names should be used.
-	 * 
+	 *
 	 * Returns: the specified TimeZone, or the GMT zone if the given ID cannot be understood. <br/>
 	 * <br/>
 	 * TODO: Fall-back mechanism and maybe a log output if the given timeZoneId is not found in the list of available
 	 * TimeZones of the current java.util.TimeZone package of the Java SDK the the user is running <br/>
-	 * 
+	 *
 	 * @param timeZoneId
 	 * @return
 	 */
 
 	public TimeZone getTimeZone(String timeZoneId) {
-		if (timeZoneId == null || timeZoneId.equals("")) {
+		if (Strings.isEmpty(timeZoneId)) {
 			return getDefaultTimeZone();
 		}
 
@@ -79,7 +80,7 @@ public class TimezoneUtil {
 
 	/**
 	 * Returns the timezone based on the user profile, if not return the timezone from the server
-	 * 
+	 *
 	 * @param user
 	 * @return
 	 */

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4850a819/openmeetings-util/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-util/pom.xml b/openmeetings-util/pom.xml
index 25f9748..2f5b428 100644
--- a/openmeetings-util/pom.xml
+++ b/openmeetings-util/pom.xml
@@ -41,7 +41,24 @@
 				<groupId>org.apache.felix</groupId>
 				<artifactId>maven-bundle-plugin</artifactId>
 			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-jar-plugin</artifactId>
+				<executions>
+					<execution>
+						<goals>
+							<goal>test-jar</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
 		</plugins>
+		<resources>
+			<resource>
+				<directory>src/main/resources</directory>
+				<filtering>true</filtering>
+			</resource>
+		</resources>
 	</build>
 	<profiles>
 		<profile>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4850a819/openmeetings-util/src/main/java/org/apache/openmeetings/util/Version.java
----------------------------------------------------------------------
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/Version.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/Version.java
index 7ad8c08..525fc38 100644
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/Version.java
+++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/Version.java
@@ -19,10 +19,7 @@
 package org.apache.openmeetings.util;
 
 import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.jar.Attributes;
-import java.util.jar.Manifest;
+import java.util.Properties;
 
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
@@ -33,38 +30,41 @@ public class Version {
 	private static String version = null;
 	private static String revision = null;
 	private static String buildDate = null;
-	
-	private static Attributes getAttributes() throws MalformedURLException, IOException {
-		String jarUrl = Version.class.getResource(Version.class.getSimpleName() + ".class").toString();
-		return new Manifest(new URL(jarUrl.substring(0, jarUrl.indexOf('!')) + "!/META-INF/MANIFEST.MF").openStream()).getMainAttributes();
+
+	private static void init() throws IOException {
+		Properties props = new Properties();
+		props.load(Version.class.getResourceAsStream("version.properties"));
+		version = props.getProperty("version");
+		revision = props.getProperty("revision");
+		buildDate = props.getProperty("date");
 	}
-	
+
 	public static String getVersion() {
 		if (version == null) {
 			try {
-				version = getAttributes().getValue("Product-Version");
+				init();
 			} catch (Exception e) {
 				log.error("Error", e);
 			}
 		}
 		return version;
 	}
-	
+
 	public static String getRevision() {
 		if (revision == null) {
 			try {
-				revision = getAttributes().getValue("Git-Revision");
+				init();
 			} catch (Exception e) {
 				log.error("Error", e);
 			}
 		}
 		return revision;
 	}
-	
+
 	public static String getBuildDate() {
 		if (buildDate == null) {
 			try {
-				buildDate = getAttributes().getValue("Built-On");
+				init();
 			} catch (Exception e) {
 				log.error("Error", e);
 			}
@@ -85,7 +85,7 @@ public class Version {
 		}
 		sb.append("#\n");
 	}
-	
+
 	public static void logOMStarted() {
 		StringBuilder sb = new StringBuilder("\n");
 		getLine(sb, "", '#');

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4850a819/openmeetings-util/src/main/resources/org/apache/openmeetings/util/version.properties
----------------------------------------------------------------------
diff --git a/openmeetings-util/src/main/resources/org/apache/openmeetings/util/version.properties b/openmeetings-util/src/main/resources/org/apache/openmeetings/util/version.properties
new file mode 100644
index 0000000..a907b98
--- /dev/null
+++ b/openmeetings-util/src/main/resources/org/apache/openmeetings/util/version.properties
@@ -0,0 +1,21 @@
+################################################################################
+##
+##  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.
+##
+################################################################################
+version=${project.version}
+date=${maven.build.timestamp}
+revision=${buildNumber}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4850a819/openmeetings-web/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/pom.xml b/openmeetings-web/pom.xml
index d80de60..24ad1c8 100644
--- a/openmeetings-web/pom.xml
+++ b/openmeetings-web/pom.xml
@@ -483,6 +483,13 @@
 		</dependency>
 		<dependency>
 			<groupId>org.apache.openmeetings</groupId>
+			<artifactId>openmeetings-util</artifactId>
+			<version>${project.version}</version>
+			<type>test-jar</type>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.openmeetings</groupId>
 			<artifactId>openmeetings-core</artifactId>
 			<version>${project.version}</version>
 			<type>test-jar</type>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4850a819/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
----------------------------------------------------------------------
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 2a5e608..48b1b56 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
@@ -607,6 +607,11 @@ public class Application extends AuthenticatedWebApplication implements IApplica
 		return Application.getBean(clazz);
 	}
 
+	@Override
+	public <T> T _getOmBean(Class<T> clazz) { //FIXME hack for web services support (should be in separate module for now
+		return Application.get()._getBean(clazz);
+	}
+
 	public static String getContactsLink() {
 		return PROFILE_MESSAGES.getLink();
 	}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4850a819/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml b/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml
index c99613a..7f2bfdc 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml
@@ -22,15 +22,11 @@
 		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 		xmlns:tx="http://www.springframework.org/schema/tx"
 		xmlns:context="http://www.springframework.org/schema/context"
-		xmlns:jaxrs="http://cxf.apache.org/jaxrs"
-		xmlns:jaxws="http://cxf.apache.org/jaxws"
 		xmlns:p="http://www.springframework.org/schema/p"
 		xsi:schemaLocation="
 			http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
 			http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
-			http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
-			http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
-			http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd"
+			http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"
 	>
 	<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
 		<property name="persistenceUnitName" value="openmeetings" />
@@ -235,46 +231,4 @@
 		<property name="maxPoolSize" value="10" />
 		<property name="queueCapacity" value="25" />
 	</bean>
-
-	<!-- CXF beans -->
-	<bean id="calendarWebService" class="org.apache.openmeetings.webservice.CalendarWebService" />
-	<bean id="errorWebService" class="org.apache.openmeetings.webservice.ErrorWebService" />
-	<bean id="fileWebService" class="org.apache.openmeetings.webservice.FileWebService" />
-	<bean id="groupWebService" class="org.apache.openmeetings.webservice.GroupWebService" />
-	<bean id="infoWebService" class="org.apache.openmeetings.webservice.InfoWebService" />
-	<bean id="recordWebService" class="org.apache.openmeetings.webservice.RecordingWebService" />
-	<bean id="roomWebService" class="org.apache.openmeetings.webservice.RoomWebService" />
-	<bean id="serverWebService" class="org.apache.openmeetings.webservice.ServerWebService" />
-	<bean id="userWebService" class="org.apache.openmeetings.webservice.UserWebService" />
-	<bean id="netTestWebService" class="org.apache.openmeetings.webservice.NetTestWebService" />
-	
-	<!-- (writeXsiType=false) -->
-	<jaxrs:server id="server" address="/">
-		<jaxrs:serviceBeans>
-			<ref bean="calendarWebService"/>
-			<ref bean="errorWebService"/>
-			<ref bean="fileWebService"/>
-			<ref bean="groupWebService"/>
-			<ref bean="infoWebService"/>
-			<ref bean="recordWebService"/>
-			<ref bean="roomWebService"/>
-			<ref bean="serverWebService"/>
-			<ref bean="userWebService"/>
-			<ref bean="netTestWebService"/> <!-- JaxRs only -->
-		</jaxrs:serviceBeans>
-		<jaxrs:providers>
-			<bean id="appDtoMessageBodyWriter" class="org.apache.openmeetings.webservice.util.AppointmentMessageBodyWriter" />
-			<bean id="appDtoListMessageBodyWriter" class="org.apache.openmeetings.webservice.util.AppointmentListMessageBodyWriter" />
-			<bean id="omParamProvider" class="org.apache.openmeetings.webservice.util.OmParamConverterProvider"/>
-		</jaxrs:providers>
-	</jaxrs:server>
-	<jaxws:endpoint id="calendarServiceWS" address="/CalendarService" implementor="#calendarWebService"/>
-	<jaxws:endpoint id="errorServiceWS" address="/ErrorService" implementor="#errorWebService" />
-	<jaxws:endpoint id="groupServiceWS" address="/GroupService" implementor="#groupWebService" />
-	<jaxws:endpoint id="infoServiceWS" address="/InfoService" implementor="#infoWebService" />
-	<jaxws:endpoint id="fileServiceWS" address="/FileService" implementor="#fileWebService" />
-	<jaxws:endpoint id="recordServiceWS" address="/RecordService" implementor="#recordWebService" />
-	<jaxws:endpoint id="roomServiceWS" address="/RoomService" implementor="#roomWebService" />
-	<jaxws:endpoint id="serverServiceWS" address="/ServerService" implementor="#serverWebService" />
-	<jaxws:endpoint id="userServiceWS" address="/UserService" implementor="#userWebService" />
 </beans>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4850a819/openmeetings-web/src/main/webapp/WEB-INF/classes/cxf-servlet.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/classes/cxf-servlet.xml b/openmeetings-web/src/main/webapp/WEB-INF/classes/cxf-servlet.xml
new file mode 100644
index 0000000..3fc11be
--- /dev/null
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/cxf-servlet.xml
@@ -0,0 +1,74 @@
+<?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"
+		xmlns:jaxrs="http://cxf.apache.org/jaxrs"
+		xmlns:jaxws="http://cxf.apache.org/jaxws"
+		xsi:schemaLocation="
+			http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
+			http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+			http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd"
+	>
+	<!-- CXF beans -->
+	<import resource="classpath:META-INF/cxf/cxf.xml" />
+	<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
+
+	<bean id="calendarWebService" class="org.apache.openmeetings.webservice.CalendarWebService" />
+	<bean id="errorWebService" class="org.apache.openmeetings.webservice.ErrorWebService" />
+	<bean id="fileWebService" class="org.apache.openmeetings.webservice.FileWebService" />
+	<bean id="groupWebService" class="org.apache.openmeetings.webservice.GroupWebService" />
+	<bean id="infoWebService" class="org.apache.openmeetings.webservice.InfoWebService" />
+	<bean id="recordWebService" class="org.apache.openmeetings.webservice.RecordingWebService" />
+	<bean id="roomWebService" class="org.apache.openmeetings.webservice.RoomWebService" />
+	<bean id="serverWebService" class="org.apache.openmeetings.webservice.ServerWebService" />
+	<bean id="userWebService" class="org.apache.openmeetings.webservice.UserWebService"/>
+	<bean id="netTestWebService" class="org.apache.openmeetings.webservice.NetTestWebService" />
+
+	<!-- (writeXsiType=false) -->
+	<jaxrs:server id="server" address="/">
+		<jaxrs:serviceBeans>
+			<ref bean="calendarWebService"/>
+			<ref bean="errorWebService"/>
+			<ref bean="fileWebService"/>
+			<ref bean="groupWebService"/>
+			<ref bean="infoWebService"/>
+			<ref bean="recordWebService"/>
+			<ref bean="roomWebService"/>
+			<ref bean="serverWebService"/>
+			<ref bean="userWebService"/>
+			<ref bean="netTestWebService"/> <!-- JaxRs only -->
+		</jaxrs:serviceBeans>
+		<jaxrs:providers>
+			<bean id="appDtoMessageBodyWriter" class="org.apache.openmeetings.webservice.util.AppointmentMessageBodyWriter" />
+			<bean id="appDtoListMessageBodyWriter" class="org.apache.openmeetings.webservice.util.AppointmentListMessageBodyWriter" />
+			<bean id="omParamProvider" class="org.apache.openmeetings.webservice.util.OmParamConverterProvider"/>
+		</jaxrs:providers>
+	</jaxrs:server>
+	<jaxws:endpoint id="calendarServiceWS" address="/CalendarService" implementor="#calendarWebService"/>
+	<jaxws:endpoint id="errorServiceWS" address="/ErrorService" implementor="#errorWebService" />
+	<jaxws:endpoint id="groupServiceWS" address="/GroupService" implementor="#groupWebService" />
+	<jaxws:endpoint id="infoServiceWS" address="/InfoService" implementor="#infoWebService" />
+	<jaxws:endpoint id="fileServiceWS" address="/FileService" implementor="#fileWebService" />
+	<jaxws:endpoint id="recordServiceWS" address="/RecordService" implementor="#recordWebService" />
+	<jaxws:endpoint id="roomServiceWS" address="/RoomService" implementor="#roomWebService" />
+	<jaxws:endpoint id="serverServiceWS" address="/ServerService" implementor="#serverWebService" />
+	<jaxws:endpoint id="userServiceWS" address="/UserService" implementor="#userWebService" />
+</beans>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4850a819/openmeetings-web/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/web.xml b/openmeetings-web/src/main/webapp/WEB-INF/web.xml
index 1e89d1a..fb83a38 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/web.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/web.xml
@@ -25,32 +25,28 @@
 		<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>
 
-	<servlet>
-		<servlet-name>CXFServlet</servlet-name>
-		<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
-		<init-param>
-			<param-name>config-location</param-name>
-			<param-value>classpath:applicationContext.xml</param-value>
-		</init-param>
-		<load-on-startup>1</load-on-startup>
-		<async-supported>true</async-supported>
-	</servlet>
-	<servlet-mapping>
-		<servlet-name>CXFServlet</servlet-name>
-		<url-pattern>/services/*</url-pattern>
-	</servlet-mapping>
-
 	<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>
@@ -77,19 +73,20 @@
 		<filter-name>OpenmeetingsApplication</filter-name>
 		<url-pattern>/*</url-pattern>
 	</filter-mapping>
-
-	<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>
+	<servlet>
+		<servlet-name>CXFServlet</servlet-name>
+		<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
+		<init-param>
+			<param-name>config-location</param-name>
+			<param-value>classpath:cxf-servlet.xml</param-value>
+		</init-param>
+		<load-on-startup>1</load-on-startup>
+		<async-supported>true</async-supported>
+	</servlet>
+	<servlet-mapping>
+		<servlet-name>CXFServlet</servlet-name>
+		<url-pattern>/services/*</url-pattern>
+	</servlet-mapping>
 
 	<!-- remove the following servlet tags if you want to disable remoting for this application -->
 	<servlet>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4850a819/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java
index cb301aa..b0c0a6c 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java
@@ -135,8 +135,8 @@ public abstract class AbstractJUnitDefaults extends AbstractSpringTest {
 		return getUser(UUID.randomUUID().toString());
 	}
 
-	protected String getRandomPass(String uuid) {
-		return "pass" + uuid;
+	protected String createPass() {
+		return "pass1_!@#$%_A";
 	}
 
 	public User getUser(String uuid) throws Exception {
@@ -149,7 +149,7 @@ public abstract class AbstractJUnitDefaults extends AbstractSpringTest {
 		u.getAddress().setEmail(String.format("email%s@local", uuid));
 		u.setRights(UserDao.getDefaultRights());
 		u.setTimeZoneId("Asia/Bangkok");
-		u.updatePassword(cfgDao, getRandomPass(uuid));
+		u.updatePassword(cfgDao, createPass());
 		u.setLanguageId(1L);
 		return u;
 	}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4850a819/openmeetings-web/src/test/java/org/apache/openmeetings/test/invitiation/TestInvitation.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/invitiation/TestInvitation.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/invitiation/TestInvitation.java
index 2c49435..2c97de5 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/invitiation/TestInvitation.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/invitiation/TestInvitation.java
@@ -24,14 +24,12 @@ import java.time.LocalDateTime;
 
 import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
-import org.apache.openmeetings.db.dto.basic.ServiceResult;
 import org.apache.openmeetings.db.entity.room.Invitation;
 import org.apache.openmeetings.db.entity.room.Invitation.MessageType;
 import org.apache.openmeetings.db.entity.room.Invitation.Valid;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.service.room.InvitationManager;
 import org.apache.openmeetings.test.AbstractWicketTester;
-import org.apache.openmeetings.webservice.UserWebService;
 import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 
@@ -39,16 +37,13 @@ public class TestInvitation extends AbstractWicketTester {
 	@Autowired
 	private InvitationManager invitationManager;
 	@Autowired
-	private UserWebService userWebService;
-	@Autowired
 	private UserDao userDao;
 	@Autowired
 	private RoomDao roomDao;
 
 	@Test
 	public void testSendInvitationLink() throws Exception {
-		ServiceResult result = userWebService.login(username, userpass);
-		User us = userDao.get(result.getCode());
+		User us = userDao.getByLogin(username, User.Type.user, null);
 
 		LocalDateTime from = LocalDateTime.now().plusDays(1).withHour(12).withMinute(0).withSecond(0);
 		User invitee = userDao.getContact("sebawagner@apache.org", "Testname", "Testlastname", us.getId());

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4850a819/openmeetings-web/src/test/java/org/apache/openmeetings/test/user/TestUserContact.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/user/TestUserContact.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/user/TestUserContact.java
index 0cce759..a313612 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/user/TestUserContact.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/user/TestUserContact.java
@@ -52,7 +52,7 @@ public class TestUserContact extends AbstractWicketTester {
 		User u = getUser(uuid);
 		u.getGroupUsers().add(new GroupUser(groupDao.get(1L), u));
 		u = userDao.update(u, null);
-		assertTrue("Password should be set as expected", userDao.verifyPassword(u.getId(), getRandomPass(uuid)));
+		assertTrue("Password should be set as expected", userDao.verifyPassword(u.getId(), createPass()));
 
 		User u1 = userDao.get(u.getId());
 		assertNotNull("Just created user should not be null", u1);
@@ -64,7 +64,7 @@ public class TestUserContact extends AbstractWicketTester {
 	public void testCreateUser() throws Exception {
 		String uuid = UUID.randomUUID().toString();
 		User u = createUser(uuid);
-		assertTrue("Password should be set as expected", userDao.verifyPassword(u.getId(), getRandomPass(uuid)));
+		assertTrue("Password should be set as expected", userDao.verifyPassword(u.getId(), createPass()));
 	}
 
 	@Test

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4850a819/openmeetings-web/src/test/java/org/apache/openmeetings/test/user/TestUserGroup.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/user/TestUserGroup.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/user/TestUserGroup.java
index e084165..a7c36b6 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/user/TestUserGroup.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/user/TestUserGroup.java
@@ -87,7 +87,7 @@ public class TestUserGroup extends AbstractJUnitDefaults {
 		assertNotNull("User successfully created", u.getId());
 		checkEmptyGroup("dao.get()", userDao.get(u.getId()));
 		try {
-			checkEmptyGroup("dao.login()", userDao.login(u.getAddress().getEmail(), getRandomPass(uuid)));
+			checkEmptyGroup("dao.login()", userDao.login(u.getAddress().getEmail(), createPass()));
 			fail("User with no Group is unable to login");
 		} catch (OmException e) {
 			assertTrue("Expected Om Exception", "No Group assigned to user".equals(e.getMessage()));

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4850a819/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/AbstractWebServiceTest.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/AbstractWebServiceTest.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/AbstractWebServiceTest.java
index b649613..047ac58 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/AbstractWebServiceTest.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/AbstractWebServiceTest.java
@@ -18,8 +18,10 @@
  */
 package org.apache.openmeetings.test.webservice;
 
+import static org.apache.openmeetings.db.util.ApplicationHelper.getWicketTester;
 import static org.apache.openmeetings.util.OmFileHelper.getOmHome;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
 
 import java.io.File;
 import java.nio.file.Files;
@@ -29,11 +31,18 @@ import java.util.UUID;
 import org.apache.catalina.LifecycleState;
 import org.apache.catalina.startup.Tomcat;
 import org.apache.cxf.jaxrs.client.WebClient;
+import org.apache.cxf.transports.http.configuration.HTTPClientPolicy;
 import org.apache.openmeetings.db.dto.basic.ServiceResult;
 import org.apache.openmeetings.db.dto.basic.ServiceResult.Type;
+import org.apache.openmeetings.db.dto.user.UserDTO;
+import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.test.AbstractJUnitDefaults;
+import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.webservice.util.AppointmentMessageBodyReader;
+import org.apache.wicket.util.tester.WicketTester;
+import org.junit.After;
 import org.junit.AfterClass;
+import org.junit.Assert;
 import org.junit.BeforeClass;
 
 public class AbstractWebServiceTest extends AbstractJUnitDefaults {
@@ -41,10 +50,17 @@ public class AbstractWebServiceTest extends AbstractJUnitDefaults {
 	public final static String CONTEXT = "/openmeetings";
 	public final static String BASE_SERVICES_URL = "http://localhost:8080" + CONTEXT + "/services";
 	public final static String USER_SERVICE_URL = BASE_SERVICES_URL + "/user";
+	public final static String INFO_SERVICE_URL = BASE_SERVICES_URL + "/info";
+	public final static long TIMEOUT = 5 * 60 * 1000;
+	protected WicketTester tester;
 
 	public static WebClient getClient(String url) {
-		return WebClient.create(url, Arrays.asList(new AppointmentMessageBodyReader()))
+		WebClient c = WebClient.create(url, Arrays.asList(new AppointmentMessageBodyReader()))
 				.accept("application/json").type("application/json");
+		HTTPClientPolicy p = WebClient.getConfig(c).getHttpConduit().getClient();
+		p.setConnectionTimeout(TIMEOUT);
+		p.setReceiveTimeout(TIMEOUT);
+		return c;
 	}
 
 	public static ServiceResult login() {
@@ -76,6 +92,21 @@ public class AbstractWebServiceTest extends AbstractJUnitDefaults {
 		tomcat.start();
 	}
 
+	@Override
+	public void setUp() throws Exception {
+		super.setUp();
+		tester = getWicketTester();
+		assertNotNull("Web session should not be null", WebSession.get());
+	}
+
+	@After
+	public void tearDown() {
+		if (tester != null) {
+			//can be null in case exception on initialization
+			tester.destroy();
+		}
+	}
+
 	@AfterClass
 	public static void destroy() throws Exception {
 		if (tomcat.getServer() != null && tomcat.getServer().getState() != LifecycleState.DESTROYED) {
@@ -85,4 +116,17 @@ public class AbstractWebServiceTest extends AbstractJUnitDefaults {
 			tomcat.destroy();
 		}
 	}
+
+	public void webCreateUser(User u) {
+		ServiceResult r = login();
+		UserDTO dto = new UserDTO(u);
+		dto.setPassword(createPass());
+		UserDTO user = getClient(USER_SERVICE_URL)
+				.path("/")
+				.query("sid", r.getMessage())
+				.query("user", dto.toString())
+				.query("confirm", false).post(null, UserDTO.class);
+		Assert.assertNotNull(user.getId());
+		u.setId(user.getId());
+	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4850a819/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
index 54170fb..8af988b 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
@@ -69,8 +69,8 @@ public class TestCalendarService extends AbstractWebServiceTest {
 		String uuid = UUID.randomUUID().toString();
 		User u = getUser(uuid);
 		u.getGroupUsers().add(new GroupUser(groupDao.get(1L), u));
-		u = createUser(u);
-		ServiceResult sr = login(u.getLogin(), getRandomPass(uuid));
+		webCreateUser(u);
+		ServiceResult sr = login(u.getLogin(), createPass());
 
 		Date start = new Date();
 		Appointment a = createAppointment(getAppointment(u, r, start, new Date(start.getTime() + ONE_HOUR)));
@@ -131,8 +131,8 @@ public class TestCalendarService extends AbstractWebServiceTest {
 		String uuid = UUID.randomUUID().toString();
 		User u = getUser(uuid);
 		u.getGroupUsers().add(new GroupUser(groupDao.get(1L), u));
-		u = createUser(u);
-		ServiceResult sr = login(u.getLogin(), getRandomPass(uuid));
+		webCreateUser(u);
+		ServiceResult sr = login(u.getLogin(), createPass());
 		return sr.getMessage();
 	}
 
@@ -176,7 +176,7 @@ public class TestCalendarService extends AbstractWebServiceTest {
 		User u = getUser(uuid);
 		u.getGroupUsers().add(new GroupUser(groupDao.get(1L), u));
 		u = createUser(u);
-		ServiceResult sr = login(u.getLogin(), getRandomPass(uuid));
+		ServiceResult sr = login(u.getLogin(), createPass());
 
 		Response resp = getClient(CALENDAR_SERVICE_URL)
 				.path("/")

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4850a819/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestFileService.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestFileService.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestFileService.java
index 400d1cd..4816c9c 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestFileService.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestFileService.java
@@ -18,7 +18,6 @@
  */
 package org.apache.openmeetings.test.webservice;
 
-import static org.apache.openmeetings.db.util.ApplicationHelper.getWicketTester;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 
@@ -39,23 +38,15 @@ import org.apache.cxf.jaxrs.ext.multipart.Attachment;
 import org.apache.openmeetings.db.dto.basic.ServiceResult;
 import org.apache.openmeetings.db.dto.file.FileExplorerItemDTO;
 import org.apache.openmeetings.db.entity.file.FileItem;
-import org.apache.openmeetings.web.app.WebSession;
-import org.apache.wicket.util.tester.WicketTester;
-import org.junit.After;
+import org.apache.openmeetings.util.NonJenkinsTests;
 import org.junit.Test;
+import org.junit.experimental.categories.Category;
 
 public class TestFileService extends AbstractWebServiceTest {
 	public final static String FILE_SERVICE_URL = BASE_SERVICES_URL + "/file";
-	protected WicketTester tester;
-
-	@Override
-	public void setUp() throws Exception {
-		super.setUp();
-		tester = getWicketTester();
-		assertNotNull("Web session should not be null", WebSession.get());
-	}
 
 	@Test
+	@Category(NonJenkinsTests.class)
 	public void addFileTest() throws IOException {
 		ServiceResult r = login();
 
@@ -92,12 +83,4 @@ public class TestFileService extends AbstractWebServiceTest {
 			}
 		}
 	}
-
-	@After
-	public void tearDown() {
-		if (tester != null) {
-			//can be null in case exception on initialization
-			tester.destroy();
-		}
-	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4850a819/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestGroupService.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestGroupService.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestGroupService.java
index c96356c..7ace9ee 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestGroupService.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestGroupService.java
@@ -18,7 +18,6 @@
  */
 package org.apache.openmeetings.test.webservice;
 
-import static org.apache.openmeetings.db.util.ApplicationHelper.getWicketTester;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 
@@ -26,22 +25,11 @@ import javax.ws.rs.core.Response;
 
 import org.apache.openmeetings.db.dto.basic.ServiceResult;
 import org.apache.openmeetings.db.dto.basic.ServiceResult.Type;
-import org.apache.openmeetings.web.app.WebSession;
-import org.apache.wicket.util.tester.WicketTester;
-import org.junit.After;
 import org.junit.Test;
 
 public class TestGroupService extends AbstractWebServiceTest {
-	protected WicketTester tester;
 	public final static String GROUP_SERVICE_URL = BASE_SERVICES_URL + "/group";
 
-	@Override
-	public void setUp() throws Exception {
-		super.setUp();
-		tester = getWicketTester();
-		assertNotNull("Web session should not be null", WebSession.get());
-	}
-
 	@Test
 	public void putTest() {
 		ServiceResult r = login();
@@ -76,12 +64,4 @@ public class TestGroupService extends AbstractWebServiceTest {
 			assertEquals("OM Call should be successful", r1.getType(), Type.SUCCESS.name());
 		}
 	}
-
-	@After
-	public void tearDown() {
-		if (tester != null) {
-			//can be null in case exception on initialization
-			tester.destroy();
-		}
-	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4850a819/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestRecordingService.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestRecordingService.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestRecordingService.java
index a6202ce..da11098 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestRecordingService.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestRecordingService.java
@@ -26,7 +26,6 @@ import java.util.Collection;
 import java.util.UUID;
 
 import org.apache.openmeetings.db.dao.record.RecordingDao;
-import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.dto.basic.ServiceResult;
 import org.apache.openmeetings.db.dto.record.RecordingDTO;
 import org.apache.openmeetings.db.entity.record.Recording;
@@ -39,18 +38,16 @@ public class TestRecordingService extends AbstractWebServiceTest {
 	private final static String UNIT_TEST_GROUP = "om_unit_tests";
 	@Autowired
 	private RecordingDao recordingDao;
-	@Autowired
-	private UserDao userDao;
 
 	private User getExternalUser() throws Exception {
 		String uuid = UUID.randomUUID().toString();
 		User u = getUser(uuid);
 		u.setExternalType(UNIT_TEST_GROUP);
 		u.setExternalId(uuid);
-		u = userDao.update(u, null);
+		webCreateUser(u);
 		return u;
 	}
-	
+
 	@Test
 	public void testExternal() throws Exception {
 		User u = getExternalUser();

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4850a819/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java
index e50bdf5..d091db7 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java
@@ -18,7 +18,6 @@
  */
 package org.apache.openmeetings.test.webservice;
 
-import static org.apache.openmeetings.db.util.ApplicationHelper.getWicketTester;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
@@ -39,20 +38,9 @@ import org.apache.openmeetings.db.dto.user.UserDTO;
 import org.apache.openmeetings.db.entity.user.Address;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.wicket.util.string.StringValue;
-import org.apache.wicket.util.tester.WicketTester;
-import org.junit.After;
 import org.junit.Test;
 
 public class TestUserService extends AbstractWebServiceTest {
-	protected WicketTester tester;
-
-	@Override
-	public void setUp() throws Exception {
-		super.setUp();
-		tester = getWicketTester();
-		assertNotNull("Web session should not be null", WebSession.get());
-	}
-
 	@Test
 	public void invalidLoginTest() {
 		ServiceResult r = loginNoCheck("invalid-user", "bad pass");
@@ -97,7 +85,7 @@ public class TestUserService extends AbstractWebServiceTest {
 	public void addUserTest() {
 		Random rnd = new Random();
 		String[] tzList = TimeZone.getAvailableIDs();
-		String tz = tzList[rnd.nextInt(tzList.length)];
+		String tz = TimeZone.getTimeZone(tzList[rnd.nextInt(tzList.length)]).getID();
 		ServiceResult r = login();
 		UserDTO u = new UserDTO();
 		String uuid = UUID.randomUUID().toString();
@@ -121,12 +109,4 @@ public class TestUserService extends AbstractWebServiceTest {
 		assertEquals("OM Call should be successful", u.getLogin(), user.getLogin());
 		assertEquals("OM Call should be successful", tz, user.getTimeZoneId());
 	}
-
-	@After
-	public void tearDown() {
-		if (tester != null) {
-			//can be null in case exception on initialization
-			tester.destroy();
-		}
-	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4850a819/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/BaseWebService.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/BaseWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/BaseWebService.java
new file mode 100644
index 0000000..0f663db
--- /dev/null
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/BaseWebService.java
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.webservice;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.wicketApplicationName;
+
+import java.util.Set;
+
+import org.apache.openmeetings.IApplication;
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.server.Sessiondata;
+import org.apache.openmeetings.db.entity.user.User.Right;
+import org.apache.wicket.Application;
+
+public abstract class BaseWebService {
+	static <T> T getBean(Class<T> clazz) {
+		IApplication iapp = (IApplication)Application.get(wicketApplicationName);
+		return iapp._getOmBean(clazz);
+	}
+
+	static SessiondataDao getSessionDao() {
+		return getBean(SessiondataDao.class);
+	}
+
+	static Sessiondata check(String sid) {
+		return getSessionDao().check(sid);
+	}
+
+	static Set<Right> getRights(String sid) {
+		Sessiondata sd = check(sid);
+		return getRights(sd.getUserId());
+	}
+
+	static UserDao getUserDao() {
+		return getBean(UserDao.class);
+	}
+
+	static RoomDao getRoomDao() {
+		return getBean(RoomDao.class);
+	}
+
+	static Set<Right> getRights(Long id) {
+		return getUserDao().getRights(id);
+	}
+}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4850a819/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
index d52554e..aca0b44 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
@@ -41,8 +41,6 @@ import javax.ws.rs.core.MediaType;
 
 import org.apache.cxf.feature.Features;
 import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
-import org.apache.openmeetings.db.dao.room.RoomDao;
-import org.apache.openmeetings.db.dao.server.SessiondataDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.dto.basic.ServiceResult;
 import org.apache.openmeetings.db.dto.basic.ServiceResult.Type;
@@ -55,7 +53,6 @@ import org.apache.openmeetings.db.util.AuthLevelUtil;
 import org.apache.openmeetings.webservice.error.ServiceException;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
 
 /**
  * CalendarService contains methods to create, edit delete calendar meetings
@@ -67,18 +64,12 @@ import org.springframework.beans.factory.annotation.Autowired;
 @Features(features = "org.apache.cxf.feature.LoggingFeature")
 @Produces({MediaType.APPLICATION_JSON})
 @Path("/calendar")
-public class CalendarWebService {
+public class CalendarWebService extends BaseWebService {
 	private static final Logger log = Red5LoggerFactory.getLogger(CalendarWebService.class, webAppRootKey);
 
-	@Autowired
-	private AppointmentDao appointmentDao;
-	@Autowired
-	private SessiondataDao sessionDao;
-	@Autowired
-	private UserDao userDao;
-	@Autowired
-	private RoomDao roomDao;
-
+	private static AppointmentDao getDao() {
+		return getBean(AppointmentDao.class);
+	}
 	/**
 	 * Load appointments by a start / end range for the current SID
 	 *
@@ -101,9 +92,9 @@ public class CalendarWebService {
 	{
 		log.debug("range : startdate - " + start.getTime() + ", enddate - " + end.getTime());
 		try {
-			Sessiondata sd = sessionDao.check(sid);
-			if (AuthLevelUtil.hasUserLevel(userDao.getRights(sd.getUserId()))) {
-				return AppointmentDTO.list(appointmentDao.getInRange(sd.getUserId(), start.getTime(), end.getTime()));
+			Sessiondata sd = check(sid);
+			if (AuthLevelUtil.hasUserLevel(getRights(sd.getUserId()))) {
+				return AppointmentDTO.list(getDao().getInRange(sd.getUserId(), start.getTime(), end.getTime()));
 			} else {
 				throw new ServiceException("Insufficient permissions"); //TODO code -26
 			}
@@ -141,9 +132,8 @@ public class CalendarWebService {
 	{
 		log.debug("rangeForUser : startdate - " + start.getTime() + ", enddate - " + end.getTime());
 		try {
-			Sessiondata sd = sessionDao.check(sid);
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(sd.getUserId()))) {
-				return AppointmentDTO.list(appointmentDao.getInRange(userid, start.getTime(), end.getTime()));
+			if (AuthLevelUtil.hasWebServiceLevel(getRights(sid))) {
+				return AppointmentDTO.list(getDao().getInRange(userid, start.getTime(), end.getTime()));
 			} else {
 				throw new ServiceException("Insufficient permissions"); //TODO code -26
 			}
@@ -167,9 +157,9 @@ public class CalendarWebService {
 	@Path("/next")
 	public AppointmentDTO next(@QueryParam("sid") @WebParam(name="sid") String sid) throws ServiceException {
 		try {
-			Sessiondata sd = sessionDao.check(sid);
-			if (AuthLevelUtil.hasUserLevel(userDao.getRights(sd.getUserId()))) {
-				Appointment a = appointmentDao.getNext(sd.getUserId(), new Date());
+			Sessiondata sd = check(sid);
+			if (AuthLevelUtil.hasUserLevel(getRights(sd.getUserId()))) {
+				Appointment a = getDao().getNext(sd.getUserId(), new Date());
 				return a == null ? null : new AppointmentDTO(a);
 			} else {
 				throw new ServiceException("Insufficient permissions"); //TODO code -26
@@ -197,9 +187,8 @@ public class CalendarWebService {
 	@Path("/next/{userid}")
 	public AppointmentDTO nextForUser(@QueryParam("sid") @WebParam(name="sid") String sid, @PathParam("userid") @WebParam(name="userid") long userid) throws ServiceException {
 		try {
-			Sessiondata sd = sessionDao.check(sid);
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(sd.getUserId()))) {
-				Appointment a = appointmentDao.getNext(userid, new Date());
+			if (AuthLevelUtil.hasWebServiceLevel(getRights(sid))) {
+				Appointment a = getDao().getNext(userid, new Date());
 				return a == null ? null : new AppointmentDTO(a);
 			} else {
 				throw new ServiceException("Insufficient permissions"); //TODO code -26
@@ -225,9 +214,9 @@ public class CalendarWebService {
 	@Path("/room/{roomid}")
 	public AppointmentDTO getByRoom(@QueryParam("sid") @WebParam(name="sid") String sid, @PathParam("roomid") @WebParam(name="roomid") long roomid) throws ServiceException {
 		try {
-			Sessiondata sd = sessionDao.check(sid);
-			if (AuthLevelUtil.hasUserLevel(userDao.getRights(sd.getUserId()))) {
-				Appointment app = appointmentDao.getByRoom(sd.getUserId(), roomid);
+			Sessiondata sd = check(sid);
+			if (AuthLevelUtil.hasUserLevel(getRights(sd.getUserId()))) {
+				Appointment app = getDao().getByRoom(sd.getUserId(), roomid);
 				if (app != null) {
 					return new AppointmentDTO(app);
 				}
@@ -258,9 +247,9 @@ public class CalendarWebService {
 	@Path("/title/{title}")
 	public List<AppointmentDTO> getByTitle(@QueryParam("sid") @WebParam(name="sid") String sid, @PathParam("title") @WebParam(name="title") String title) throws ServiceException {
 		try {
-			Sessiondata sd = sessionDao.check(sid);
-			if (AuthLevelUtil.hasUserLevel(userDao.getRights(sd.getUserId()))) {
-				return AppointmentDTO.list(appointmentDao.searchAppointmentsByTitle(sd.getUserId(), title));
+			Sessiondata sd = check(sid);
+			if (AuthLevelUtil.hasUserLevel(getRights(sd.getUserId()))) {
+				return AppointmentDTO.list(getDao().searchAppointmentsByTitle(sd.getUserId(), title));
 			} else {
 				throw new ServiceException("Insufficient permissions"); //TODO code -26
 			}
@@ -291,7 +280,8 @@ public class CalendarWebService {
 		log.debug("save SID:" + sid);
 
 		try {
-			Sessiondata sd = sessionDao.check(sid);
+			UserDao userDao = getUserDao();
+			Sessiondata sd = check(sid);
 			log.debug("save userId:" + sd);
 			User u = userDao.get(sd.getUserId());
 			if (!AuthLevelUtil.hasWebServiceLevel(u.getRights())
@@ -304,15 +294,16 @@ public class CalendarWebService {
 			}
 			//TODO check if objects passed with IDs are correct
 			if (AuthLevelUtil.hasUserLevel(u.getRights())) {
-				Appointment a = appointment.get(userDao, appointmentDao, u);
+				AppointmentDao dao = getDao();
+				Appointment a = appointment.get(userDao, dao, u);
 				if (a.getRoom().getId() != null) {
 					if (a.getRoom().isAppointment()) {
 						a.getRoom().setIspublic(false);
 					} else {
-						a.setRoom(roomDao.get(a.getRoom().getId()));
+						a.setRoom(getRoomDao().get(a.getRoom().getId()));
 					}
 				}
-				return new AppointmentDTO(appointmentDao.update(a, u.getId()));
+				return new AppointmentDTO(dao.update(a, u.getId()));
 			} else {
 				log.error("save : wrong user level");
 				throw new ServiceException("Insufficient permissions"); //TODO code -26
@@ -346,10 +337,11 @@ public class CalendarWebService {
 	@Path("/{id}")
 	public ServiceResult delete(@QueryParam("sid") @WebParam(name="sid") String sid, @PathParam("id") @WebParam(name="id") Long id) throws ServiceException {
 		try {
-			Sessiondata sd = sessionDao.check(sid);
-			Set<Right> rights = userDao.getRights(sd.getUserId());
+			Sessiondata sd = check(sid);
+			Set<Right> rights = getRights(sd.getUserId());
 
-			Appointment a = appointmentDao.get(id);
+			AppointmentDao dao = getDao();
+			Appointment a = dao.get(id);
 			if (AuthLevelUtil.hasWebServiceLevel(rights) || AuthLevelUtil.hasAdminLevel(rights)) {
 				// fine
 			} else if (AuthLevelUtil.hasUserLevel(rights)) {
@@ -360,7 +352,7 @@ public class CalendarWebService {
 			} else {
 				throw new ServiceException("Not allowed to preform that action, Authenticate the SID first");
 			}
-			appointmentDao.delete(a, sd.getUserId());
+			dao.delete(a, sd.getUserId());
 
 			return new ServiceResult(id, "Deleted", Type.SUCCESS);
 		} catch (ServiceException err) {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4850a819/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/ErrorWebService.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/ErrorWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/ErrorWebService.java
index f5a0a1a..87a00db 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/ErrorWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/ErrorWebService.java
@@ -35,13 +35,11 @@ import javax.ws.rs.core.MediaType;
 import org.apache.cxf.feature.Features;
 import org.apache.openmeetings.db.dao.basic.ErrorDao;
 import org.apache.openmeetings.db.dao.label.LabelDao;
-import org.apache.openmeetings.db.dao.server.SessiondataDao;
 import org.apache.openmeetings.db.dto.basic.ServiceResult;
 import org.apache.openmeetings.db.entity.basic.ErrorValue;
 import org.apache.openmeetings.db.entity.server.Sessiondata;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
 
 /**
  *
@@ -54,14 +52,9 @@ import org.springframework.beans.factory.annotation.Autowired;
 @Features(features = "org.apache.cxf.feature.LoggingFeature")
 @Produces({MediaType.APPLICATION_JSON})
 @Path("/error")
-public class ErrorWebService {
+public class ErrorWebService extends BaseWebService {
 	private static final Logger log = Red5LoggerFactory.getLogger(ErrorWebService.class, webAppRootKey);
 
-	@Autowired
-	private ErrorDao errorDao;
-	@Autowired
-	private SessiondataDao sessionDao;
-
 	/**
 	 * loads an Error-Object. If a Method returns a negative Result, its an
 	 * Error-id, it needs a languageId to specify in which language you want to
@@ -81,7 +74,7 @@ public class ErrorWebService {
 	public ServiceResult get(@WebParam(name="id") @PathParam("id") long id, @WebParam(name="lang") @PathParam("lang") long lang) {
 		try {
 			if (id < 0) {
-				ErrorValue eValues = errorDao.get(-1 * id);
+				ErrorValue eValues = getBean(ErrorDao.class).get(-1 * id);
 				if (eValues != null) {
 					log.debug("eValues.getLabelId() = " + eValues.getLabelId());
 					log.debug("eValues.getErrorType() = " + eValues.getType());
@@ -105,7 +98,7 @@ public class ErrorWebService {
 	@Path("/report/")
 	public void report(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="message") @QueryParam("message") String message) {
 		if (sid != null && message != null) {
-			Sessiondata sd = sessionDao.check(sid);
+			Sessiondata sd = check(sid);
 			if (sd.getId() != null) {
 				log.error("[CLIENT MESSAGE] " + message);
 			}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4850a819/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java
index d4e8326..bcadbff 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java
@@ -44,8 +44,6 @@ import org.apache.cxf.feature.Features;
 import org.apache.cxf.jaxrs.ext.multipart.Multipart;
 import org.apache.openmeetings.core.data.file.FileProcessor;
 import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
-import org.apache.openmeetings.db.dao.server.SessiondataDao;
-import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.dto.basic.ServiceResult;
 import org.apache.openmeetings.db.dto.basic.ServiceResult.Type;
 import org.apache.openmeetings.db.dto.file.FileExplorerItemDTO;
@@ -58,7 +56,6 @@ import org.apache.openmeetings.util.process.ConverterProcessResultList;
 import org.apache.openmeetings.webservice.error.ServiceException;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
 
 /**
  *
@@ -72,17 +69,12 @@ import org.springframework.beans.factory.annotation.Autowired;
 @Features(features = "org.apache.cxf.feature.LoggingFeature")
 @Produces({MediaType.APPLICATION_JSON})
 @Path("/file")
-public class FileWebService {
+public class FileWebService extends BaseWebService {
 	private static final Logger log = Red5LoggerFactory.getLogger(FileWebService.class, webAppRootKey);
 
-	@Autowired
-	private SessiondataDao sessionDao;
-	@Autowired
-	private UserDao userDao;
-	@Autowired
-	private FileExplorerItemDao fileDao;
-	@Autowired
-	private FileProcessor fileProcessor;
+	private static FileExplorerItemDao getDao() {
+		return getBean(FileExplorerItemDao.class);
+	}
 
 	/**
 	 * deletes files or folders based on it id
@@ -98,18 +90,19 @@ public class FileWebService {
 	@Path("/{id}")
 	public ServiceResult delete(@QueryParam("sid") @WebParam(name="sid") String sid, @PathParam("id") @WebParam(name="id") Long id) throws ServiceException {
 		try {
-			Sessiondata sd = sessionDao.check(sid);
+			Sessiondata sd = check(sid);
 
-			FileExplorerItem f = fileDao.get(id);
+			FileExplorerItemDao dao = getDao();
+			FileExplorerItem f = dao.get(id);
 			if (f == null) {
 				return new ServiceResult(-1L, "Bad id", Type.ERROR);
 			}
 			Long userId = sd.getUserId();
-			Set<Right> rights = userDao.getRights(userId);
+			Set<Right> rights = getRights(userId);
 			if (AuthLevelUtil.hasWebServiceLevel(rights)
 				|| (AuthLevelUtil.hasUserLevel(rights) && userId.equals(f.getOwnerId())))
 			{
-				fileDao.delete(f);
+				dao.delete(f);
 				return new ServiceResult(id, "Deleted", Type.SUCCESS);
 			} else {
 				return NO_PERMISSION;
@@ -141,11 +134,10 @@ public class FileWebService {
 			)
 	{
 		try {
-			Sessiondata sd = sessionDao.check(sid);
-
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(sd.getUserId()))) {
-				FileExplorerItem f = fileDao.get(externalId, externalType);
-				fileDao.delete(f);
+			if (AuthLevelUtil.hasWebServiceLevel(getRights(sid))) {
+				FileExplorerItemDao dao = getDao();
+				FileExplorerItem f = dao.get(externalId, externalType);
+				dao.delete(f);
 				return new ServiceResult(f.getId(), "Deleted", Type.SUCCESS);
 			}
 		} catch (Exception err) {
@@ -177,14 +169,14 @@ public class FileWebService {
 			) throws ServiceException
 	{
 		try {
-			Sessiondata sd = sessionDao.check(sid);
+			Sessiondata sd = check(sid);
 			Long userId = sd.getUserId();
 
 			FileExplorerItem f = file == null ? null : file.get();
 			if (f == null || f.getId() != null) {
 				throw new ServiceException("Bad id");//TODO err code -1 ????
 			}
-			Set<Right> rights = userDao.getRights(userId);
+			Set<Right> rights = getRights(userId);
 			/* FIXME TODO permissions
 			if (AuthLevelUtil.hasWebServiceLevel(rights)
 					|| (AuthLevelUtil.hasUserLevel(rights) && userId.equals(f.getOwnerId())))*/
@@ -194,12 +186,12 @@ public class FileWebService {
 				//TODO permissions
 				if (stream != null) {
 					//TODO attachment
-					ConverterProcessResultList result = fileProcessor.processFile(f, stream);
+					ConverterProcessResultList result = getBean(FileProcessor.class).processFile(f, stream);
 					if (result.hasError()) {
 						throw new ServiceException(result.getLogMessage());
 					}
 				} else {
-					f = fileDao.update(f);
+					f = getDao().update(f);
 				}
 				return new FileExplorerItemDTO(f);
 			} else {
@@ -231,21 +223,22 @@ public class FileWebService {
 			) throws ServiceException
 	{
 		try {
-			Sessiondata sd = sessionDao.check(sid);
+			Sessiondata sd = check(sid);
 			Long userId = sd.getUserId();
 
-			if (AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) {
+			if (AuthLevelUtil.hasUserLevel(getRights(userId))) {
 				log.debug("roomId " + roomId);
 
+				FileExplorerItemDao dao = getDao();
 				FileExplorerObject fileExplorerObject = new FileExplorerObject();
 
 				// Home File List
-				List<FileExplorerItem> fList = fileDao.getByOwner(userId);
-				fileExplorerObject.setUser(fList, fileDao.getSize(fList));
+				List<FileExplorerItem> fList = dao.getByOwner(userId);
+				fileExplorerObject.setUser(fList, dao.getSize(fList));
 
 				// Public File List
-				List<FileExplorerItem> rList = fileDao.getByRoom(roomId);
-				fileExplorerObject.setRoom(rList, fileDao.getSize(rList));
+				List<FileExplorerItem> rList = dao.getByRoom(roomId);
+				fileExplorerObject.setRoom(rList, dao.getSize(rList));
 
 				return fileExplorerObject;
 			} else {
@@ -281,21 +274,22 @@ public class FileWebService {
 			) throws ServiceException
 	{
 		try {
-			Sessiondata sd = sessionDao.check(sid);
+			Sessiondata sd = check(sid);
 			Long userId = sd.getUserId();
 
-			if (AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) {
+			if (AuthLevelUtil.hasUserLevel(getRights(userId))) {
 				log.debug("getRoomByParent " + parentId);
 
+				FileExplorerItemDao dao = getDao();
 				List<FileExplorerItem> list = new ArrayList<>();
 				if (parentId < 0) {
 					if (parentId == -1) {
-						list = fileDao.getByOwner(userId);
+						list = dao.getByOwner(userId);
 					} else {
-						list = fileDao.getByRoom(roomId);
+						list = dao.getByRoom(roomId);
 					}
 				} else {
-					list = fileDao.getByParent(parentId);
+					list = dao.getByParent(parentId);
 				}
 				return FileExplorerItemDTO.list(list);
 			} else {
@@ -330,12 +324,11 @@ public class FileWebService {
 			, @WebParam(name="name") @PathParam("name") String name) throws ServiceException
 	{
 		try {
-			Sessiondata sd = sessionDao.check(sid);
-			if (AuthLevelUtil.hasUserLevel(userDao.getRights(sd.getUserId()))) {
+			if (AuthLevelUtil.hasUserLevel(getRights(sid))) {
 				// FIXME TODO: check if this user is allowed to change this file
 
 				log.debug("rename " + id);
-				FileExplorerItem f = fileDao.rename(id, name);
+				FileExplorerItem f = getDao().rename(id, name);
 				return f == null ? null : new FileExplorerItemDTO(f);
 			} else {
 				throw new ServiceException("Insufficient permissions"); //TODO code -26
@@ -369,12 +362,12 @@ public class FileWebService {
 			, @WebParam(name="parentid") @PathParam("parentid") long parentId) throws ServiceException
 	{
 		try {
-			Sessiondata sd = sessionDao.check(sid);
+			Sessiondata sd = check(sid);
 			Long userId = sd.getUserId();
-			if (AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) {
+			if (AuthLevelUtil.hasUserLevel(getRights(userId))) {
 				// FIXME TODO A test is required that checks if the user is allowed to move the file
 				log.debug("move " + id);
-				FileExplorerItem f = fileDao.move(id, parentId, userId, roomId);
+				FileExplorerItem f = getDao().move(id, parentId, userId, roomId);
 				return f == null ? null : new FileExplorerItemDTO(f);
 			} else {
 				throw new ServiceException("Insufficient permissions"); //TODO code -26

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4850a819/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/GroupWebService.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/GroupWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/GroupWebService.java
index 16431cd..e7209a2 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/GroupWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/GroupWebService.java
@@ -41,7 +41,6 @@ import javax.ws.rs.core.MediaType;
 
 import org.apache.cxf.feature.Features;
 import org.apache.openmeetings.db.dao.room.RoomDao;
-import org.apache.openmeetings.db.dao.server.SessiondataDao;
 import org.apache.openmeetings.db.dao.user.GroupDao;
 import org.apache.openmeetings.db.dao.user.GroupUserDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
@@ -59,7 +58,6 @@ import org.apache.openmeetings.db.util.AuthLevelUtil;
 import org.apache.openmeetings.webservice.error.ServiceException;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
 
 /**
  *
@@ -73,19 +71,12 @@ import org.springframework.beans.factory.annotation.Autowired;
 @Features(features = "org.apache.cxf.feature.LoggingFeature")
 @Produces({MediaType.APPLICATION_JSON})
 @Path("/group")
-public class GroupWebService {
+public class GroupWebService extends BaseWebService {
 	private static final Logger log = Red5LoggerFactory.getLogger(GroupWebService.class, webAppRootKey);
 
-	@Autowired
-	private GroupDao groupDao;
-	@Autowired
-	private GroupUserDao groupUserDao;
-	@Autowired
-	private UserDao userDao;
-	@Autowired
-	private RoomDao roomDao;
-	@Autowired
-	private SessiondataDao sessionDao;
+	private static GroupDao getDao() {
+		return getBean(GroupDao.class);
+	}
 
 	/**
 	 * add a new group
@@ -100,12 +91,12 @@ public class GroupWebService {
 	@POST
 	@Path("/")
 	public ServiceResult add(@QueryParam("sid") @WebParam(name="sid") String sid, @QueryParam("name") @WebParam(name="name") String name) throws ServiceException {
-		Sessiondata sd = sessionDao.check(sid);
+		Sessiondata sd = check(sid);
 		Long userId = sd.getUserId();
-		if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
+		if (AuthLevelUtil.hasWebServiceLevel(getRights(userId))) {
 			Group o = new Group();
 			o.setName(name);
-			return new ServiceResult(groupDao.update(o, userId).getId(), "Success", Type.SUCCESS);
+			return new ServiceResult(getDao().update(o, userId).getId(), "Success", Type.SUCCESS);
 		} else {
 			log.error("Could not create group");
 			return NO_PERMISSION;
@@ -123,9 +114,8 @@ public class GroupWebService {
 	@GET
 	@Path("/")
 	public List<Group> get(@QueryParam("sid") @WebParam(name="sid") String sid) throws ServiceException {
-		Sessiondata sd = sessionDao.check(sid);
-		if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(sd.getUserId()))) {
-			return groupDao.get(0, Integer.MAX_VALUE);
+		if (AuthLevelUtil.hasWebServiceLevel(getRights(sid))) {
+			return getDao().get(0, Integer.MAX_VALUE);
 		} else {
 			log.error("Insufficient permissions");
 			throw new ServiceException("Insufficient permissions"); //TODO code -26
@@ -153,12 +143,13 @@ public class GroupWebService {
 			) throws ServiceException
 	{
 		try {
-			Sessiondata sd = sessionDao.check(sid);
+			Sessiondata sd = check(sid);
 			Long authUserId = sd.getUserId();
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(authUserId))) {
-				if (!groupUserDao.isUserInGroup(id, userid)) {
+			if (AuthLevelUtil.hasWebServiceLevel(getRights(authUserId))) {
+				if (!getBean(GroupUserDao.class).isUserInGroup(id, userid)) {
+					UserDao userDao = getUserDao();
 					User u = userDao.get(userid);
-					u.getGroupUsers().add(new GroupUser(groupDao.get(id), u));
+					u.getGroupUsers().add(new GroupUser(getDao().get(id), u));
 					userDao.update(u, authUserId);
 				}
 				return new ServiceResult(userid, "Success", Type.SUCCESS);
@@ -192,10 +183,11 @@ public class GroupWebService {
 			) throws ServiceException
 	{
 		try {
-			Sessiondata sd = sessionDao.check(sid);
+			Sessiondata sd = check(sid);
 			Long authUserId = sd.getUserId();
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(authUserId))) {
-				if (groupUserDao.isUserInGroup(id, userid)) {
+			if (AuthLevelUtil.hasWebServiceLevel(getRights(authUserId))) {
+				if (getBean(GroupUserDao.class).isUserInGroup(id, userid)) {
+					UserDao userDao = getUserDao();
 					User u = userDao.get(userid);
 					for (Iterator<GroupUser> iter = u.getGroupUsers().iterator(); iter.hasNext(); ) {
 						GroupUser gu = iter.next();
@@ -233,9 +225,10 @@ public class GroupWebService {
 			) throws ServiceException
 	{
 		try {
-			Sessiondata sd = sessionDao.check(sid);
+			Sessiondata sd = check(sid);
 			Long userId = sd.getUserId();
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
+			if (AuthLevelUtil.hasWebServiceLevel(getRights(userId))) {
+				RoomDao roomDao = getRoomDao();
 				Room r = roomDao.get(roomid);
 				if (r != null) {
 					if (r.getRoomGroups() == null) {
@@ -248,7 +241,7 @@ public class GroupWebService {
 						}
 					}
 					if (!found) {
-						r.getRoomGroups().add(new RoomGroup(groupDao.get(id), r));
+						r.getRoomGroups().add(new RoomGroup(getDao().get(id), r));
 						roomDao.update(r, userId);
 						return new ServiceResult(1L, "Success", Type.SUCCESS);
 					}
@@ -292,14 +285,14 @@ public class GroupWebService {
 			) throws ServiceException
 	{
 		try {
-			Sessiondata sd = sessionDao.check(sid);
 			SearchResult<User> result = new SearchResult<>();
 			result.setObjectName(User.class.getName());
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(sd.getUserId()))) {
-				result.setRecords(groupUserDao.count(id));
+			if (AuthLevelUtil.hasWebServiceLevel(getRights(sid))) {
+				GroupUserDao dao = getBean(GroupUserDao.class);
+				result.setRecords(dao.count(id));
 				result.setResult(new ArrayList<User>());
 				String order = isAlphanumeric(orderby) ? orderby : "id";
-				for (GroupUser ou : groupUserDao.get(id, null, start, max, order + " " + (asc ? "ASC" : "DESC"))) {
+				for (GroupUser ou : dao.get(id, null, start, max, order + " " + (asc ? "ASC" : "DESC"))) {
 					result.getResult().add(ou.getUser());
 				}
 			} else {
@@ -328,11 +321,12 @@ public class GroupWebService {
 	@Path("/{id}")
 	public ServiceResult delete(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="id") @PathParam("id") long id) throws ServiceException {
 		try {
-			Sessiondata sd = sessionDao.check(sid);
+			Sessiondata sd = check(sid);
 			Long authUserId = sd.getUserId();
 
-			if (AuthLevelUtil.hasAdminLevel(userDao.getRights(authUserId))) {
-				groupDao.delete(groupDao.get(id), authUserId);
+			if (AuthLevelUtil.hasAdminLevel(getRights(authUserId))) {
+				GroupDao dao = getDao();
+				dao.delete(dao.get(id), authUserId);
 
 				return new ServiceResult(id, "Deleted", Type.SUCCESS);
 			} else {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4850a819/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RecordingWebService.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RecordingWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RecordingWebService.java
index 0120ff8..87c33c2 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RecordingWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RecordingWebService.java
@@ -36,55 +36,48 @@ import javax.ws.rs.core.MediaType;
 
 import org.apache.cxf.feature.Features;
 import org.apache.openmeetings.db.dao.record.RecordingDao;
-import org.apache.openmeetings.db.dao.server.SessiondataDao;
-import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.dto.basic.ServiceResult;
 import org.apache.openmeetings.db.dto.basic.ServiceResult.Type;
 import org.apache.openmeetings.db.dto.record.RecordingDTO;
-import org.apache.openmeetings.db.entity.server.Sessiondata;
 import org.apache.openmeetings.db.util.AuthLevelUtil;
 import org.apache.openmeetings.webservice.error.ServiceException;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
 
 /**
- * 
+ *
  * The Service contains methods to work with recordings
- * 
+ *
  * @author solomax
- * 
+ *
  */
 @WebService(serviceName="org.apache.openmeetings.webservice.RecordingWebService", targetNamespace = TNS)
 @Features(features = "org.apache.cxf.feature.LoggingFeature")
 @Produces({MediaType.APPLICATION_JSON})
 @Path("/record")
-public class RecordingWebService {
+public class RecordingWebService extends BaseWebService {
 	private static final Logger log = Red5LoggerFactory.getLogger(RecordingWebService.class, webAppRootKey);
-	@Autowired
-	private SessiondataDao sessionDao;
-	@Autowired
-	private UserDao userDao;
-	@Autowired
-	private RecordingDao recordingDao;
 
+	private static RecordingDao getDao() {
+		return getBean(RecordingDao.class);
+	}
 	/**
 	 * Deletes a flv recording
-	 * 
+	 *
 	 * @param sid
 	 *            The SID of the User. This SID must be marked as Loggedin
 	 * @param id
 	 *            the id of the recording
-	 *            
+	 *
 	 * @throws {@link ServiceException} in case of any error
 	 */
 	@DELETE
 	@Path("/{id}")
 	public ServiceResult delete(@QueryParam("sid") @WebParam(name="sid") String sid, @PathParam("id") @WebParam(name="id") Long id) throws ServiceException {
 		try {
-			Sessiondata sd = sessionDao.check(sid);
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(sd.getUserId()))) {
-				recordingDao.delete(recordingDao.get(id));
+			if (AuthLevelUtil.hasWebServiceLevel(getRights(sid))) {
+				RecordingDao dao = getDao();
+				dao.delete(dao.get(id));
 				return new ServiceResult(id, "Deleted", Type.SUCCESS);
 			} else {
 				throw new ServiceException("Not allowed to preform that action, Authenticate the SID first");
@@ -99,11 +92,11 @@ public class RecordingWebService {
 
 	/**
 	 * Gets a list of flv recordings
-	 * 
+	 *
 	 * @param sid The SID of the User. This SID must be marked as Loggedin
 	 * @param externalId the externalUserId
 	 * @param externalType the externalUserType
-	 *            
+	 *
 	 * @return - list of flv recordings
 	 * @throws ServiceException
 	 */
@@ -114,9 +107,8 @@ public class RecordingWebService {
 			, @PathParam("externaltype") @WebParam(name="externaltype") String externalType
 			, @PathParam("externalid") @WebParam(name="externalid") String externalId) throws ServiceException {
 		try {
-			Sessiondata sd = sessionDao.check(sid);
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(sd.getUserId()))) {
-				return RecordingDTO.list(recordingDao.getByExternalId(externalId, externalType));
+			if (AuthLevelUtil.hasWebServiceLevel(getRights(sid))) {
+				return RecordingDTO.list(getDao().getByExternalId(externalId, externalType));
 			} else {
 				throw new ServiceException("Not allowed to preform that action, Authenticate the SID first");
 			}
@@ -130,7 +122,7 @@ public class RecordingWebService {
 
 	/**
 	 * Gets a list of flv recordings
-	 * 
+	 *
 	 * @param sid
 	 *            The SID of the User. This SID must be marked as Loggedin
 	 * @param externalType
@@ -144,9 +136,8 @@ public class RecordingWebService {
 	public List<RecordingDTO> getExternalByType(@WebParam(name="sid") @QueryParam("sid") String sid
 			, @PathParam("externaltype") @WebParam(name="externaltype") String externalType) throws ServiceException {
 		try {
-			Sessiondata sd = sessionDao.check(sid);
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(sd.getUserId()))) {
-				return RecordingDTO.list(recordingDao.getByExternalType(externalType));
+			if (AuthLevelUtil.hasWebServiceLevel(getRights(sid))) {
+				return RecordingDTO.list(getDao().getByExternalType(externalType));
 			} else {
 				throw new ServiceException("Not allowed to preform that action, Authenticate the SID first");
 			}
@@ -160,7 +151,7 @@ public class RecordingWebService {
 
 	/**
 	 * Get list of recordings
-	 * 
+	 *
 	 * @param sid
 	 *            The SID of the User. This SID must be marked as Loggedin
 	 * @param roomId
@@ -174,9 +165,8 @@ public class RecordingWebService {
 	public List<RecordingDTO> getExternalByRoom(@WebParam(name="sid") @QueryParam("sid") String sid
 			, @PathParam("roomid") @WebParam(name="roomid") Long roomId) throws ServiceException {
 		try {
-			Sessiondata sd = sessionDao.check(sid);
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(sd.getUserId()))) {
-				return RecordingDTO.list(recordingDao.getByRoomId(roomId));
+			if (AuthLevelUtil.hasWebServiceLevel(getRights(sid))) {
+				return RecordingDTO.list(getDao().getByRoomId(roomId));
 			} else {
 				throw new ServiceException("Not allowed to preform that action, Authenticate the SID first");
 			}