Browse Source

Dependency updates, small tweaks and attempt to resolve db issues.

trautonen 11 years ago
parent
commit
121a9d750a

+ 4 - 4
spark/pom.xml

@@ -10,10 +10,10 @@
 
     <properties>
         <java-version>1.7</java-version>
-        <spark-version>1.1</spark-version>
-        <hibernate-version>4.2.6.Final</hibernate-version>
+        <spark-version>1.1.1</spark-version>
+        <hibernate-version>4.3.0.Final</hibernate-version>
         <gson-version>2.2.4</gson-version>
-        <mysql-connector-version>5.1.26</mysql-connector-version>
+        <mysql-connector-version>5.1.28</mysql-connector-version>
         <slf4j-version>1.7.5</slf4j-version>
     </properties>
 
@@ -29,7 +29,7 @@
         <dependency>
             <groupId>javax.servlet</groupId>
             <artifactId>javax.servlet-api</artifactId>
-            <version>3.0.1</version>
+            <version>3.1.0</version>
             <scope>provided</scope>
         </dependency>
         <dependency>

+ 18 - 9
spark/src/main/java/hello/web/HibernateUtil.java

@@ -4,13 +4,17 @@ import hello.domain.World;
 
 import org.hibernate.Session;
 import org.hibernate.SessionFactory;
+import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
 import org.hibernate.cfg.AvailableSettings;
 import org.hibernate.cfg.Configuration;
 import org.hibernate.dialect.MySQLDialect;
