Index: /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/web/WeblogParser.java
===================================================================
--- /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/web/WeblogParser.java	(revision 224)
+++ /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/web/WeblogParser.java	(revision 225)
@@ -37,5 +37,5 @@
 	/**
 	 * <p>
-	 * Minimal length of a session. All shorter sessions will be pruned.
+	 * Minimal length of a session. All shorter sessions will be pruned.<br>
 	 * Default: 2
 	 * </p>
@@ -45,9 +45,18 @@
 	/**
 	 * <p>
-	 * Maximal length of a session. All longer sessions will be prunde. Default:
-	 * 100
+	 * Maximal length of a session. All longer sessions will be pruned.<br>
+	 * Default: 100
 	 * </p>
 	 */
 	private int maxLength = 100;
+
+	/**
+	 * <p>
+	 * URL of the server that generated the log that is currently parser; null
+	 * of URL is not available.<br>
+	 * Default: null
+	 * </p>
+	 */
+	private String url = null;
 
 	/**
@@ -142,4 +151,17 @@
 	public void setMaxLength(int maxLength) {
 		this.maxLength = maxLength;
+	}
+
+	/**
+	 * <p>
+	 * Sets the URL of the server from which this log was generated. Often
+	 * required for replay generation
+	 * </p>
+	 * 
+	 * @param url
+	 *            URL of the server
+	 */
+	public void setUrl(String url) {
+		this.url = url;
 	}
 
@@ -203,6 +225,6 @@
 					List<String> getVars = extractGetVarsFromUri(uri);
 
-					WebEvent event = new WebEvent(path, timestamp, postedVars,
-							getVars);
+					WebEvent event = new WebEvent(url, path, timestamp,
+							postedVars, getVars);
 
 					// find session and add event
Index: /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/web/commands/CMDloadSessionsFromClickstream.java
===================================================================
--- /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/web/commands/CMDloadSessionsFromClickstream.java	(revision 224)
+++ /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/web/commands/CMDloadSessionsFromClickstream.java	(revision 225)
@@ -34,14 +34,21 @@
 		String source = (String) parameters.get(0);
 		String sequencesName = (String) parameters.get(1);
+		String serverUrl = "";
 		int timeout = -1;
 		int minLength = -1;
 		int maxLength = -1;
-		if (parameters.size() >= 4) {
-			timeout = Integer.parseInt((String) parameters.get(2));
-			minLength = Integer.parseInt((String) parameters.get(3));
-			maxLength = Integer.parseInt((String) parameters.get(4));
+		if( parameters.size()>=3 ) {
+			serverUrl = (String) parameters.get(2);
+		}
+		if (parameters.size() >= 5) {
+			timeout = Integer.parseInt((String) parameters.get(3));
+			minLength = Integer.parseInt((String) parameters.get(4));
+			maxLength = Integer.parseInt((String) parameters.get(5));
 		}
 
 		WeblogParser parser = new WeblogParser();
+		if( serverUrl!="" ) {
+			parser.setUrl(serverUrl);
+		}
 		if (timeout != -1) {
 			parser.setTimeout(timeout);
@@ -73,5 +80,5 @@
 	@Override
 	public void help() {
-		Console.println("Usage: loadSessionsFromClickstream <filename> <sequencesName> {<timeout> <minSessionLength> <maxSessionLength>}");
+		Console.println("Usage: loadSessionsFromClickstream <filename> <sequencesName> {<serverUrl>} {<timeout> <minSessionLength> <maxSessionLength>}");
 	}
 
Index: /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/web/data/WebEvent.java
===================================================================
--- /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/web/data/WebEvent.java	(revision 224)
+++ /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/web/data/WebEvent.java	(revision 225)
@@ -59,4 +59,6 @@
 	 * </p>
 	 * 
+	 * @param url
+	 *            URL of the server that received the event
 	 * @param path
 	 *            path of the URI
@@ -68,9 +70,9 @@
 	 *            GET variables send with the event
 	 */
-	public WebEvent(String path, long timestamp, List<String> postVars,
-			List<String> getVars) {
+	public WebEvent(String url, String path, long timestamp,
+			List<String> postVars, List<String> getVars) {
 		super(makeType(path, postVars, getVars));
 		this.timestamp = timestamp;
-		addReplayEvent(new WebRequest(path, postVars, getVars));
+		addReplayEvent(new WebRequest(url, path, postVars, getVars));
 	}
 
Index: /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/web/data/WebRequest.java
===================================================================
--- /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/web/data/WebRequest.java	(revision 224)
+++ /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/web/data/WebRequest.java	(revision 225)
@@ -9,5 +9,11 @@
  * <p>
  * Contains all information related to a web request, i.e., the path, the POST
- * variables and the GET variables.
+ * variables and the GET variables. The generated replay are for the command
+ * line tool {@code curl}. The requests do not contain correct values for the
+ * POST and GET request. Instead, only the parameters that are part of the
+ * requests are added and the values of the parameters are
+ * DATA_$PARAMNAME$_DATA, where $PARAMNAME$ is the upper case string of the
+ * parameter name. This allows test data generators to insert concrete values,
+ * as EventBench does not include a test data generator for web software.
  * </p>
  * 
@@ -47,4 +53,11 @@
 	/**
 	 * <p>
+	 * URL of the server.
+	 * </p>
+	 */
+	String serverUrl;
+
+	/**
+	 * <p>
 	 * Constructor. Creates a new WebRequest.
 	 * </p>
@@ -57,5 +70,7 @@
 	 *            GET variables of the request
 	 */
-	public WebRequest(String uri, List<String> postVars, List<String> getVars) {
+	public WebRequest(String url, String uri, List<String> postVars,
+			List<String> getVars) {
+		serverUrl = url;
 		targetUri = uri;
 		this.postVars = new ArrayList<String>(postVars); // defensive copy
@@ -70,6 +85,39 @@
 	@Override
 	public String getReplay() {
-		// TODO implement method
-		return null;
+		StringBuilder builder = new StringBuilder();
+		builder.append("curl");
+		if (!postVars.isEmpty()) {
+			boolean isFirstPost = true;
+			for (String postVar : postVars) {
+				if (isFirstPost) {
+					builder.append(" --data \"");
+					isFirstPost = false;
+				} else {
+					builder.append("&");
+				}
+				builder.append(postVar + "=DATA_" + postVar.toUpperCase()
+						+ "_DATA");
+			}
+			builder.append("\"");
+		}
+		builder.append(" ");
+		if (serverUrl != null) {
+			builder.append(serverUrl);
+		}
+		builder.append(targetUri);
+		if (!getVars.isEmpty()) {
+			boolean isFirstGet = true;
+			for (String getVar : getVars) {
+				if (isFirstGet) {
+					builder.append("?");
+					isFirstGet = false;
+				} else {
+					builder.append("&");
+				}
+				builder.append(getVar + "=DATA_" + getVar.toUpperCase()
+						+ "_DATA");
+			}
+		}
+		return builder.toString();
 	}
 
@@ -81,6 +129,5 @@
 	@Override
 	public String getTarget() {
-		// TODO implement method
-		return null;
+		return targetUri;
 	}
 
