Index: src/main/java/geniusweb/profilesserver/AutoUpdatingProfilesRepository.java
===================================================================
--- src/main/java/geniusweb/profilesserver/AutoUpdatingProfilesRepository.java	(revision 37)
+++ src/main/java/geniusweb/profilesserver/AutoUpdatingProfilesRepository.java	(revision 38)
@@ -86,5 +86,5 @@
 		// CHECK utf-8 compatibility? Do we need that anyway?
 		try (Writer out = new FileWriter(file, false)) {
-			out.write(Jackson.instance().writeValueAsString(profile));
+			out.write(Constants.getJackson().writeValueAsString(profile));
 		}
 		// trigger the update immediately, avoid wait for FileChecker.
@@ -245,5 +245,5 @@
 		Profile profile = null;
 		try {
-			profile = Jackson.instance().readValue(profilefile, Profile.class);
+			profile = Constants.getJackson().readValue(profilefile, Profile.class);
 		} catch (IOException e) {
 			log.log(Level.WARNING, "File " + profilefile
@@ -278,5 +278,5 @@
 		String expectedName = withoutExtension(domainfile.getName());
 		try {
-			domain = Jackson.instance().readValue(domainfile, Domain.class);
+			domain = Constants.getJackson().readValue(domainfile, Domain.class);
 		} catch (IOException e) {
 			log.log(Level.WARNING, "File " + domainfile
Index: src/main/java/geniusweb/profilesserver/Constants.java
===================================================================
--- src/main/java/geniusweb/profilesserver/Constants.java	(revision 38)
+++ src/main/java/geniusweb/profilesserver/Constants.java	(revision 38)
@@ -0,0 +1,62 @@
+package geniusweb.profilesserver;
+
+import java.lang.management.ManagementFactory;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.Set;
+
+import javax.management.MBeanServer;
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+import javax.management.Query;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+/**
+ * A central class containing the constants/configuration of the server.
+ * 
+ * <b> This class should is private to the server and should not be used by
+ * others. However servers that derive from this server can completely override
+ * this class to change the constants/configuration</b>
+ */
+public class Constants {
+	private static transient ObjectMapper jackson; // cache
+	private static transient String hostport = ""; // cache
+
+	/**
+	 * 
+	 * @return the object mapper, so that we can extend the objectmapper (with
+	 *         custom classes) centrally. Also allows us to cache the objectmapper
+	 */
+	public static ObjectMapper getJackson() {
+		if (jackson == null) {
+			jackson = new ObjectMapper();
+		}
+		return jackson;
+	}
+
+	/**
+	 * 
+	 * @return a string like "127.0.1.1:8080" containing the server address on which
+	 *         this service is running.
+	 * @throws UnknownHostException         if we can not get the host ip
+	 * @throws MalformedObjectNameException if we can not get the host ip
+	 */
+	public static String getIpAddressAndPort() throws UnknownHostException, MalformedObjectNameException {
+		synchronized (hostport) {
+			if (hostport.isEmpty()) {
+				MBeanServer beanServer = ManagementFactory.getPlatformMBeanServer();
+
+				Set<ObjectName> objectNames = beanServer.queryNames(new ObjectName("*:type=Connector,*"),
+						Query.match(Query.attr("protocol"), Query.value("HTTP/1.1")));
+
+				String host = InetAddress.getLocalHost().getHostAddress();
+				String port = objectNames.iterator().next().getKeyProperty("port");
+
+				hostport = host + ":" + port;
+			}
+			return hostport;
+		}
+
+	}
+}
Index: src/main/java/geniusweb/profilesserver/Jackson.java
===================================================================
--- src/main/java/geniusweb/profilesserver/Jackson.java	(revision 37)
+++ 	(revision )
@@ -1,22 +1,0 @@
-package geniusweb.profilesserver;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-/**
- * A central generator for the object mapper, so that we can extend the
- * objectmapper (with custom classes) centrally. Also allows us to cache the
- * objectmapper.
- * 
- * <b> This class should is private to the profiles server and should not be
- * used by others.</b>
- */
-public class Jackson {
-	private static ObjectMapper jackson;
-
-	public static ObjectMapper instance() {
-		if (jackson == null) {
-			jackson = new ObjectMapper();
-		}
-		return jackson;
-	}
-}
Index: src/main/java/geniusweb/profilesserver/websocket/GetProfileSocket.java
===================================================================
--- src/main/java/geniusweb/profilesserver/websocket/GetProfileSocket.java	(revision 37)
+++ src/main/java/geniusweb/profilesserver/websocket/GetProfileSocket.java	(revision 38)
@@ -27,5 +27,5 @@
 import geniusweb.profile.Profile;
 import geniusweb.profile.utilityspace.LinearAdditive;
-import geniusweb.profilesserver.Jackson;
+import geniusweb.profilesserver.Constants;
 import geniusweb.profilesserver.ProfilesRepository;
 import geniusweb.profilesserver.events.ChangeEvent;
@@ -99,5 +99,5 @@
 			try {
 				session.getBasicRemote().sendText(
-						Jackson.instance().writeValueAsString(filter(prof)));
+						Constants.getJackson().writeValueAsString(filter(prof)));
 			} catch (Exception e) {
 				e.printStackTrace();
Index: src/main/java/geniusweb/profilesserver/websocket/ProfilesListSocket.java
===================================================================
--- src/main/java/geniusweb/profilesserver/websocket/ProfilesListSocket.java	(revision 37)
+++ src/main/java/geniusweb/profilesserver/websocket/ProfilesListSocket.java	(revision 38)
@@ -24,5 +24,5 @@
 import javax.websocket.server.ServerEndpoint;
 
-import geniusweb.profilesserver.Jackson;
+import geniusweb.profilesserver.Constants;
 import geniusweb.profilesserver.ProfilesRepository;
 import geniusweb.profilesserver.events.ChangeEvent;
@@ -82,5 +82,5 @@
 		log.log(Level.FINER, "sending updated profiles");
 		session.getBasicRemote().sendText(
-				Jackson.instance().writeValueAsString(getDomainsProfiles()));
+				Constants.getJackson().writeValueAsString(getDomainsProfiles()));
 	}
 
