Browse Source

Java Servlet + DSL model

DSL client java for JSON serialization
Rikard Pavelic 10 years ago
parent
commit
35d98bb8d8

+ 1 - 0
.travis.yml

@@ -72,6 +72,7 @@ env:
     - "TESTDIR=Java/restexpress"
     - "TESTDIR=Java/servlet"
     - "TESTDIR=Java/servlet3-cass"
+    - "TESTDIR=Java/servlet-dsl"
     - "TESTDIR=Java/spark"
     - "TESTDIR=Java/sabina"
     - "TESTDIR=Java/spring"

+ 29 - 0
frameworks/Java/servlet-dsl/README.md

@@ -0,0 +1,29 @@
+#DSL Servlet Benchmarking Test
+
+This servlet uses precompiled DSL model for endpoint communication.
+
+### DSL model
+Data structure is defined in an DSL schema
+
+* [DSL source](src/main/java/dsl/model.dsl)
+
+### JSON Encoding Test
+DSL client Java is used for JSON encoding.
+
+* [JSON test source](src/main/java/dsl/JsonServlet.java)
+
+## Infrastructure Software Versions
+The tests were run with:
+
+* [Oracle Java 1.7](https://www.oracle.com/java/)
+* [Resin 4.0](http://www.caucho.com/)
+* [DSL client Java 1.3](http://github.com/ngs-doo/dsl-client-java)
+
+## Test URLs
+### JSON Encoding Test
+
+http://localhost:8080/servlet-dsl/json
+
+### Plaintext Test
+
+http://localhost:8080/servlet-dsl/plaintext

+ 24 - 0
frameworks/Java/servlet-dsl/benchmark_config.json

@@ -0,0 +1,24 @@
+{
+  "framework": "servlet-dsl",
+  "tests": [{
+    "default": {
+      "setup_file": "setup",
+      "json_url": "/servlet-dsl/json",
+      "plaintext_url": "/servlet-dsl/plaintext",
+      "port": 8080,
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "None",
+      "framework": "servlet-dsl",
+      "language": "Java",
+      "orm": "None",
+      "platform": "Servlet",
+      "webserver": "Resin",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "servlet-dsl",
+      "notes": "",
+      "versus": "servlet"
+    }
+  }]
+}

+ 2 - 0
frameworks/Java/servlet-dsl/deploy.sh

@@ -0,0 +1,2 @@
+mvn install
+cp ./target/servlet-dsl.war ~/opt/resin/webapps/

+ 3 - 0
frameworks/Java/servlet-dsl/install.sh

@@ -0,0 +1,3 @@
+#!/bin/bash
+
+fw_depends java7 resin maven

BIN
frameworks/Java/servlet-dsl/model/dsl/gen-model/1.0/gen-model-1.0.jar


+ 1 - 0
frameworks/Java/servlet-dsl/model/dsl/gen-model/1.0/gen-model-1.0.jar.md5

@@ -0,0 +1 @@
+45b38e88d3eb838b78eb947e5b1e2578

+ 1 - 0
frameworks/Java/servlet-dsl/model/dsl/gen-model/1.0/gen-model-1.0.jar.sha1

@@ -0,0 +1 @@
+511b3dd6195eb1b0e5cc4b902c20fe184fed3ae4

+ 8 - 0
frameworks/Java/servlet-dsl/model/dsl/gen-model/1.0/gen-model-1.0.pom

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>dsl</groupId>
+  <artifactId>gen-model</artifactId>
+  <version>1.0</version>
+</project>

+ 1 - 0
frameworks/Java/servlet-dsl/model/dsl/gen-model/1.0/gen-model-1.0.pom.md5

@@ -0,0 +1 @@
+8518cdb4e2551b606362f56f046f5a2d

+ 1 - 0
frameworks/Java/servlet-dsl/model/dsl/gen-model/1.0/gen-model-1.0.pom.sha1

@@ -0,0 +1 @@
+1ce2d619e446a597ccb49800713be24cc7e24ae5

+ 12 - 0
frameworks/Java/servlet-dsl/model/dsl/gen-model/maven-metadata.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata>
+  <groupId>dsl</groupId>
+  <artifactId>gen-model</artifactId>
+  <version>1.0</version>
+  <versioning>
+    <versions>
+      <version>1.0</version>
+    </versions>
+    <lastUpdated>20150530090523</lastUpdated>
+  </versioning>
+</metadata>

+ 1 - 0
frameworks/Java/servlet-dsl/model/dsl/gen-model/maven-metadata.xml.md5

@@ -0,0 +1 @@
+e8adfc0495234223ccf282ae10fab448

+ 1 - 0
frameworks/Java/servlet-dsl/model/dsl/gen-model/maven-metadata.xml.sha1

@@ -0,0 +1 @@
+15b07c07f297f084a813f5b7b36b5c78ede343ab

+ 57 - 0
frameworks/Java/servlet-dsl/pom.xml

@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>bench.dsl</groupId>
+	<artifactId>dsl</artifactId>
+	<name>Servlet DSL</name>
+	<packaging>war</packaging>
+	<version>1.0.0-BUILD-SNAPSHOT</version>
+	<properties>
+		<java-version>1.7</java-version>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+	</properties>
+	<repositories>
+		<repository>
+			<id>model-in-project-repo</id>
+			<url>file:${project.basedir}/model</url>
+		</repository>
+	</repositories>
+	<dependencies>
+		<dependency>
+			<groupId>dsl</groupId>
+			<artifactId>gen-model</artifactId>
+			<version>1.0</version>
+		</dependency>
+		<dependency>
+			<groupId>com.dslplatform</groupId>
+			<artifactId>dsl-client-java</artifactId>
+			<version>1.3.0</version>
+		</dependency>
+		<dependency>
+			<groupId>javax.servlet</groupId>
+			<artifactId>servlet-api</artifactId>
+			<version>2.5</version>
+			<scope>provided</scope>
+		</dependency>
+	</dependencies>
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<configuration>
+					<source>${java-version}</source>
+					<target>${java-version}</target>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-war-plugin</artifactId>
+				<configuration>
+					<warName>servlet-dsl</warName>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+</project>

+ 11 - 0
frameworks/Java/servlet-dsl/setup.sh

@@ -0,0 +1,11 @@
+#!/bin/bash
+
+# load java environment variables
+source $IROOT/java7.installed
+
+export RESIN_HOME=${IROOT}/resin-4.0.41
+
+mvn clean compile war:war
+rm -rf $RESIN_HOME/webapps/*
+cp target/servlet-dsl.war $RESIN_HOME/webapps/
+$RESIN_HOME/bin/resinctl start

+ 10 - 0
frameworks/Java/servlet-dsl/source_code

@@ -0,0 +1,10 @@
+./servlet/src/main/
+./servlet/src/main/webapp
+./servlet/src/main/webapp/WEB-INF
+./servlet/src/main/webapp/WEB-INF/web.xml
+./servlet/src/main/java
+./servlet/src/main/java/dsl
+./servlet/src/main/java/dsl/JsonServlet.java
+./servlet/src/main/java/dsl/model.dsl
+./servlet/src/main/java/dsl/PlaintextServlet.java
+./servlet/src/main/java/dsl/Utils.java

+ 20 - 0
frameworks/Java/servlet-dsl/src/main/java/dsl/JsonServlet.java

@@ -0,0 +1,20 @@
+package dsl;
+
+import com.dslplatform.client.json.JsonWriter;
+import dsl.Bench.Message;
+
+import java.io.*;
+
+import javax.servlet.*;
+import javax.servlet.http.*;
+
+public class JsonServlet extends HttpServlet {
+	@Override
+	protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
+		res.setContentType("application/json");
+		final Message msg = new Message("Hello, World!");
+		final JsonWriter writer = Utils.getJson();
+		msg.serialize(writer, false);
+		writer.toStream(res.getOutputStream());
+	}
+}

+ 18 - 0
frameworks/Java/servlet-dsl/src/main/java/dsl/PlaintextServlet.java

@@ -0,0 +1,18 @@
+package dsl;
+
+import java.io.*;
+import java.nio.charset.Charset;
+
+import javax.servlet.*;
+import javax.servlet.http.*;
+
+public class PlaintextServlet extends HttpServlet {
+	private static final Charset utf8 = Charset.forName("UTF-8");
+	private static final byte[] HELLO_WORLD = "Hello, World!".getBytes(utf8);
+
+	@Override
+	protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
+		res.setContentType("text/plain");
+		res.getOutputStream().write(HELLO_WORLD);
+	}
+}

+ 19 - 0
frameworks/Java/servlet-dsl/src/main/java/dsl/Utils.java

@@ -0,0 +1,19 @@
+package dsl;
+
+import com.dslplatform.client.json.JsonWriter;
+
+public class Utils {
+
+	private static final ThreadLocal<JsonWriter> threadWriter = new ThreadLocal<JsonWriter>() {
+		@Override
+		protected JsonWriter initialValue() {
+			return new JsonWriter();
+		}
+	};
+
+	public static JsonWriter getJson() {
+		final JsonWriter writer = threadWriter.get();
+		writer.reset();
+		return writer;
+	}
+}

+ 5 - 0
frameworks/Java/servlet-dsl/src/main/java/dsl/model.dsl

@@ -0,0 +1,5 @@
+module Bench {
+    value Message {
+        string message;
+    }
+}

+ 20 - 0
frameworks/Java/servlet-dsl/src/main/webapp/WEB-INF/web.xml

@@ -0,0 +1,20 @@
+<web-app>
+	<servlet>
+		<servlet-name>json</servlet-name>
+		<servlet-class>dsl.JsonServlet</servlet-class>
+		<load-on-startup>2</load-on-startup>
+	</servlet>
+	<servlet-mapping>
+		<servlet-name>json</servlet-name>
+		<url-pattern>/json</url-pattern>
+	</servlet-mapping>
+	<servlet>
+		<servlet-name>plaintext</servlet-name>
+		<servlet-class>dsl.PlaintextServlet</servlet-class>
+		<load-on-startup>2</load-on-startup>
+	</servlet>
+	<servlet-mapping>
+		<servlet-name>plaintext</servlet-name>
+		<url-pattern>/plaintext</url-pattern>
+	</servlet-mapping>
+</web-app>