From 0d4b0be53224afce5c8a3a754dd4841aeff44818 Mon Sep 17 00:00:00 2001
From: Nils Christian Ehmke <nie@informatik.uni-kiel.de>
Date: Sun, 14 Apr 2013 12:04:38 +0200
Subject: [PATCH] I removed the synchronized modificators at most of the bean's
 methods; Under normal circumstances it should not be possible that two tabs
 or browsers share the same view scoped bean.

---
 .../webgui/web/beans/session/UserBean.java    | 54 +++++++--------
 .../beans/view/CurrentAnalysisEditorBean.java | 62 ++++++++---------
 .../view/CurrentAnalysisEditorGraphBean.java  | 66 +++++++++----------
 .../web/beans/view/CurrentCockpitBean.java    | 28 ++++----
 .../beans/view/CurrentCockpitEditorBean.java  | 56 ++++++++--------
 .../web/beans/view/CurrentControllerBean.java | 30 ++++-----
 .../beans/view/CurrentUserManagementBean.java | 22 +++----
 Kieker.WebGUI/src/main/webapp/WEB-INF/web.xml |  2 +-
 8 files changed, 158 insertions(+), 162 deletions(-)

diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/session/UserBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/session/UserBean.java
index f1bd5c93..62f839b5 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/session/UserBean.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/session/UserBean.java
@@ -175,41 +175,37 @@ public class UserBean implements Serializable {
 	/**
 	 * This method tries to load the default values of the properties from the {@link GlobalPropertiesBean} and the faces context.
 	 */
-	private void loadDefaultValues() {
-		synchronized (this) {
-			// Get the parameters within the current context.
-			final Map<String, String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap(); // NOPMD (No concurrent access)
-			// Try to find the default theme within the parameters.
-			if (params.containsKey(this.globalPropertiesBean.getFacesContextThemeKey())) {
-				this.lookAndFeel = params.get(this.globalPropertiesBean.getFacesContextThemeKey());
-			} else {
-				// Use the default theme.
-				this.lookAndFeel = this.globalPropertiesBean.getDefaultTheme();
-			}
-
-			this.gridColor = this.globalPropertiesBean.getAnalysisEditorDefaultGridColor();
-			this.gridSize = Integer.parseInt(this.globalPropertiesBean.getAnalysisEditorDefaultGridSize());
+	private synchronized void loadDefaultValues() {
+		// Get the parameters within the current context.
+		final Map<String, String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap(); // NOPMD (No concurrent access)
+		// Try to find the default theme within the parameters.
+		if (params.containsKey(this.globalPropertiesBean.getFacesContextThemeKey())) {
+			this.lookAndFeel = params.get(this.globalPropertiesBean.getFacesContextThemeKey());
+		} else {
+			// Use the default theme.
+			this.lookAndFeel = this.globalPropertiesBean.getDefaultTheme();
 		}
+
+		this.gridColor = this.globalPropertiesBean.getAnalysisEditorDefaultGridColor();
+		this.gridSize = Integer.parseInt(this.globalPropertiesBean.getAnalysisEditorDefaultGridSize());
 	}
 
 	/**
 	 * This method tries to load the values of the properties from the user's cookies.
 	 */
-	private void loadValuesFromCookies() {
-		synchronized (this) {
-			// Get the available cookies
-			final Map<String, Object> cookies = FacesContext.getCurrentInstance().getExternalContext().getRequestCookieMap(); // NOPMD (No concurrent access)
-
-			// Now load the values if available
-			if (cookies.containsKey(this.globalPropertiesBean.getThemeCookieName())) {
-				this.lookAndFeel = ((Cookie) cookies.get(this.globalPropertiesBean.getThemeCookieName())).getValue();
-			}
-			if (cookies.containsKey(this.globalPropertiesBean.getAnalysisEditorGridColorCookieName())) {
-				this.gridColor = ((Cookie) cookies.get(this.globalPropertiesBean.getAnalysisEditorGridColorCookieName())).getValue();
-			}
-			if (cookies.containsKey(this.globalPropertiesBean.getAnalysisEditorGridSizeCookieName())) {
-				this.gridSize = Integer.parseInt(((Cookie) cookies.get(this.globalPropertiesBean.getAnalysisEditorGridSizeCookieName())).getValue());
-			}
+	private synchronized void loadValuesFromCookies() {
+		// Get the available cookies
+		final Map<String, Object> cookies = FacesContext.getCurrentInstance().getExternalContext().getRequestCookieMap(); // NOPMD (No concurrent access)
+
+		// Now load the values if available
+		if (cookies.containsKey(this.globalPropertiesBean.getThemeCookieName())) {
+			this.lookAndFeel = ((Cookie) cookies.get(this.globalPropertiesBean.getThemeCookieName())).getValue();
+		}
+		if (cookies.containsKey(this.globalPropertiesBean.getAnalysisEditorGridColorCookieName())) {
+			this.gridColor = ((Cookie) cookies.get(this.globalPropertiesBean.getAnalysisEditorGridColorCookieName())).getValue();
+		}
+		if (cookies.containsKey(this.globalPropertiesBean.getAnalysisEditorGridSizeCookieName())) {
+			this.gridSize = Integer.parseInt(((Cookie) cookies.get(this.globalPropertiesBean.getAnalysisEditorGridSizeCookieName())).getValue());
 		}
 	}
 
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentAnalysisEditorBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentAnalysisEditorBean.java
index 995ba20a..e7f93568 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentAnalysisEditorBean.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentAnalysisEditorBean.java
@@ -108,7 +108,7 @@ public class CurrentAnalysisEditorBean {
 	 * This method initializes the bean by using the current project name to load the project. <b>Do not call this method manually. It will only be accessed by
 	 * Spring.</b>
 	 */
-	public synchronized void initialize() {
+	public void initialize() {
 		try {
 			// Make sure that the initialization will only be done for the init request. During all other requests, the method call have to be ignored.
 			if (!FacesContext.getCurrentInstance().isPostback()) {
@@ -143,7 +143,7 @@ public class CurrentAnalysisEditorBean {
 	 * @throws ProjectLoadException
 	 *             If something went wrong during the loading of the libraries.
 	 */
-	private synchronized void initializeModelLibraries() throws ProjectLoadException {
+	private void initializeModelLibraries() throws ProjectLoadException {
 		try {
 			final List<String> libs = this.projectService.listAllLibraries(this.projectName);
 			// Add them, but remove all existing dependencies so far to avoid double entries. This also makes sure that the model - after it has been opened -
@@ -165,7 +165,7 @@ public class CurrentAnalysisEditorBean {
 	 * @param event
 	 *            The upload event.
 	 */
-	public synchronized void handleFileUpload(final FileUploadEvent event) {
+	public void handleFileUpload(final FileUploadEvent event) {
 		// Get the file from the event
 		final UploadedFile file = event.getFile();
 
@@ -205,7 +205,7 @@ public class CurrentAnalysisEditorBean {
 	 * @param name
 	 *            The name of the library to be removed.
 	 */
-	public synchronized void deleteLibrary(final String name) {
+	public void deleteLibrary(final String name) {
 		try {
 			if (this.projectService.deleteLibrary(this.projectName, name)) {
 				// We have to reinitialize the tool palette completely! This is necessary as some of the already existing classes could need the newly loaded
@@ -223,39 +223,39 @@ public class CurrentAnalysisEditorBean {
 	/**
 	 * This method loads the list of available readers, filters and repositories, using the current libraries within the model.
 	 */
-	private synchronized void reloadAvailableComponents() {
+	private void reloadAvailableComponents() {
 		this.availableComponents = this.projectService.getAvailableComponents(this.projectName);
 	}
 
-	public synchronized MIProject getProject() {
+	public MIProject getProject() {
 		return this.project;
 	}
 
-	public synchronized void setProjectName(final String newName) {
+	public void setProjectName(final String newName) {
 		// Remember the given parameters
 		this.projectName = newName;
 	}
 
-	public synchronized String getProjectName() {
+	public String getProjectName() {
 		return this.projectName;
 	}
 
-	public synchronized ComponentListContainer getAvailableComponents() {
+	public ComponentListContainer getAvailableComponents() {
 		return this.availableComponents;
 	}
 
 	/**
 	 * This method sets the time stamp to the current system time.
 	 */
-	public synchronized void resetTimeStamp() {
+	public void resetTimeStamp() {
 		this.timeStamp = System.currentTimeMillis();
 	}
 
-	public synchronized long getTimeStamp() {
+	public long getTimeStamp() {
 		return this.timeStamp;
 	}
 
-	public synchronized MIAnalysisComponent getSelectedPlugin() {
+	public MIAnalysisComponent getSelectedPlugin() {
 		return this.selectedComponent;
 	}
 
@@ -264,7 +264,7 @@ public class CurrentAnalysisEditorBean {
 	 * 
 	 * @return The available libraries.
 	 */
-	public synchronized List<String> getLibraries() {
+	public List<String> getLibraries() {
 		try {
 			final List<String> result = this.projectService.listAllLibraries(this.projectName);
 			result.add(0, "Kieker");
@@ -283,7 +283,7 @@ public class CurrentAnalysisEditorBean {
 	 * This method tries to save the current project and informs the user about success or fail. There should be two parameters within the request parameter map
 	 * (layoutString and overwriteNewerProject) as this method is called via javascript.
 	 */
-	public synchronized void saveProject() {
+	public void saveProject() {
 		// Get the parameters
 		final Map<String, String> paramMap = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
 		this.currentLayout = paramMap.get("layoutString");
@@ -317,7 +317,7 @@ public class CurrentAnalysisEditorBean {
 	 * @param container
 	 *            The container which delivers the copy of the repository.
 	 */
-	public synchronized void addRepository(final RepositoryContainer container) {
+	public void addRepository(final RepositoryContainer container) {
 		// Create a new instance for the model
 		final MIRepository repository = container.newInstance(CurrentAnalysisEditorBean.FACTORY);
 
@@ -334,7 +334,7 @@ public class CurrentAnalysisEditorBean {
 	 * @param container
 	 *            The container which delivers the copy of the plugin.
 	 */
-	public synchronized void addPlugin(final PluginContainer container) {
+	public void addPlugin(final PluginContainer container) {
 		// Create a new instance for the model
 		final MIPlugin plugin = container.newInstance(CurrentAnalysisEditorBean.FACTORY);
 
@@ -351,9 +351,9 @@ public class CurrentAnalysisEditorBean {
 
 	/**
 	 * This method sets the property {@link CurrentAnalysisEditorBean#unsavedModifications} to false and refreshes the necessary components within the analysis
-	 * editor * to make this visible.
+	 * editor to make this visible.
 	 */
-	private synchronized void clearModificationsFlag() {
+	private void clearModificationsFlag() {
 		this.unsavedModifications = false;
 		RequestContext.getCurrentInstance().update("menuForm");
 	}
@@ -362,7 +362,7 @@ public class CurrentAnalysisEditorBean {
 	 * This method sets the property {@link CurrentAnalysisEditorBean#unsavedModifications} to true and refreshes the necessary components within the analysis editor
 	 * to make this visible.
 	 */
-	private synchronized void setModificationsFlag() {
+	private void setModificationsFlag() {
 		this.unsavedModifications = true;
 		RequestContext.getCurrentInstance().update("menuForm");
 	}
@@ -372,7 +372,7 @@ public class CurrentAnalysisEditorBean {
 	 * 
 	 * @return The current value of the property.
 	 */
-	public synchronized boolean isUnsavedModification() {
+	public boolean isUnsavedModification() {
 		return this.unsavedModifications;
 	}
 
@@ -383,7 +383,7 @@ public class CurrentAnalysisEditorBean {
 	 * @return A list with all properties of the plugin plus the name- and class-properties. If no plugin is selected, the list of the selected repository is
 	 *         delivered.
 	 */
-	public synchronized List<Object> getAdvancedPluginProperties() {
+	public List<Object> getAdvancedPluginProperties() {
 		final List<Object> result = new ArrayList<Object>();
 
 		// Add the properties as strings
@@ -409,7 +409,7 @@ public class CurrentAnalysisEditorBean {
 	 *            The property name.
 	 * @return A human readable description and a substitution if there is no description.
 	 */
-	public synchronized String getDescription(final MIAnalysisComponent component, final String property) {
+	public String getDescription(final MIAnalysisComponent component, final String property) {
 		IComponentContainer container = null;
 
 		// Find the container which contains the component
@@ -454,7 +454,7 @@ public class CurrentAnalysisEditorBean {
 	 * @param event
 	 *            The change event.
 	 */
-	public synchronized void gridColorListener(final ValueChangeEvent event) {
+	public void gridColorListener(final ValueChangeEvent event) {
 		this.currentAnalysisEditorGraphBean.setGridColor((String) event.getNewValue());
 	}
 
@@ -464,7 +464,7 @@ public class CurrentAnalysisEditorBean {
 	 * @param event
 	 *            The change event.
 	 */
-	public synchronized void gridSizeListener(final ValueChangeEvent event) {
+	public void gridSizeListener(final ValueChangeEvent event) {
 		this.currentAnalysisEditorGraphBean.setGridSize((Integer) event.getNewValue());
 	}
 
@@ -472,7 +472,7 @@ public class CurrentAnalysisEditorBean {
 	 * This method initializes the modified jit-graph by delivering the necessary javascript commands to the client. It prints all current existing plugins,
 	 * repositories and their connections. All further components will be added mostly by other methods.
 	 */
-	public synchronized void initializeGraph() {
+	public void initializeGraph() {
 		// Make sure that the currentAnalysisEditorGraphBean knows "this" as well.
 		this.currentAnalysisEditorGraphBean.setCurrentAnalysisEditorBean(this);
 
@@ -536,7 +536,7 @@ public class CurrentAnalysisEditorBean {
 	 * @param node
 	 *            The new node to be selected.
 	 */
-	public synchronized void nodeSelected(final MIAnalysisComponent node) {
+	public void nodeSelected(final MIAnalysisComponent node) {
 		this.selectedComponent = node;
 	}
 
@@ -546,7 +546,7 @@ public class CurrentAnalysisEditorBean {
 	 * @param node
 	 *            The new node to be removed.
 	 */
-	public synchronized void nodeRemoved(final MIAnalysisComponent node) {
+	public void nodeRemoved(final MIAnalysisComponent node) {
 		// Remove the component from the project
 		if (node instanceof MIPlugin) {
 			this.project.getPlugins().remove(node);
@@ -593,7 +593,7 @@ public class CurrentAnalysisEditorBean {
 	 * @param targetPort
 	 *            The target port.
 	 */
-	public synchronized void edgeCreated(final MIOutputPort sourcePort, final MIInputPort targetPort) {
+	public void edgeCreated(final MIOutputPort sourcePort, final MIInputPort targetPort) {
 		sourcePort.getSubscribers().add(targetPort);
 
 		this.setModificationsFlag();
@@ -607,7 +607,7 @@ public class CurrentAnalysisEditorBean {
 	 * @param targetPort
 	 *            The target port.
 	 */
-	public synchronized void edgeRemoved(final MIOutputPort sourcePort, final MIInputPort targetPort) {
+	public void edgeRemoved(final MIOutputPort sourcePort, final MIInputPort targetPort) {
 		sourcePort.getSubscribers().remove(targetPort);
 
 		this.setModificationsFlag();
@@ -621,7 +621,7 @@ public class CurrentAnalysisEditorBean {
 	 * @param target
 	 *            The target repository.
 	 */
-	public synchronized void edgeCreated(final MIRepositoryConnector sourcePort, final MIRepository target) {
+	public void edgeCreated(final MIRepositoryConnector sourcePort, final MIRepository target) {
 		sourcePort.setRepository(target);
 
 		this.setModificationsFlag();
@@ -635,7 +635,7 @@ public class CurrentAnalysisEditorBean {
 	 * @param target
 	 *            The target repository.
 	 */
-	public synchronized void edgeRemoved(final MIRepositoryConnector sourcePort, final MIRepository target) {
+	public void edgeRemoved(final MIRepositoryConnector sourcePort, final MIRepository target) {
 		sourcePort.setRepository(null);
 
 		this.setModificationsFlag();
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentAnalysisEditorGraphBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentAnalysisEditorGraphBean.java
index 1c836f60..7d616f5b 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentAnalysisEditorGraphBean.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentAnalysisEditorGraphBean.java
@@ -127,7 +127,7 @@ public class CurrentAnalysisEditorGraphBean {
 	/**
 	 * Declares the the graph variable.
 	 */
-	public synchronized void declareGraph() {
+	public void declareGraph() {
 		RequestContext.getCurrentInstance().execute(CurrentAnalysisEditorGraphBean.JS_CMD_CREATE_GRAPH_VAR);
 
 		RequestContext.getCurrentInstance().execute(CurrentAnalysisEditorGraphBean.JS_CMD_SET_FILTER_ICON);
@@ -138,7 +138,7 @@ public class CurrentAnalysisEditorGraphBean {
 	/**
 	 * Initializes the listeners for the graph.
 	 */
-	public synchronized void initListeners() {
+	public void initListeners() {
 		RequestContext.getCurrentInstance().execute(CurrentAnalysisEditorGraphBean.JS_CMD_ADD_CLICK_NODE_LISTENER);
 		RequestContext.getCurrentInstance().execute(CurrentAnalysisEditorGraphBean.JS_CMD_ADD_AUTO_LAYOUT_LISTENER);
 		RequestContext.getCurrentInstance().execute(CurrentAnalysisEditorGraphBean.JS_CMD_ADD_REMOVE_NODE_LISTENER);
@@ -151,14 +151,14 @@ public class CurrentAnalysisEditorGraphBean {
 	/**
 	 * This method initializes the auto layout of the graph, resulting in a javascript event, delivering the necessary information about the graph.
 	 */
-	public synchronized void startAutoLayout() {
+	public void startAutoLayout() {
 		RequestContext.getCurrentInstance().execute(CurrentAnalysisEditorGraphBean.JS_CMD_START_AUTO_LAYOUT);
 	}
 
 	/**
 	 * This method uses the given parameters (via request parameter map) to calculate a new layout for the graph and use this layout.
 	 */
-	public synchronized void autoLayout() {
+	public void autoLayout() {
 		try {
 			// Get the parameters
 			final Map<String, String> paramMap = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
@@ -179,7 +179,7 @@ public class CurrentAnalysisEditorGraphBean {
 	/**
 	 * Adds the edge constraints to the graph.
 	 */
-	public synchronized void addEdgeConstraints() {
+	public void addEdgeConstraints() {
 		RequestContext.getCurrentInstance().execute(CurrentAnalysisEditorGraphBean.JS_CMD_ADD_EDGE_CONSTRAINTS);
 	}
 
@@ -189,7 +189,7 @@ public class CurrentAnalysisEditorGraphBean {
 	 * @param filter
 	 *            The filter which should be added to the graph.
 	 */
-	public synchronized void addFilter(final MIFilter filter) {
+	public void addFilter(final MIFilter filter) {
 		RequestContext.getCurrentInstance().execute(
 				String.format(CurrentAnalysisEditorGraphBean.JS_CMD_ADD_FILTER, 0, 0, this.assembleGraphString(filter),
 						this.assembleGraphRepositoryPortString(filter.getRepositories()), this.assembleGraphInputPortString(filter),
@@ -202,7 +202,7 @@ public class CurrentAnalysisEditorGraphBean {
 	 * @param reader
 	 *            The reader which should be added to the graph.
 	 */
-	public synchronized void addReader(final MIReader reader) {
+	public void addReader(final MIReader reader) {
 		RequestContext.getCurrentInstance().execute(String.format(CurrentAnalysisEditorGraphBean.JS_CMD_ADD_READER, 0, 0, this.assembleGraphString(reader),
 				this.assembleGraphRepositoryPortString(reader.getRepositories()), this.assembleGraphOutputPortString(reader)));
 	}
@@ -213,7 +213,7 @@ public class CurrentAnalysisEditorGraphBean {
 	 * @param repository
 	 *            The repository which should be added to the graph.
 	 */
-	public synchronized void addRepository(final MIRepository repository) {
+	public void addRepository(final MIRepository repository) {
 		final String repoPort = String.format(CurrentAnalysisEditorGraphBean.JS_CMD_PORT, CurrentAnalysisEditorGraphBean.JS_CMD_PORT_TYPE_INPUT,
 				CurrentAnalysisEditorGraphBean.REPOSITORY_INPUT_PORT, "N/A");
 		RequestContext.getCurrentInstance().execute(String.format(CurrentAnalysisEditorGraphBean.JS_CMD_ADD_REPOSITORY, 0, 0,
@@ -232,7 +232,7 @@ public class CurrentAnalysisEditorGraphBean {
 	 * @param inputPort
 	 *            The input port.
 	 */
-	public synchronized void addConnection(final MIPlugin source, final MIPlugin destination, final MIOutputPort outputPort, final MIInputPort inputPort) {
+	public void addConnection(final MIPlugin source, final MIPlugin destination, final MIOutputPort outputPort, final MIInputPort inputPort) {
 		RequestContext.getCurrentInstance().execute(String.format(CurrentAnalysisEditorGraphBean.JS_CMD_ADD_EDGE, this.assembleGraphPortID(source, outputPort),
 				this.assembleGraphPortID(destination, inputPort), ""));
 	}
@@ -247,7 +247,7 @@ public class CurrentAnalysisEditorGraphBean {
 	 * @param port
 	 *            The repository port.
 	 */
-	public synchronized void addConnection(final MIPlugin source, final MIRepository destination, final MIRepositoryConnector port) {
+	public void addConnection(final MIPlugin source, final MIRepository destination, final MIRepositoryConnector port) {
 		RequestContext.getCurrentInstance().execute(String.format(CurrentAnalysisEditorGraphBean.JS_CMD_ADD_EDGE, this.assembleGraphPortID(source, port),
 				this.assembleGraphPortID(destination), ""));
 	}
@@ -259,7 +259,7 @@ public class CurrentAnalysisEditorGraphBean {
 	 *            The ports to be used within the string command.
 	 * @return A string containing the JS commands to create the ports.
 	 */
-	private synchronized String assembleGraphPortString(final EList<? extends MIPort> ports) {
+	private String assembleGraphPortString(final EList<? extends MIPort> ports) {
 		final StringBuilder builder = new StringBuilder();
 		final int len = ports.size();
 
@@ -285,7 +285,7 @@ public class CurrentAnalysisEditorGraphBean {
 	 *            The ports which will be used.
 	 * @return A string containing the JS commands to create the repository ports.
 	 */
-	private synchronized String assembleGraphRepositoryPortString(final EList<MIRepositoryConnector> ports) {
+	private String assembleGraphRepositoryPortString(final EList<MIRepositoryConnector> ports) {
 		final StringBuilder builder = new StringBuilder();
 		final int len = ports.size();
 
@@ -310,7 +310,7 @@ public class CurrentAnalysisEditorGraphBean {
 	 *            The filter whose input ports will be used.
 	 * @return A string containing the JS commands to create the input ports.
 	 */
-	private synchronized String assembleGraphInputPortString(final MIFilter filter) {
+	private String assembleGraphInputPortString(final MIFilter filter) {
 		return this.assembleGraphPortString(filter.getInputPorts());
 	}
 
@@ -321,7 +321,7 @@ public class CurrentAnalysisEditorGraphBean {
 	 *            The plugin whose output ports will be used.
 	 * @return A string containing the JS commands to create the output ports.
 	 */
-	private synchronized String assembleGraphOutputPortString(final MIPlugin plugin) {
+	private String assembleGraphOutputPortString(final MIPlugin plugin) {
 		return this.assembleGraphPortString(plugin.getOutputPorts());
 	}
 
@@ -334,7 +334,7 @@ public class CurrentAnalysisEditorGraphBean {
 	 *            The port itself.
 	 * @return The ID for the port within the graph
 	 */
-	private synchronized String assembleGraphPortID(final MIPlugin plugin, final MIPort port) {
+	private String assembleGraphPortID(final MIPlugin plugin, final MIPort port) {
 		return "id" + this.componentMap.get(plugin) + "." + this.portMap.get(port);
 	}
 
@@ -347,7 +347,7 @@ public class CurrentAnalysisEditorGraphBean {
 	 *            The port itself.
 	 * @return The ID for the port within the graph
 	 */
-	private synchronized Object assembleGraphPortID(final MIPlugin plugin, final MIRepositoryConnector port) {
+	private Object assembleGraphPortID(final MIPlugin plugin, final MIRepositoryConnector port) {
 		return "id" + this.componentMap.get(plugin) + "." + this.repositoryPortMap.get(port);
 	}
 
@@ -358,7 +358,7 @@ public class CurrentAnalysisEditorGraphBean {
 	 *            The parent repository of the port.
 	 * @return The ID for the port within the graph
 	 */
-	private synchronized Object assembleGraphPortID(final MIRepository repository) {
+	private Object assembleGraphPortID(final MIRepository repository) {
 		return "id" + this.componentMap.get(repository) + "." + CurrentAnalysisEditorGraphBean.REPOSITORY_INPUT_PORT;
 	}
 
@@ -369,7 +369,7 @@ public class CurrentAnalysisEditorGraphBean {
 	 *            The component whose ID should be delivered.
 	 * @return A human readable ID.
 	 */
-	private synchronized String assembleGraphString(final MIAnalysisComponent component) {
+	private String assembleGraphString(final MIAnalysisComponent component) {
 		final String name = component.getName();
 		final String className = component.getClassname();
 		final String shortName = className.substring(className.lastIndexOf('.') + 1);
@@ -383,7 +383,7 @@ public class CurrentAnalysisEditorGraphBean {
 	 * This is the action which can be called from the javascript code to show that a node has been clicked. It informs the connected
 	 * {@link CurrentAnalysisEditorBean} about this.
 	 */
-	public synchronized void nodeClicked() {
+	public void nodeClicked() {
 		// Get the parameters
 		final Map<String, String> paramMap = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
 		final String clickedNodeID = paramMap.get(CurrentAnalysisEditorGraphBean.PARAM_NAME_ID);
@@ -404,7 +404,7 @@ public class CurrentAnalysisEditorGraphBean {
 	 * This is the action which can be called from the javascript code to show that a node has been removed. It informs the connected
 	 * {@link CurrentAnalysisEditorBean} about this.
 	 */
-	public synchronized void nodeRemoved() {
+	public void nodeRemoved() {
 		// Get the parameters
 		final Map<String, String> paramMap = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
 		final String clickedNodeID = paramMap.get(CurrentAnalysisEditorGraphBean.PARAM_NAME_ID);
@@ -424,7 +424,7 @@ public class CurrentAnalysisEditorGraphBean {
 	 * This is the action which can be called from the javascript code to show that an edge has been created. It informs the connected
 	 * {@link CurrentAnalysisEditorBean} about this.
 	 */
-	public synchronized void edgeCreated() {
+	public void edgeCreated() {
 		// Get the parameters
 		final Map<String, String> paramMap = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
 
@@ -461,7 +461,7 @@ public class CurrentAnalysisEditorGraphBean {
 	 * This is the action which can be called from the javascript code to show that an edge has been removed. It informs the connected
 	 * {@link CurrentAnalysisEditorBean} about this.
 	 */
-	public synchronized void edgeRemoved() {
+	public void edgeRemoved() {
 		// Get the parameters
 		final Map<String, String> paramMap = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
 
@@ -499,7 +499,7 @@ public class CurrentAnalysisEditorGraphBean {
 	 * @param color
 	 *            The new color as a HTML color (FF0080 e.g.).
 	 */
-	public synchronized void setGridColor(final String color) {
+	public void setGridColor(final String color) {
 		final String cmd = String.format(CurrentAnalysisEditorGraphBean.JS_CMD_SET_GRID_COLOR, "#" + color);
 		RequestContext.getCurrentInstance().execute(cmd);
 	}
@@ -510,7 +510,7 @@ public class CurrentAnalysisEditorGraphBean {
 	 * @param size
 	 *            The new grid size.
 	 */
-	public synchronized void setGridSize(final int size) {
+	public void setGridSize(final int size) {
 		final String cmd = String.format(CurrentAnalysisEditorGraphBean.JS_CMD_SET_GRID_SIZE, size);
 		RequestContext.getCurrentInstance().execute(cmd);
 	}
@@ -518,14 +518,14 @@ public class CurrentAnalysisEditorGraphBean {
 	/**
 	 * This method scales the graph to fit the current view. After this method-call, all components of the graph should be visible.
 	 */
-	public synchronized void scaleToFit() {
+	public void scaleToFit() {
 		RequestContext.getCurrentInstance().execute(CurrentAnalysisEditorGraphBean.JS_CMD_SCALE_TO_FIT);
 	}
 
 	/**
 	 * This method switches the visibility of the grid within the graph.
 	 */
-	public synchronized void switchGrid() {
+	public void switchGrid() {
 		if (this.gridEnabled) {
 			RequestContext.getCurrentInstance().execute(CurrentAnalysisEditorGraphBean.JS_CMD_DISABLE_GRID);
 		} else {
@@ -538,7 +538,7 @@ public class CurrentAnalysisEditorGraphBean {
 	/**
 	 * This method switches the grid snap within the graph.
 	 */
-	public synchronized void switchSnap() {
+	public void switchSnap() {
 		if (this.snapEnabled) {
 			RequestContext.getCurrentInstance().execute(CurrentAnalysisEditorGraphBean.JS_CMD_DISABLE_SNAP);
 		} else {
@@ -556,7 +556,7 @@ public class CurrentAnalysisEditorGraphBean {
 	 * @param newName
 	 *            The new name of the node.
 	 */
-	public synchronized void renameNode(final MIAnalysisComponent node, final String newName) {
+	public void renameNode(final MIAnalysisComponent node, final String newName) {
 		final String cmd = String.format(CurrentAnalysisEditorGraphBean.JS_CMD_RENAME_NODE, "id" + this.componentMap.get(node),
 				CurrentAnalysisEditorGraphBean.simpleEscape(newName));
 		RequestContext.getCurrentInstance().execute(cmd);
@@ -565,7 +565,7 @@ public class CurrentAnalysisEditorGraphBean {
 	/**
 	 * This method checks whether the current user is a guest and activates the read only mode if necessary.
 	 */
-	public synchronized void checkReadOnlyForGuests() {
+	public void checkReadOnlyForGuests() {
 		if ("Guest".equals(this.userBean.getUserrole())) {
 			RequestContext.getCurrentInstance().execute(CurrentAnalysisEditorGraphBean.JS_CMD_SET_READ_ONLY);
 		}
@@ -586,15 +586,15 @@ public class CurrentAnalysisEditorGraphBean {
 		}
 	}
 
-	public synchronized boolean isGridEnabled() {
+	public boolean isGridEnabled() {
 		return this.gridEnabled;
 	}
 
-	public synchronized boolean isSnapEnabled() {
+	public boolean isSnapEnabled() {
 		return this.snapEnabled;
 	}
 
-	public synchronized void setCurrentAnalysisEditorBean(final CurrentAnalysisEditorBean currentAnalysisEditorBean) {
+	public void setCurrentAnalysisEditorBean(final CurrentAnalysisEditorBean currentAnalysisEditorBean) {
 		this.currentAnalysisEditorBean = currentAnalysisEditorBean;
 	}
 
@@ -604,7 +604,7 @@ public class CurrentAnalysisEditorGraphBean {
 	 * @param layout
 	 *            The new layout for the graph.
 	 */
-	public synchronized void loadLayout(final String layout) {
+	public void loadLayout(final String layout) {
 		RequestContext.getCurrentInstance().execute(String.format(CurrentAnalysisEditorGraphBean.JS_CMD_LOAD_FROM_LAYOUT, layout));
 	}
 
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentCockpitBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentCockpitBean.java
index 9507edc1..4226352c 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentCockpitBean.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentCockpitBean.java
@@ -86,7 +86,7 @@ public class CurrentCockpitBean {
 	/**
 	 * Creates the initial dashboard object.
 	 */
-	private synchronized void createDashboard() {
+	private void createDashboard() {
 		final FacesContext fc = FacesContext.getCurrentInstance();
 		final Application application = fc.getApplication();
 
@@ -106,7 +106,7 @@ public class CurrentCockpitBean {
 	/**
 	 * Fills the initial dashboard object.
 	 */
-	private synchronized void fillDashboard() {
+	private void fillDashboard() {
 		// Dump the old entries
 		this.clearDashboard();
 
@@ -140,7 +140,7 @@ public class CurrentCockpitBean {
 	/**
 	 * Clears the dashboard and removes all children within it.
 	 */
-	private synchronized void clearDashboard() {
+	private void clearDashboard() {
 		// Run through all columns of the dashboard and remove the items
 		final List<DashboardColumn> columns = this.dashboard.getModel().getColumns();
 		for (final DashboardColumn column : columns) {
@@ -150,11 +150,11 @@ public class CurrentCockpitBean {
 		this.dashboard.getChildren().clear();
 	}
 
-	public synchronized MIProject getProject() {
+	public MIProject getProject() {
 		return this.project;
 	}
 
-	public synchronized void setProjectName(final String newName) {
+	public void setProjectName(final String newName) {
 		// Remember the given parameters
 		this.projectName = newName;
 	}
@@ -163,7 +163,7 @@ public class CurrentCockpitBean {
 	 * This method initializes the bean by using the current project name to load the project. <b>Do not call this method manually. It will only be accessed by
 	 * Spring.</b>
 	 */
-	public synchronized void initalize() {
+	public void initalize() {
 		try {
 			// Make sure that the initialization will only be done for the init request.
 			if (!FacesContext.getCurrentInstance().isPostback()) {
@@ -184,7 +184,7 @@ public class CurrentCockpitBean {
 		}
 	}
 
-	public synchronized String getProjectName() {
+	public String getProjectName() {
 		return this.projectName;
 	}
 
@@ -196,7 +196,7 @@ public class CurrentCockpitBean {
 	 * @return The current content of the display, if it exists. If the display does not exist or the active view is not set 'N/A' will be returned. If an access to
 	 *         the display fails, "Error" will be returned.
 	 */
-	public synchronized String updatePlainTextDisplay(final String displayName) {
+	public String updatePlainTextDisplay(final String displayName) {
 		if ((this.activeView != null) && (this.projectName != null)) {
 			try {
 				final Object displayObj = this.projectService.getDisplay(this.projectName, this.activeView.getName(), displayName);
@@ -215,7 +215,7 @@ public class CurrentCockpitBean {
 	 * 
 	 * @return Currently this method returns only N/A.
 	 */
-	public synchronized String updateHtmlTextDisplay() {
+	public String updateHtmlTextDisplay() {
 		return "N/A";
 	}
 
@@ -224,11 +224,11 @@ public class CurrentCockpitBean {
 	 * 
 	 * @return Currently this method returns only N/A.
 	 */
-	public synchronized String updateImageDisplay() {
+	public String updateImageDisplay() {
 		return "N/A";
 	}
 
-	public synchronized MIView getActiveView() {
+	public MIView getActiveView() {
 		return this.activeView;
 	}
 
@@ -238,13 +238,13 @@ public class CurrentCockpitBean {
 	 * @param activeView
 	 *            The new active view.
 	 */
-	public synchronized void setActiveView(final MIView activeView) {
+	public void setActiveView(final MIView activeView) {
 		this.activeView = activeView;
 
 		this.fillDashboard();
 	}
 
-	public synchronized Dashboard getDashboard() {
+	public Dashboard getDashboard() {
 		return this.dashboard;
 	}
 
@@ -254,7 +254,7 @@ public class CurrentCockpitBean {
 	 * @param dashboard
 	 *            The new value for the property.
 	 */
-	public synchronized void setDashboard(final Dashboard dashboard) {
+	public void setDashboard(final Dashboard dashboard) {
 		this.dashboard = dashboard;
 		this.dashboard.setModel(this.dashboardModel);
 	}
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentCockpitEditorBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentCockpitEditorBean.java
index b49c2c4c..37f2d079 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentCockpitEditorBean.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentCockpitEditorBean.java
@@ -113,14 +113,14 @@ public class CurrentCockpitEditorBean {
 	 * 
 	 * @return The selected connector.
 	 */
-	public synchronized MIDisplayConnector getSelectedNode() {
+	public MIDisplayConnector getSelectedNode() {
 		return this.selectedNode;
 	}
 
 	/**
 	 * Creates the initial dashboard object.
 	 */
-	private synchronized void createDashboard() {
+	private void createDashboard() {
 		final FacesContext fc = FacesContext.getCurrentInstance();
 		final Application application = fc.getApplication();
 
@@ -137,14 +137,14 @@ public class CurrentCockpitEditorBean {
 		this.dashboard.setModel(this.dashboardModel);
 	}
 
-	public synchronized boolean isUnsavedModification() {
+	public boolean isUnsavedModification() {
 		return this.unsavedModifications;
 	}
 
 	/**
 	 * Fills the initial dashboard object.
 	 */
-	private synchronized void fillDashboard() {
+	private void fillDashboard() {
 		// Dump the old entries
 		this.clearDashboard();
 
@@ -178,7 +178,7 @@ public class CurrentCockpitEditorBean {
 	/**
 	 * Clears the dashboard and removes all children within it.
 	 */
-	private synchronized void clearDashboard() {
+	private void clearDashboard() {
 		// Run through all columns of the dashboard and remove the items
 		final List<DashboardColumn> columns = this.dashboard.getModel().getColumns();
 		for (final DashboardColumn column : columns) {
@@ -192,7 +192,7 @@ public class CurrentCockpitEditorBean {
 	 * This method initializes the bean by using the current project name to load the project. <b>Do not call this method manually. It will only be accessed by
 	 * Spring.</b>
 	 */
-	public synchronized void initalize() {
+	public void initalize() {
 
 		try {
 			// Make sure that the initialization will only be done for the init request.
@@ -221,7 +221,7 @@ public class CurrentCockpitEditorBean {
 	/**
 	 * Reloads the available components within this bean.
 	 */
-	private synchronized void reloadComponents() {
+	private void reloadComponents() {
 		this.availableComponents = this.projectService.getAvailableComponents(this.projectName);
 	}
 
@@ -230,7 +230,7 @@ public class CurrentCockpitEditorBean {
 	 * 
 	 * @return The project for this user.
 	 */
-	public synchronized MIProject getProject() {
+	public MIProject getProject() {
 		return this.project;
 	}
 
@@ -239,7 +239,7 @@ public class CurrentCockpitEditorBean {
 	 * 
 	 * @return A collection with two null objects.
 	 */
-	public synchronized Collection<Object> getProperties() {
+	public Collection<Object> getProperties() {
 		return Collections.nCopies(3, null);
 	}
 
@@ -249,7 +249,7 @@ public class CurrentCockpitEditorBean {
 	 * @param newName
 	 *            The name of the project.
 	 */
-	public synchronized void setProjectName(final String newName) {
+	public void setProjectName(final String newName) {
 		this.projectName = newName;
 	}
 
@@ -258,7 +258,7 @@ public class CurrentCockpitEditorBean {
 	 * 
 	 * @return The project name for this user.
 	 */
-	public synchronized String getProjectName() {
+	public String getProjectName() {
 		return this.projectName;
 	}
 
@@ -269,7 +269,7 @@ public class CurrentCockpitEditorBean {
 	 *            The display whose description should be extracted.
 	 * @return The description for the display or a substitute if none is available. This is in either case human readable.
 	 */
-	public synchronized String getDescription(final MIDisplay display) {
+	public String getDescription(final MIDisplay display) {
 		final String parentClassname = display.getParent().getClassname();
 		PluginContainer parentContainer = null;
 
@@ -304,7 +304,7 @@ public class CurrentCockpitEditorBean {
 	 * @param overwriteNewerProject
 	 *            This flag determines whether a newer project should be overwritten.
 	 */
-	public synchronized void saveProject(final boolean overwriteNewerProject) {
+	public void saveProject(final boolean overwriteNewerProject) {
 		try {
 			this.projectService.saveProject(this.projectName, this.project, this.timeStamp, overwriteNewerProject, this.userBean.getUsername(), null,
 					this.projectService.getCockpitLayout(this.projectName));
@@ -331,7 +331,7 @@ public class CurrentCockpitEditorBean {
 	 * This method sets the property {@link CurrentCockpitEditorBean#unsavedModifications} to false and refreshes the necessary components within the editor to make
 	 * this visible.
 	 */
-	private synchronized void clearModificationsFlag() {
+	private void clearModificationsFlag() {
 		this.unsavedModifications = false;
 		RequestContext.getCurrentInstance().update("menuForm");
 	}
@@ -340,7 +340,7 @@ public class CurrentCockpitEditorBean {
 	 * This method sets the property {@link CurrentCockpitEditorBean#unsavedModifications} to true and refreshes the necessary components within the editor
 	 * to make this visible.
 	 */
-	private synchronized void setModificationsFlag() {
+	private void setModificationsFlag() {
 		this.unsavedModifications = true;
 		RequestContext.getCurrentInstance().update("menuForm");
 	}
@@ -348,7 +348,7 @@ public class CurrentCockpitEditorBean {
 	/**
 	 * This method sets the time stamp to the current system time.
 	 */
-	public synchronized void resetTimeStamp() {
+	public void resetTimeStamp() {
 		this.timeStamp = System.currentTimeMillis();
 	}
 
@@ -358,7 +358,7 @@ public class CurrentCockpitEditorBean {
 	 * @param viewName
 	 *            The name of the new view.
 	 */
-	public synchronized void addView(final String viewName) {
+	public void addView(final String viewName) {
 		if (this.project != null) {
 			// Create the view and add it to our project
 			final MIView view = this.factory.createView();
@@ -370,7 +370,7 @@ public class CurrentCockpitEditorBean {
 		}
 	}
 
-	public synchronized MIView getActiveView() {
+	public MIView getActiveView() {
 		return this.activeView;
 	}
 
@@ -380,7 +380,7 @@ public class CurrentCockpitEditorBean {
 	 * @param view
 	 *            The new view.
 	 */
-	public synchronized void setActiveView(final MIView view) {
+	public void setActiveView(final MIView view) {
 		this.activeView = view;
 
 		this.fillDashboard();
@@ -393,7 +393,7 @@ public class CurrentCockpitEditorBean {
 	 *            The view to be removed.
 	 * 
 	 */
-	public synchronized void deleteView(final MIView view) {
+	public void deleteView(final MIView view) {
 		this.project.getViews().remove(view);
 
 		this.setModificationsFlag();
@@ -405,7 +405,7 @@ public class CurrentCockpitEditorBean {
 	 * @param display
 	 *            The display which should be added to the current view.
 	 */
-	public synchronized void addDisplayToView(final MIDisplay display) {
+	public void addDisplayToView(final MIDisplay display) {
 		if (this.activeView != null) {
 			final MIDisplayConnector connector = this.factory.createDisplayConnector();
 			connector.setDisplay(display);
@@ -441,7 +441,7 @@ public class CurrentCockpitEditorBean {
 	 * @param event
 	 *            The onChange-event.
 	 */
-	public synchronized void onChange(final TabChangeEvent event) {
+	public void onChange(final TabChangeEvent event) {
 		if (event.getData() instanceof MIView) {
 			this.setActiveView((MIView) event.getData());
 		}
@@ -450,7 +450,7 @@ public class CurrentCockpitEditorBean {
 	/**
 	 * This is the event if a node has been clicked and should be selected.
 	 */
-	public synchronized void nodeSelected() {
+	public void nodeSelected() {
 		final Map<String, String> paramMap = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
 
 		final String fullID = paramMap.get("id");
@@ -469,7 +469,7 @@ public class CurrentCockpitEditorBean {
 	 *            The name to be checked.
 	 * @return true iff the name exists already.
 	 */
-	private synchronized boolean existsDisplayConnectorName(final String name) {
+	private boolean existsDisplayConnectorName(final String name) {
 		// Make sure a view is selected
 		if (this.activeView == null) {
 			return false;
@@ -498,7 +498,7 @@ public class CurrentCockpitEditorBean {
 	 * @param value
 	 *            The new value.
 	 */
-	public synchronized void validateDisplayConnectorName(final FacesContext context, final UIComponent toValidate, final Object value) {
+	public void validateDisplayConnectorName(final FacesContext context, final UIComponent toValidate, final Object value) {
 		if ((value instanceof String) && (toValidate instanceof UIInput)) {
 			final boolean nameExists = this.existsDisplayConnectorName((String) value);
 			((UIInput) toValidate).setValid(!nameExists);
@@ -510,7 +510,7 @@ public class CurrentCockpitEditorBean {
 	 * 
 	 * @return The current value of the property.
 	 */
-	public synchronized Dashboard getDashboard() {
+	public Dashboard getDashboard() {
 		return this.dashboard;
 	}
 
@@ -520,7 +520,7 @@ public class CurrentCockpitEditorBean {
 	 * @param dashboard
 	 *            The new value for the property.
 	 */
-	public synchronized void setDashboard(final Dashboard dashboard) {
+	public void setDashboard(final Dashboard dashboard) {
 		this.dashboard = dashboard;
 		this.dashboard.setModel(this.dashboardModel);
 	}
@@ -530,7 +530,7 @@ public class CurrentCockpitEditorBean {
 	 * 
 	 * @return A list with the available components.
 	 */
-	public synchronized ComponentListContainer getAvailableComponents() {
+	public ComponentListContainer getAvailableComponents() {
 		return this.availableComponents;
 	}
 
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentControllerBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentControllerBean.java
index 5208ef05..ccd34501 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentControllerBean.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentControllerBean.java
@@ -62,20 +62,20 @@ public class CurrentControllerBean {
 		// No code necessary
 	}
 
-	public synchronized void setProjectName(final String newName) {
+	public void setProjectName(final String newName) {
 		// Remember the given parameters
 		this.projectName = newName;
 
 	}
 
-	public synchronized String getProjectName() {
+	public String getProjectName() {
 		return this.projectName;
 	}
 
 	/**
 	 * This method starts the current analysis and informs the user about a fail.
 	 */
-	public synchronized void startAnalysis() {
+	public void startAnalysis() {
 		this.addLogEntry("Starting Analysis for project '" + this.projectName + "'");
 		try {
 			this.projectService.startAnalysis(this.projectName);
@@ -92,7 +92,7 @@ public class CurrentControllerBean {
 	/**
 	 * This method stops the current analysis and informs the user about a fail.
 	 */
-	public synchronized void stopAnalysis() {
+	public void stopAnalysis() {
 		try {
 			this.addLogEntry("Stopping Analysis for project '" + this.projectName + "'");
 			synchronized (this) {
@@ -110,7 +110,7 @@ public class CurrentControllerBean {
 	/**
 	 * This method initializes the current analysis and informs the user about a fail.
 	 */
-	public synchronized void instantiateAnalysis() {
+	public void instantiateAnalysis() {
 		this.addLogEntry("Instantiating Analysis for project '" + this.projectName + "'");
 		try {
 			this.projectService.initializeAnalysis(this.projectName, this.projectService.getClassLoader(this.projectName, this)); // NOPMD (ClassLoader)
@@ -132,7 +132,7 @@ public class CurrentControllerBean {
 	/**
 	 * This method cleans the current analysis instance.
 	 */
-	public synchronized void cleanAnalysis() {
+	public void cleanAnalysis() {
 		this.addLogEntry("Cleaning Analysis for project '" + this.projectName + "'");
 		try {
 			this.projectService.cleanAnalysis(this.projectName);
@@ -151,7 +151,7 @@ public class CurrentControllerBean {
 	 * 
 	 * @return true if and only if the analysis is running.
 	 */
-	public synchronized boolean isAnalysisRunning() {
+	public boolean isAnalysisRunning() {
 		try {
 			return this.projectService.getCurrentState(this.projectName) == AnalysisController.STATE.RUNNING;
 		} catch (final ProjectNotExistingException ex) {
@@ -168,7 +168,7 @@ public class CurrentControllerBean {
 	 * 
 	 * @return true if and only if the analysis is ready to be started.
 	 */
-	public synchronized boolean isAnalysisReady() {
+	public boolean isAnalysisReady() {
 		try {
 			return this.projectService.getCurrentState(this.projectName) == AnalysisController.STATE.READY;
 		} catch (final ProjectNotExistingException ex) {
@@ -185,7 +185,7 @@ public class CurrentControllerBean {
 	 * 
 	 * @return true if and only if the analysis is <b>not</b> available.
 	 */
-	public synchronized boolean isAnalysisNotAvailable() {
+	public boolean isAnalysisNotAvailable() {
 		try {
 			return this.projectService.getCurrentState(this.projectName) == null;
 		} catch (final ProjectNotExistingException ex) {
@@ -202,7 +202,7 @@ public class CurrentControllerBean {
 	 * 
 	 * @return true if and only if the analysis has been terminated.
 	 */
-	public synchronized boolean isAnalysisTerminated() {
+	public boolean isAnalysisTerminated() {
 		try {
 			return this.projectService.getCurrentState(this.projectName) == AnalysisController.STATE.TERMINATED;
 		} catch (final ProjectNotExistingException ex) {
@@ -219,7 +219,7 @@ public class CurrentControllerBean {
 	 * 
 	 * @return true if and only if the analysis has failed.
 	 */
-	public synchronized boolean isAnalysisFailed() {
+	public boolean isAnalysisFailed() {
 		try {
 			return this.projectService.getCurrentState(this.projectName) == AnalysisController.STATE.FAILED;
 		} catch (final ProjectNotExistingException ex) {
@@ -236,7 +236,7 @@ public class CurrentControllerBean {
 	 * 
 	 * @return The current log entries.
 	 */
-	public synchronized Object[] getAnalysisLog() {
+	public Object[] getAnalysisLog() {
 		try {
 			return this.projectService.getLogEntries(this.projectName);
 		} catch (final AnalysisStateException ex) {
@@ -252,7 +252,7 @@ public class CurrentControllerBean {
 	 * 
 	 * @return The current log entries.
 	 */
-	public synchronized Collection<String> getViewLog() {
+	public Collection<String> getViewLog() {
 		return this.logEntries;
 	}
 
@@ -262,7 +262,7 @@ public class CurrentControllerBean {
 	 * @param cause
 	 *            The element to be added.
 	 */
-	private synchronized void addLogEntry(final Throwable cause) {
+	private void addLogEntry(final Throwable cause) {
 		final Writer result = new StringWriter();
 		final PrintWriter printWriter = new PrintWriter(result);
 		cause.printStackTrace(printWriter);
@@ -275,7 +275,7 @@ public class CurrentControllerBean {
 	 * @param msg
 	 *            The log message.
 	 */
-	private synchronized void addLogEntry(final String msg) {
+	private void addLogEntry(final String msg) {
 		final String finalMsg = new Date().toString() + " : " + msg;
 		if (this.logEntries.size() > 50) {
 			this.logEntries.remove(0);
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentUserManagementBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentUserManagementBean.java
index d0e05c64..548a0b48 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentUserManagementBean.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentUserManagementBean.java
@@ -65,7 +65,7 @@ public class CurrentUserManagementBean {
 	 * This method initializes the bean. <b>Do not call this method manually. It will only be accessed by Spring.</b>
 	 */
 	@PostConstruct
-	protected synchronized void initialialize() {
+	protected void initialialize() {
 		this.updateList();
 	}
 
@@ -81,7 +81,7 @@ public class CurrentUserManagementBean {
 	 * @param isEnabled
 	 *            Determines whether the user is enabled already or not.
 	 */
-	public synchronized void addUser(final String username, final String password, final Role role, final boolean isEnabled) {
+	public void addUser(final String username, final String password, final Role role, final boolean isEnabled) {
 		final User user = new User(username, password, role, isEnabled);
 		try {
 			// Add the user to the database and - if that didn't fail - to our list.
@@ -97,7 +97,7 @@ public class CurrentUserManagementBean {
 	/**
 	 * This method removes the currently selected user from the database and informs about success via the growl component.
 	 */
-	public synchronized void deleteUser() {
+	public void deleteUser() {
 		try {
 			this.userService.deleteUser(this.selectedUser);
 			this.availableUsers.remove(this.selectedUser);
@@ -111,7 +111,7 @@ public class CurrentUserManagementBean {
 	/**
 	 * This method edits the currently selected user within the database and informs about success via the growl component. The password will not be changed.
 	 */
-	public synchronized void editUser() {
+	public void editUser() {
 		try {
 			// This is the "normal" edit - make sure that the password won't be changed
 			this.selectedUserCopy.setPassword(null);
@@ -129,7 +129,7 @@ public class CurrentUserManagementBean {
 	/**
 	 * This method edits the currently selected user within the database and informs about success via the growl component. The password will be changed.
 	 */
-	public synchronized void editUserWithPassword() {
+	public void editUserWithPassword() {
 		try {
 			// Edit the user completely and replace the entry within our list
 			this.userService.editUser(this.selectedUserCopy);
@@ -148,7 +148,7 @@ public class CurrentUserManagementBean {
 	 * @param user
 	 *            The user whose state should be changed.
 	 */
-	public synchronized void changeUserEnableState(final User user) {
+	public void changeUserEnableState(final User user) {
 		try {
 			this.setSelectedUser(user);
 			this.selectedUserCopy.setEnabled(!this.selectedUserCopy.isEnabled());
@@ -166,7 +166,7 @@ public class CurrentUserManagementBean {
 	/**
 	 * Updates the list containing the available users.
 	 */
-	public synchronized void updateList() {
+	public void updateList() {
 		try {
 			this.availableUsers = this.userService.getUsers();
 		} catch (final DataAccessException ex) {
@@ -175,15 +175,15 @@ public class CurrentUserManagementBean {
 		}
 	}
 
-	public synchronized List<User> getUsers() {
+	public List<User> getUsers() {
 		return this.availableUsers;
 	}
 
-	public synchronized User getSelectedUser() {
+	public User getSelectedUser() {
 		return this.selectedUser;
 	}
 
-	public synchronized User getSelectedUserCopy() {
+	public User getSelectedUserCopy() {
 		return this.selectedUserCopy;
 	}
 
@@ -193,7 +193,7 @@ public class CurrentUserManagementBean {
 	 * @param selectedUser
 	 *            The new value of the property.
 	 */
-	public synchronized void setSelectedUser(final User selectedUser) {
+	public void setSelectedUser(final User selectedUser) {
 		// We remember the selected user, but we make also a copy. This is necessary, because otherwise we would have to do something like a rollback, if for example
 		// an edit within the DB fails.
 		this.selectedUser = selectedUser;
diff --git a/Kieker.WebGUI/src/main/webapp/WEB-INF/web.xml b/Kieker.WebGUI/src/main/webapp/WEB-INF/web.xml
index 4d6cb20d..720357f1 100644
--- a/Kieker.WebGUI/src/main/webapp/WEB-INF/web.xml
+++ b/Kieker.WebGUI/src/main/webapp/WEB-INF/web.xml
@@ -114,7 +114,7 @@
     </listener>
     
     <!-- Begin: Integration of Kieker's SessionAndTraceRegistrationFilter -->
-     <!-- <filter>
+    <!-- <filter>
         <filter-name>sessionAndTraceRegistrationFilter</filter-name>
         <filter-class>kieker.monitoring.probe.servlet.SessionAndTraceRegistrationFilter</filter-class>
         <init-param>
-- 
GitLab