diff --git a/tmbs-processor-backend/.classpath b/tmbs-processor-backend/.classpath
index 0d99fca2aa2afe5d6baf072b60b34dac18a23747..31aaf996291a01762edf3a0a6d1554f666c3f816 100644
--- a/tmbs-processor-backend/.classpath
+++ b/tmbs-processor-backend/.classpath
@@ -1,11 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
 	<classpathentry kind="src" path="src/main/scala"/>
-	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
-		<attributes>
-			<attribute name="maven.pomderived" value="true"/>
-		</attributes>
-	</classpathentry>
 	<classpathentry kind="con" path="org.scala-ide.sdt.launching.SCALA_CONTAINER"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5">
 		<attributes>
diff --git a/tmbs-rest-backend/pom.xml b/tmbs-rest-backend/pom.xml
index c81782152a3da6f23312ba389c6d62ed90046819..51084ac8db3dbf18ea661b148fa45367794a9d1e 100644
--- a/tmbs-rest-backend/pom.xml
+++ b/tmbs-rest-backend/pom.xml
@@ -11,6 +11,7 @@
 		<maven.compiler.source>1.8</maven.compiler.source>
 	</properties>
 	<dependencies>
+		<!-- Jersey REST -->
 		<dependency>
 			<groupId>org.glassfish.jersey.containers</groupId>
 			<artifactId>jersey-container-servlet</artifactId>
@@ -31,19 +32,23 @@
 			<artifactId>jersey-test-framework-provider-simple</artifactId>
 			<version>2.22.1</version>
 		</dependency>
+		
+		<!-- Servlet API -->
 		<dependency>
 			<groupId>javax.servlet</groupId>
 			<artifactId>javax.servlet-api</artifactId>
 			<version>3.1.0</version>
 		</dependency>
+		
+		<!-- Logging -->
 		<dependency>
 			<groupId>org.apache.logging.log4j</groupId>
-			<artifactId>log4j-core</artifactId>
+			<artifactId>log4j-api</artifactId>
 			<version>2.4.1</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.logging.log4j</groupId>
-			<artifactId>log4j-api</artifactId>
+			<artifactId>log4j-core</artifactId>
 			<version>2.4.1</version>
 		</dependency>
 		<dependency>
@@ -51,11 +56,21 @@
 			<artifactId>log4j-slf4j-impl</artifactId>
 			<version>2.4.1</version>
 		</dependency>
+		<dependency>
+			<groupId>org.apache.logging.log4j</groupId>
+			<artifactId>log4j-web</artifactId>
+			<version>2.4.1</version>
+			<scope>runtime</scope>
+		</dependency>
+		
+		<!-- MongoDB Database Adapter -->
 		<dependency>
 			<groupId>org.mongodb</groupId>
 			<artifactId>mongodb-driver</artifactId>
 			<version>3.0.4</version>
 		</dependency>
+		
+		<!-- Testing -->
 		<dependency>
 			<groupId>junit</groupId>
 			<artifactId>junit</artifactId>
diff --git a/tmbs-rest-backend/src/main/java/de/cochu/backend/rest/Application.java b/tmbs-rest-backend/src/main/java/de/cochu/backend/rest/Application.java
index 44869d6ad9776efa6a2295035a20f51bd737ba80..a761f08504daf1a6af6bc4c8fe57c2feaf6517c9 100644
--- a/tmbs-rest-backend/src/main/java/de/cochu/backend/rest/Application.java
+++ b/tmbs-rest-backend/src/main/java/de/cochu/backend/rest/Application.java
@@ -1,11 +1,16 @@
 package de.cochu.backend.rest;
 
 import org.glassfish.jersey.server.ResourceConfig;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class Application extends ResourceConfig {
 
+	public static final Logger log = LoggerFactory.getLogger(Application.class);
+
 	public Application() {
 		packages("de.cochu.backend.rest");
+		log.info("Application started");
 	}
-	
+
 }
