diff --git a/app/pom.xml b/app/pom.xml
index 9a0afa9..afc1db6 100644
--- a/app/pom.xml
+++ b/app/pom.xml
@@ -501,6 +501,12 @@
                 <dependencies>
                     <!-- Dependencies needed when using mvn jetty:run, not mvn test -->
                     <dependency>
+                        <groupId>commons-dbcp</groupId>
+                        <artifactId>commons-dbcp</artifactId>
+                        <version>1.4</version>
+                        <scope>runtime</scope>
+                    </dependency>
+                    <dependency>
                         <groupId>org.apache.derby</groupId>
                         <artifactId>derby</artifactId>
                         <version>${derby.version}</version>
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/RollerContext.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/RollerContext.java
index 1acc7f4..b4862dd 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/RollerContext.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/RollerContext.java
@@ -236,9 +236,7 @@
 
         String rememberMe = WebloggerConfig.getProperty("rememberme.enabled");
         boolean rememberMeEnabled = Boolean.valueOf(rememberMe);
-
         log.info("Remember Me enabled: " + rememberMeEnabled);
-
         context.setAttribute("rememberMeEnabled", rememberMe);
 
         if (!rememberMeEnabled) {
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/security/RollerRememberMeAuthenticationProvider.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/security/RollerRememberMeAuthenticationProvider.java
index a847abc..7c8b60c 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/security/RollerRememberMeAuthenticationProvider.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/security/RollerRememberMeAuthenticationProvider.java
@@ -36,7 +36,7 @@
         if ("springRocks".equals(key)) {
             throw new RuntimeException(
                 "If remember-me is to be enabled, rememberme.key must be specified in the roller " +
-                "properties file. Make sure it is a secret and make sure it is NOT be springRocks");
+                "properties file. Make sure it is a secret and make sure it is NOT springRocks");
         }
         setKey(key);
 
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/security/RollerRememberMeServices.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/security/RollerRememberMeServices.java
index 608d752..ec70518 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/security/RollerRememberMeServices.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/security/RollerRememberMeServices.java
@@ -41,11 +41,11 @@
         if ("springRocks".equals(key)) {
             throw new RuntimeException(
                 "If remember-me is to be enabled, rememberme.key must be specified in the roller " +
-                    "properties file. Make sure it is a secret and make sure it is NOT be springRocks");
+                    "properties file. Make sure it is a secret and make sure it is NOT springRocks");
         }
         setKey(key);
 