-import org.hibernate.service.ServiceRegistryBuilder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class HibernateUtil {
 
+    private static final Logger LOGGER = LoggerFactory.getLogger(HibernateUtil.class);
+    
     private static final SessionFactory SESSION_FACTORY = createSessionFactory();
     private static final ThreadLocal<Session> SESSIONS = new ThreadLocal<>();
     
@@ -32,14 +36,19 @@ public class HibernateUtil {
     }
     
     private static SessionFactory createSessionFactory() {
-        Configuration configuration = configuration();
-        configuration.setProperty(AvailableSettings.DIALECT, MySQLDialect.class.getName());
-        configuration.setProperty(AvailableSettings.USE_QUERY_CACHE, "false");
-        configuration.setProperty(AvailableSettings.SHOW_SQL, "false");
-        configuration.setProperty(AvailableSettings.CURRENT_SESSION_CONTEXT_CLASS, "thread");
-        configuration.addAnnotatedClass(World.class);
-        ServiceRegistryBuilder serviceRegistryBuilder = new ServiceRegistryBuilder().applySettings(configuration.getProperties());
-        return configuration.buildSessionFactory(serviceRegistryBuilder.buildServiceRegistry());
+        try {
+            Configuration configuration = configuration();
+            configuration.setProperty(AvailableSettings.DIALECT, MySQLDialect.class.getName());
+            configuration.setProperty(AvailableSettings.USE_QUERY_CACHE, "false");
+            configuration.setProperty(AvailableSettings.SHOW_SQL, "false");
+            configuration.setProperty(AvailableSettings.CURRENT_SESSION_CONTEXT_CLASS, "thread");
+            configuration.addAnnotatedClass(World.class);
+            StandardServiceRegistryBuilder serviceRegistryBuilder = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties());
+            return configuration.buildSessionFactory(serviceRegistryBuilder.build());
+        } catch (RuntimeException ex) {
+            LOGGER.error("Failed to create session factory");
+            throw ex;
+        }
     }
     
     private static Configuration configuration() {

+ 11 - 2
spark/src/main/java/hello/web/JsonTransformer.java

@@ -1,5 +1,8 @@
 package hello.web;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import spark.Request;
 import spark.Response;
 import spark.ResponseTransformerRoute;
@@ -8,6 +11,7 @@ import com.google.gson.Gson;
 
 public abstract class JsonTransformer extends ResponseTransformerRoute {
 
+    private static final Logger LOGGER            = LoggerFactory.getLogger(JsonTransformer.class);
     private static final Gson   GSON              = new Gson();
     private static final String CONTENT_TYPE_JSON = "application/json";
     
@@ -22,8 +26,13 @@ public abstract class JsonTransformer extends ResponseTransformerRoute {
 
     @Override
     public Object handle(final Request request, final Response response) {
-        response.type(CONTENT_TYPE_JSON);
-        return handleInternal(request, response);
+        try {
+            response.type(CONTENT_TYPE_JSON);
+            return handleInternal(request, response);
+        } catch (RuntimeException ex) {
+            LOGGER.error("Request handling failed", ex);
+            throw ex;
+        }
     }
     
     protected abstract Object handleInternal(Request request, Response response);

+ 29 - 0
spark/src/main/java/hello/web/LoggingRoute.java

@@ -0,0 +1,29 @@
+package hello.web;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import spark.Request;
+import spark.Response;
+import spark.Route;
+
+public abstract class LoggingRoute extends Route {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(LoggingRoute.class);
+    
+    public LoggingRoute(final String path) {
+        super(path);
+    }
+    
+    @Override
+    public Object handle(final Request request, final Response response) {
+        try {
+            return handleInternal(request, response);
+        } catch (RuntimeException ex) {
+            LOGGER.error("Request handling failed", ex);
+            throw ex;
+        }
+    }
+    
+    protected abstract Object handleInternal(Request request, Response response);
+}

+ 2 - 3
spark/src/main/java/hello/web/SparkApplication.java

@@ -14,7 +14,6 @@ import org.hibernate.Session;
 import spark.Filter;
 import spark.Request;
 import spark.Response;
-import spark.Route;
 
 public class SparkApplication implements spark.servlet.SparkApplication {
 
@@ -51,9 +50,9 @@ public class SparkApplication implements spark.servlet.SparkApplication {
                 return (param == null ? 1 : Integer.parseInt(param));
             }
         });
-        get(new Route("/plaintext") {
+        get(new LoggingRoute("/plaintext") {
             @Override
-            public Object handle(final Request request, final Response response) {
+            protected Object handleInternal(final Request request, final Response response) {
                 response.type(CONTENT_TYPE_TEXT);
                 return MESSAGE;
             }

+ 2 - 2
spark/src/main/resources/hibernate-local.cfg.xml

@@ -7,8 +7,8 @@
         <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hello_world?jdbcCompliantTruncation=false&amp;elideSetAutoCommits=true&amp;useLocalSessionState=true&amp;cachePrepStmts=true&amp;cacheCallableStmts=true&amp;alwaysSendSetIsolation=false&amp;prepStmtCacheSize=4096&amp;cacheServerConfiguration=true&amp;prepStmtCacheSqlLimit=2048&amp;zeroDateTimeBehavior=convertToNull&amp;traceProtocol=false&amp;useUnbufferedInput=false&amp;useReadAheadInput=false&amp;maintainTimeStats=false&amp;useServerPrepStmts&amp;cacheRSMetadata=true</property>
         <property name="hibernate.connection.username">benchmarkdbuser</property>
         <property name="hibernate.connection.password">benchmarkdbpass</property>
-        <property name="hibernate.c3p0.min_size">20</property>
-        <property name="hibernate.c3p0.max_size">20</property>
+        <property name="hibernate.c3p0.min_size">32</property>
+        <property name="hibernate.c3p0.max_size">256</property>
         <property name="hibernate.c3p0.timeout">1800</property>
         <property name="hibernate.c3p0.max_statements">50</property>
     </session-factory>

+ 1 - 0
spark/src/main/resources/log4j.properties

@@ -3,5 +3,6 @@ log4j.rootLogger=WARN, console
 log4j.appender.console=org.apache.log4j.ConsoleAppender
 log4j.appender.console.layout=org.apache.log4j.PatternLayout
 log4j.appender.console.layout.ConversionPattern=%d %-5p %c %x - %m%n
+log4j.appender.console.Target=System.err
 
 log4j.logger.hello=DEBUG