diff --git a/tmbs-rest-backend/src/main/java/de/cochu/backend/rest/Messages.java b/tmbs-rest-backend/src/main/java/de/cochu/backend/rest/Messages.java
new file mode 100644
index 0000000000000000000000000000000000000000..862d37b406a22c3771ff610e9f048232954e335c
--- /dev/null
+++ b/tmbs-rest-backend/src/main/java/de/cochu/backend/rest/Messages.java
@@ -0,0 +1,8 @@
+package de.cochu.backend.rest;
+
+public class Messages {
+
+	public static final String NOT_FOUND = "%1 with id %2 was not found";
+	public static final String BAD_REQUEST = "bad request: %1";
+
+}
diff --git a/tmbs-rest-backend/src/main/java/de/cochu/backend/rest/MongoDBContextListener.java b/tmbs-rest-backend/src/main/java/de/cochu/backend/rest/MongoDBContextListener.java
new file mode 100644
index 0000000000000000000000000000000000000000..bf00a33c628b28d1633fa0cb50f2f5674dd2e4a5
--- /dev/null
+++ b/tmbs-rest-backend/src/main/java/de/cochu/backend/rest/MongoDBContextListener.java
@@ -0,0 +1,44 @@
+package de.cochu.backend.rest;
+
+import javax.servlet.ServletContext;
+import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletContextListener;
+import javax.servlet.annotation.WebListener;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.mongodb.MongoClient;
+import com.mongodb.client.MongoDatabase;
+
+@WebListener
+public class MongoDBContextListener implements ServletContextListener {
+
+	public static final Logger log = LoggerFactory.getLogger(MongoDBContextListener.class);
+
+	@Override
+	public void contextDestroyed(ServletContextEvent sce) {
+		MongoClient mongo = (MongoClient) sce.getServletContext().getAttribute("MONGODB_CLIENT");
+		mongo.close();
+
+		log.debug("mongodb connection closed successfully");
+	}
+
+	@Override
+	public void contextInitialized(ServletContextEvent sce) {
+		ServletContext ctx = sce.getServletContext();
+
+		String host = ctx.getInitParameter("MONGODB_HOST");
+		Integer port = Integer.parseInt(ctx.getInitParameter("MONGODB_PORT"));
+		String databaseName = ctx.getInitParameter("MONGODB_DATABASE");
+
+		MongoClient mongo = new MongoClient(host, port);
+		MongoDatabase db = mongo.getDatabase(databaseName);
+
+		ctx.setAttribute("MONGODB_CLIENT", mongo);
+		ctx.setAttribute("MONGODB_DATABASE", db);
+
+		log.debug("mongodb connection created successfully");
+	}
+
+}
diff --git a/tmbs-rest-backend/src/main/java/de/cochu/backend/rest/domain/Article.java b/tmbs-rest-backend/src/main/java/de/cochu/backend/rest/dao/Article.java
similarity index 71%
rename from tmbs-rest-backend/src/main/java/de/cochu/backend/rest/domain/Article.java
rename to tmbs-rest-backend/src/main/java/de/cochu/backend/rest/dao/Article.java
index f7cb9dc42ac20c8e1d18350bb63e3f330c8ac6f9..070668684c8ec360bc5935a630abd71d3218b0cb 100644
--- a/tmbs-rest-backend/src/main/java/de/cochu/backend/rest/domain/Article.java
+++ b/tmbs-rest-backend/src/main/java/de/cochu/backend/rest/dao/Article.java
@@ -1,4 +1,4 @@
-package de.cochu.backend.rest.domain;
+package de.cochu.backend.rest.dao;
 
 import java.util.ArrayList;
 import java.util.Date;
@@ -9,13 +9,21 @@ import org.bson.Document;
 import org.bson.types.ObjectId;
 
 @XmlRootElement