-        log.debug("initialized: RollerRememberMeServices with key: " + getKey());
+        log.debug("initialized: RollerRememberMeServices with key");
     }
 
     /**
diff --git a/app/src/test/java/org/apache/roller/planet/business/RomeFeedFetcherTest.java b/app/src/test/java/org/apache/roller/planet/business/RomeFeedFetcherTest.java
index b70c3f1..e5bac79 100644
--- a/app/src/test/java/org/apache/roller/planet/business/RomeFeedFetcherTest.java
+++ b/app/src/test/java/org/apache/roller/planet/business/RomeFeedFetcherTest.java
@@ -16,15 +16,13 @@
 
 package org.apache.roller.planet.business;
 
-import java.util.logging.Level;
-import java.util.logging.Logger;
 import junit.framework.TestCase;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.roller.weblogger.TestUtils;
 import org.apache.roller.planet.business.fetcher.FeedFetcher;
 import org.apache.roller.planet.business.fetcher.FetcherException;
 import org.apache.roller.planet.pojos.Subscription;
+import org.apache.roller.weblogger.TestUtils;
 import org.apache.roller.weblogger.business.WebloggerFactory;
 import org.junit.Ignore;
 
@@ -48,9 +46,23 @@
     
     protected void tearDown() throws Exception {
     }
-    
-    
+
+    static boolean shouldSkip() {
+
+        if (System.getProperty("java.version").startsWith("1.7")) {
+            log.warn("Skipping testFetchFeed because free-of-charge versions of " +
+                "Java 1.7 do not support TLS 1.2 which is now in common usage.");
+            return true;
+        }
+        return false;
+    }
+
     public void testFetchFeed() throws FetcherException {
+
+        if (shouldSkip()) {
+            return;
+        }
+
         try {
             FeedFetcher feedFetcher = WebloggerFactory.getWeblogger().getFeedFetcher();
             
@@ -71,6 +83,11 @@
     
     
     public void testFetchFeedConditionally() throws FetcherException {
+
+        if (shouldSkip()) {
+            return;
+        }
+
         try {
             FeedFetcher feedFetcher = WebloggerFactory.getWeblogger().getFeedFetcher();
             
diff --git a/app/src/test/java/org/apache/roller/planet/business/SingleThreadedFeedUpdaterTest.java b/app/src/test/java/org/apache/roller/planet/business/SingleThreadedFeedUpdaterTest.java
index ad89f3e..ca3f0e3 100644
--- a/app/src/test/java/org/apache/roller/planet/business/SingleThreadedFeedUpdaterTest.java
+++ b/app/src/test/java/org/apache/roller/planet/business/SingleThreadedFeedUpdaterTest.java
@@ -41,6 +41,7 @@
     
     
     protected void setUp() throws Exception {
+
         // setup planet
         TestUtils.setupWeblogger();
         
@@ -60,7 +61,11 @@
     
     
     public void testUpdateSubscription() throws Exception {
-        
+
+        if (RomeFeedFetcherTest.shouldSkip()) {
+            return;
+        }
+
         PlanetManager mgr = WebloggerFactory.getWeblogger().getPlanetManager();
         Subscription sub = mgr.getSubscriptionById(testSub.getId());
         
diff --git a/app/src/test/resources/jetty.xml b/app/src/test/resources/jetty.xml
index 995ea1d..0809395 100644
--- a/app/src/test/resources/jetty.xml
+++ b/app/src/test/resources/jetty.xml
@@ -1,26 +1,42 @@
-<?xml version="1.0"?>
-<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
-<Configure id="Server" class="org.eclipse.jetty.server.Server">
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  The ASF licenses this file to You
+  under the Apache License, Version 2.0 (the "License"); you may not
+  use this file except in compliance with the License.
+  You may obtain a copy of the License at
 
-    <!-- Dummy values used only when testing with Jetty via mvn jetty:run -->
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.  For additional information regarding
+  copyright in this work, please see the NOTICE file in the top level
+  directory of this distribution.
+-->
+<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_3.dtd">
+
+<!-- Dummy values used only when testing with Jetty via mvn jetty:run -->
+
+<Configure>
 
     <New id="ds" class="org.eclipse.jetty.plus.jndi.Resource">
-        <Arg>
-            <Ref id="wac_ds"/>
-        </Arg>
+        <Arg> <Ref id="wac_ds"/> </Arg>
         <Arg>jdbc/rollerdb</Arg>
         <Arg>
-            <New class="org.apache.derby.jdbc.EmbeddedDataSource">
-                <Set name="databaseName">rollerdb</Set>
-                <Set name="createDatabase">create</Set>
+            <New class="org.apache.commons.dbcp.BasicDataSource">
+                <Set name="driverClassName">org.apache.derby.jdbc.ClientDriver</Set>
+                <Set name="url">jdbc:derby://localhost:4224/memory:rollerdb;create=true</Set>
+                <Set name="username">app</Set>
+                <Set name="password">app</Set>
             </New>
         </Arg>
     </New>
 
     <New id="mail" class="org.eclipse.jetty.plus.jndi.Resource">
-        <Arg>
-            <Ref id="wac_mail"/>
-        </Arg>
+        <Arg> <Ref id="wac_mail"/> </Arg>
         <Arg>mail/Session</Arg>
         <Arg>
             <New class="org.eclipse.jetty.jndi.factories.MailSessionReference">
diff --git a/app/src/test/resources/jndi.properties b/app/src/test/resources/jndi.properties
deleted file mode 100644
index e11ee86..0000000
--- a/app/src/test/resources/jndi.properties
+++ /dev/null
@@ -1,4 +0,0 @@
-java.naming.factory.initial=org.osjava.sj.SimpleContextFactory
-org.osjava.sj.root=src/test/resources/simple-jndi
-org.osjava.sj.colon.replace=--
-org.osjava.sj.delimiter=/
\ No newline at end of file