-public class Article extends Domain {
+public class Article extends Dao {
 
 	private String title;
 	private String text;
 	private String url;
 	private Date date;
 
+	public Article() {
+		super();
+	}
+
+	public Article(Document document) {
+		super(document);
+	}
+
 	public String getTitle() {
 		return title;
 	}
@@ -57,20 +65,19 @@ public class Article extends Domain {
 		return doc;
 	}
 
-	public static Article fromDocument(final Document doc) {
-		Article article = new Article();
-		article.id = doc.getObjectId("_id").toString();
-		article.title = doc.getString("title");
-		article.text = doc.getString("text");
-		article.url = doc.getString("url");
-		article.date = doc.getDate("date");
-		return article;
+	@Override
+	public void fromDocument(Document document) {
+		id = document.getObjectId("_id").toString();
+		title = document.getString("title");
+		text = document.getString("text");
+		url = document.getString("url");
+		date = document.getDate("date");
 	}
 
 	public static ArrayList<Article> fromDocuments(final ArrayList<Document> docs) {
 		ArrayList<Article> articles = new ArrayList<Article>(docs.size());
 		for (Document doc : docs) {
-			articles.add(fromDocument(doc));
+			articles.add(new Article(doc));
 		}
 		return articles;
 	}
diff --git a/tmbs-rest-backend/src/main/java/de/cochu/backend/rest/domain/Domain.java b/tmbs-rest-backend/src/main/java/de/cochu/backend/rest/dao/Dao.java
similarity index 70%
rename from tmbs-rest-backend/src/main/java/de/cochu/backend/rest/domain/Domain.java
rename to tmbs-rest-backend/src/main/java/de/cochu/backend/rest/dao/Dao.java
index 931db095799915ad63f763e81f983b46e5187507..bc3ccec962e9dbdbb4daab7f6735e53541fe1163 100644
--- a/tmbs-rest-backend/src/main/java/de/cochu/backend/rest/domain/Domain.java
+++ b/tmbs-rest-backend/src/main/java/de/cochu/backend/rest/dao/Dao.java
@@ -1,4 +1,4 @@
-package de.cochu.backend.rest.domain;
+package de.cochu.backend.rest.dao;
 
 import java.net.MalformedURLException;
 import java.net.URI;
@@ -9,10 +9,17 @@ import javax.xml.bind.annotation.XmlRootElement;
 import org.bson.Document;
 
 @XmlRootElement
-public abstract class Domain {
+public abstract class Dao {
 
 	protected String id;
 
+	public Dao() {
+	}
+
+	public Dao(Document document) {
+		fromDocument(document);
+	}
+
 	public String getId() {
 		return id;
 	}
@@ -27,4 +34,6 @@ public abstract class Domain {
 
 	public abstract Document toDocument();
 
+	public abstract void fromDocument(Document document);
+
 }
diff --git a/tmbs-rest-backend/src/main/java/de/cochu/backend/rest/resource/ArticleResource.java b/tmbs-rest-backend/src/main/java/de/cochu/backend/rest/resource/ArticleResource.java
new file mode 100644
index 0000000000000000000000000000000000000000..ed8cdba24e2b1a0941ee9c9ff2487e60b09569ce
--- /dev/null
+++ b/tmbs-rest-backend/src/main/java/de/cochu/backend/rest/resource/ArticleResource.java
@@ -0,0 +1,120 @@
+package de.cochu.backend.rest.resource;
+
+import java.net.MalformedURLException;
+import java.net.URISyntaxException;
+import java.util.List;
+
+import javax.servlet.ServletContext;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.DefaultValue;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriInfo;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.mongodb.client.MongoDatabase;
+
+import javax.ws.rs.core.GenericEntity;
+
+import de.cochu.backend.rest.Messages;
+import de.cochu.backend.rest.dao.Article;
+import de.cochu.backend.rest.service.ArticleService;
+
+@Path("articles")
+public class ArticleResource {
+
+	public static final Logger log = LoggerFactory.getLogger(ArticleResource.class);
+
+	@Context
+	UriInfo uri;
+
+	final ArticleService service;
+
+	public ArticleResource(@Context ServletContext context) {
+		MongoDatabase db = (MongoDatabase) context.getAttribute("MONGODB_DATABASE");
+		service = new ArticleService(db);
+	}
+
+	@GET
+	@Produces(MediaType.APPLICATION_JSON)
+	public Response getArticles(@QueryParam("skip") @DefaultValue("0") int skip,
+			@QueryParam("limit") @DefaultValue("0") int limit,
+			@QueryParam("sortby") @DefaultValue("date") String sortBy,
+			@QueryParam("order") @DefaultValue("desc") String order) {
+		List<Article> articles = service.getArticles(skip, limit, sortBy, order);
+		return Response.ok(new GenericEntity<List<Article>>(articles) {
+		}).build();
+	}
+
+	@GET
+	@Produces(MediaType.APPLICATION_JSON)
+	@Consumes(MediaType.APPLICATION_JSON)
+	@Path("{id}")
+	public Response getArticle(@PathParam("id") String id) {
+		if (id == null || id.trim().length() == 0) {
+			return Response.status(Response.Status.BAD_REQUEST)
+					.entity(String.format(Messages.BAD_REQUEST, "id cannot be empty")).build();
+		}
+		Article article = service.getArticle(id);
+		if (article != null) {
+			return Response.ok(article).build();
+		} else {
+			return Response.status(Response.Status.NOT_FOUND).type(MediaType.TEXT_PLAIN)
+					.entity(String.format(Messages.NOT_FOUND, "article", id)).build();
+		}
+	}
+
+	@POST
+	@Consumes(MediaType.APPLICATION_JSON)
+	@Produces(MediaType.APPLICATION_JSON)
+	public Response createArticle(Article article) throws MalformedURLException, URISyntaxException {
+		article = service.createArticle(article);
+		return Response.created(article.getURI(uri.getAbsolutePath())).entity(article).build();
+	}
+
+	@DELETE
+	@Path("{id}")
+	public Response deleteArticle(@PathParam("id") String id) {
+		long deleted = service.deleteArticle(id);
+		switch (Math.toIntExact(deleted)) {
+		case 0:
+			return Response.status(Response.Status.NOT_FOUND).entity(String.format(Messages.NOT_FOUND, "article", id))
+					.build();
+		case 1:
+			return Response.noContent().build();
+		default:
+			log.error(String.format("deleted count while deleting article with id %1 was %2", id, deleted));
+			return Response.serverError().build();
+		}
+	}
+
+	@PUT
+	@Consumes(MediaType.APPLICATION_JSON)
+	@Produces(MediaType.APPLICATION_JSON)
+	@Path("{id}")
+	public Response updateArticle(@PathParam("id") String id, Article article) {
+		long updated = service.updateArticle(article);
+		switch (Math.toIntExact(updated)) {
+		case 0:
+			return Response.status(Response.Status.NOT_FOUND).type(MediaType.TEXT_PLAIN)
+					.entity(String.format(Messages.NOT_FOUND, "article", id)).build();
+		case 1:
+			return Response.ok().entity(article).build();
+		default:
+			log.error(String.format("updated count while updating article with id %1 was %2", id, updated));
+			return Response.serverError().build();
+		}
+	}
+
+}
diff --git a/tmbs-rest-backend/src/main/java/de/cochu/backend/rest/resource/Articles.java b/tmbs-rest-backend/src/main/java/de/cochu/backend/rest/resource/Articles.java
deleted file mode 100644
index 2c76d5c5be77f054324f8db62d4fdb87bc3fd56c..0000000000000000000000000000000000000000
--- a/tmbs-rest-backend/src/main/java/de/cochu/backend/rest/resource/Articles.java
+++ /dev/null
@@ -1,97 +0,0 @@
-package de.cochu.backend.rest.resource;
-
-import java.net.MalformedURLException;
-import java.net.URISyntaxException;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.DefaultValue;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriInfo;
-import javax.ws.rs.core.GenericEntity;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.bson.Document;
-import org.bson.types.ObjectId;
-
-import com.mongodb.MongoClient;
-import com.mongodb.client.MongoCollection;
-import com.mongodb.client.MongoDatabase;
-import com.mongodb.client.model.Filters;
-
-import static com.mongodb.client.model.Sorts.*;
-
-import de.cochu.backend.rest.domain.Article;
-
-@Path("articles")
-public class Articles {
-
-	static Logger log = LogManager.getLogger(Articles.class);
-
-	@Context
-	UriInfo uri;
-
-	MongoClient mongo = new MongoClient();
-	MongoDatabase db = mongo.getDatabase("test");
-	MongoCollection<Document> articles = db.getCollection("articles");
-
-	@GET
-	@Produces(MediaType.APPLICATION_JSON)
-	public Response getArticles(@QueryParam("skip") @DefaultValue("0") int skip,
-			@QueryParam("limit") @DefaultValue("0") int limit,
-			@QueryParam("sortby") @DefaultValue("date") String sortBy,
-			@QueryParam("order") @DefaultValue("desc") String order) {
-		ArrayList<Document> result = articles.find().skip(skip).limit(limit)
-				.sort(order.equals("desc") ? descending(sortBy) : ascending(sortBy)).into(new ArrayList<Document>());
-		ArrayList<Article> articles = Article.fromDocuments(result);
-		return Response.ok(new GenericEntity<List<Article>>(articles) {
-		}).build();
-	}
-
-	@GET
-	@Produces(MediaType.APPLICATION_JSON)
-	@Path("{id}")
-	public Response getArticle(@PathParam("id") String id) {
-		if (id == null || id.trim().length() == 0) {
-			return Response.status(Response.Status.BAD_REQUEST)
-					.entity(String.format(Messages.BAD_REQUEST, "id cannot be empty")).build();
-		}
-		ObjectId objectId = new ObjectId(id);
-		ArrayList<Document> result = articles.find(Filters.eq("_id", objectId)).into(new ArrayList<Document>());
-		if (result.size() == 1) {
-			Article article = Article.fromDocument(result.get(0));
-			return Response.ok(article).build();
-		}
-		return Response.status(Response.Status.NOT_FOUND).entity(String.format(Messages.NOT_FOUND, id)).build();
-	}
-
-	@POST
-	@Consumes(MediaType.APPLICATION_JSON)
-	@Produces(MediaType.APPLICATION_JSON)
-	public Response createArticle(Article article) throws MalformedURLException, URISyntaxException {
-		Document doc = new Document(article.toDocument());
-		articles.insertOne(doc);
-		article = Article.fromDocument(doc);
-		return Response.created(article.getURI(uri.getAbsolutePath())).entity(article).build();
-	}
-
-	@DELETE
-	@Path("{id}")
-	public Response deleteArticle(@PathParam("id") String id) {
-		ObjectId objectId = new ObjectId(id);
-		articles.deleteOne(Filters.eq("_id", objectId));
-		return Response.noContent().build();
-	}
-
-}
diff --git a/tmbs-rest-backend/src/main/java/de/cochu/backend/rest/resource/Messages.java b/tmbs-rest-backend/src/main/java/de/cochu/backend/rest/resource/Messages.java
deleted file mode 100644
index cce2773740c362b57dedbb5c50af18c7e02e7f59..0000000000000000000000000000000000000000
--- a/tmbs-rest-backend/src/main/java/de/cochu/backend/rest/resource/Messages.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package de.cochu.backend.rest.resource;
-
-public class Messages {
-	
-	public static final String NOT_FOUND = "Entity not found for id %1";
-	public static final String BAD_REQUEST = "Bad request: %1";
-
-}
diff --git a/tmbs-rest-backend/src/main/java/de/cochu/backend/rest/service/ArticleService.java b/tmbs-rest-backend/src/main/java/de/cochu/backend/rest/service/ArticleService.java
new file mode 100644
index 0000000000000000000000000000000000000000..49f09fb33f1d533a7e53918cd0a8092b3aaeb153
--- /dev/null
+++ b/tmbs-rest-backend/src/main/java/de/cochu/backend/rest/service/ArticleService.java
@@ -0,0 +1,67 @@
+package de.cochu.backend.rest.service;
+
+import static com.mongodb.client.model.Sorts.ascending;
+import static com.mongodb.client.model.Sorts.descending;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.bson.Document;
+import org.bson.types.ObjectId;
+
+import com.mongodb.client.MongoCollection;
+import com.mongodb.client.MongoDatabase;
+import com.mongodb.client.model.Filters;
+import com.mongodb.client.result.DeleteResult;
+import com.mongodb.client.result.UpdateResult;
+
+import de.cochu.backend.rest.dao.Article;
+
+public class ArticleService {
+
+	final MongoCollection<Document> articles;
+
+	public ArticleService(MongoDatabase db) {
+		articles = db.getCollection("articles");
+	}
+
+	public Article getArticle(String id) {
+		ObjectId objectId = new ObjectId(id);
+		ArrayList<Document> result = articles.find(Filters.eq("_id", objectId)).into(new ArrayList<Document>());
+		if (result.size() == 1) {
+			return new Article(result.get(0));
+		} else {
+			return null;
+		}
+	}
+
+	public List<Article> getArticles(int skip, int limit, String sortBy, String order) {
+		ArrayList<Document> docs = articles.find().skip(skip).limit(limit)
+				.sort(order.equals("desc") ? descending(sortBy) : ascending(sortBy)).into(new ArrayList<Document>());
+		ArrayList<Article> result = Article.fromDocuments(docs);
+		for (Article article : result) {
+			article.setText(null);
+		}
+		return result;
+	}
+
+	public Article createArticle(Article article) {
+		Document doc = new Document(article.toDocument());
+		articles.insertOne(doc);
+		return new Article(doc);
+	}
+
+	public long deleteArticle(String id) {
+		ObjectId objectId = new ObjectId(id);
+		DeleteResult result = articles.deleteOne(Filters.eq("_id", objectId));
+		return result.getDeletedCount();
+	}
+
+	public long updateArticle(Article article) {
+		Document docOld = new Document("_id", new ObjectId(article.getId()));
+		Document docNew = article.toDocument();
+		UpdateResult result = articles.replaceOne(docOld, docNew);
+		return result.getModifiedCount();
+	}
+
+}
diff --git a/tmbs-rest-backend/src/main/resources/log4j2.xml b/tmbs-rest-backend/src/main/resources/log4j2.xml
index fe4f3e8a41ac350245fd17458bb664919340591f..8abf1b196fcbb49c3df9551ecb1937bd6491200b 100644
--- a/tmbs-rest-backend/src/main/resources/log4j2.xml
+++ b/tmbs-rest-backend/src/main/resources/log4j2.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<Configuration status="OFF">
+<Configuration>
 	<Appenders>
 		<Console name="Console" target="SYSTEM_OUT">
-			<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
+			<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n" />
 		</Console>
 	</Appenders>
 	<Loggers>
-		<Root level="error">
+		<Root level="all">
 			<AppenderRef ref="Console" />
 		</Root>
 	</Loggers>
diff --git a/tmbs-rest-backend/src/main/webapp/WEB-INF/web.xml b/tmbs-rest-backend/src/main/webapp/WEB-INF/web.xml
index 6bef82bfc8d499e3228c3deb1fa80f45e18c938d..529eb522e7e35605bd7359954381bddc4a47882e 100644
--- a/tmbs-rest-backend/src/main/webapp/WEB-INF/web.xml
+++ b/tmbs-rest-backend/src/main/webapp/WEB-INF/web.xml
@@ -1,18 +1,42 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee" 
-         xmlns:web="http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
-         version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee">
-  <servlet>
-    <servlet-name>jersey</servlet-name>
-    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
-    <init-param>
-      <param-name>javax.ws.rs.Application</param-name>
-      <param-value>de.cochu.backend.rest.Application</param-value>
-    </init-param>
-  </servlet>
-  <servlet-mapping>
-    <servlet-name>jersey</servlet-name>
-    <url-pattern>/rest/*</url-pattern>
-  </servlet-mapping>
+	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
+	version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee">
+
+	<context-param>
+		<param-name>MONGODB_HOST</param-name>
+		<param-value>localhost</param-value>
+	</context-param>
+
+	<context-param>
+		<param-name>MONGODB_PORT</param-name>
+		<param-value>27017</param-value>
+	</context-param>
+
+	<context-param>
+		<param-name>MONGODB_DATABASE</param-name>
+		<param-value>test</param-value>
+	</context-param>
+
+	<servlet>
+		<servlet-name>jersey</servlet-name>
+		<servlet-class>org.glassfish.jersey.servlet.ServletContainer
+		</servlet-class>
+		<init-param>
+			<param-name>javax.ws.rs.Application</param-name>
+			<param-value>de.cochu.backend.rest.Application</param-value>
+		</init-param>
+	</servlet>
+
+	<servlet-mapping>
+		<servlet-name>jersey</servlet-name>
+		<url-pattern>/rest/*</url-pattern>
+	</servlet-mapping>
+
+	<listener>
+		<listener-class>
+			de.cochu.backend.rest.MongoDBContextListener
+		</listener-class>
+	</listener>
+
 </web-app>
\ No newline at end of file
diff --git a/tmbs-rest-backend/src/test/java/de/cochu/backend/rest/resource/ArticlesTest.java b/tmbs-rest-backend/src/test/java/de/cochu/backend/rest/resource/ArticleResourceTest.java
similarity index 82%
rename from tmbs-rest-backend/src/test/java/de/cochu/backend/rest/resource/ArticlesTest.java
rename to tmbs-rest-backend/src/test/java/de/cochu/backend/rest/resource/ArticleResourceTest.java
index 924b13084228b6807f3c60c46f144546d9f6507e..3a1a76075296d0d99dc8918efb88a974bdee38fb 100644
--- a/tmbs-rest-backend/src/test/java/de/cochu/backend/rest/resource/ArticlesTest.java
+++ b/tmbs-rest-backend/src/test/java/de/cochu/backend/rest/resource/ArticleResourceTest.java
@@ -9,11 +9,11 @@ import org.glassfish.jersey.server.ResourceConfig;
 import org.glassfish.jersey.test.JerseyTest;
 import org.junit.Test;
 
-public class ArticlesTest extends JerseyTest {
+public class ArticleResourceTest extends JerseyTest {
 
 	@Override
 	protected Application configure() {
-		return new ResourceConfig(Articles.class);
+		return new ResourceConfig(ArticleResource.class);
 	}
 
 	@Test
diff --git a/tmbs-rest-backend/src/test/resources/log4j2.xml b/tmbs-rest-backend/src/test/resources/log4j2.xml
deleted file mode 100644
index e43e1b9947b2f185974de3038a845e4434a2603b..0000000000000000000000000000000000000000
--- a/tmbs-rest-backend/src/test/resources/log4j2.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Configuration status="WARN">
-	<Appenders>
-		<Console name="Console" target="SYSTEM_OUT">
-			<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
-		</Console>
-	</Appenders>
-	<Loggers>
-		<Root level="error">
-			<AppenderRef ref="Console" />
-		</Root>
-	</Loggers>
-</Configuration>
\ No newline at end of file
diff --git a/tmbs-rest-backend/target/classes/log4j2.xml b/tmbs-rest-backend/target/classes/log4j2.xml
deleted file mode 100644
index fe4f3e8a41ac350245fd17458bb664919340591f..0000000000000000000000000000000000000000
--- a/tmbs-rest-backend/target/classes/log4j2.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Configuration status="OFF">
-	<Appenders>
-		<Console name="Console" target="SYSTEM_OUT">
-			<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
-		</Console>
-	</Appenders>
-	<Loggers>
-		<Root level="error">
-			<AppenderRef ref="Console" />
-		</Root>
-	</Loggers>
-</Configuration>
\ No newline at end of file