diff --git a/jbatch/src/main/java/org/apache/batchee/container/impl/controller/BaseStepController.java b/jbatch/src/main/java/org/apache/batchee/container/impl/controller/BaseStepController.java
index 63381aa..cdc35aa 100755
--- a/jbatch/src/main/java/org/apache/batchee/container/impl/controller/BaseStepController.java
+++ b/jbatch/src/main/java/org/apache/batchee/container/impl/controller/BaseStepController.java
@@ -46,8 +46,6 @@
 import javax.batch.runtime.JobInstance;
 import java.io.ByteArrayOutputStream;
 import java.io.ObjectOutputStream;
-import java.io.PrintWriter;
-import java.io.StringWriter;
 import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.List;
@@ -439,9 +437,6 @@
 
     private void rethrowWithMsg(final String msgBeginning, final Throwable t) {
         final String errorMsg = msgBeginning + " ; Caught exception/error: " + t.getLocalizedMessage();
-        final StringWriter sw = new StringWriter();
-        final PrintWriter pw = new PrintWriter(sw);
-        t.printStackTrace(pw);
         throw new BatchContainerRuntimeException(errorMsg, t);
     }
 
diff --git a/jbatch/src/main/java/org/apache/batchee/container/impl/controller/JobThreadRootController.java b/jbatch/src/main/java/org/apache/batchee/container/impl/controller/JobThreadRootController.java
index 403422a..8784cbe 100755
--- a/jbatch/src/main/java/org/apache/batchee/container/impl/controller/JobThreadRootController.java
+++ b/jbatch/src/main/java/org/apache/batchee/container/impl/controller/JobThreadRootController.java
@@ -36,8 +36,6 @@
 
 import javax.batch.api.listener.JobListener;
 import javax.batch.runtime.BatchStatus;
-import java.io.PrintWriter;
-import java.io.StringWriter;
 import java.sql.Timestamp;
 import java.util.List;
 import java.util.concurrent.BlockingQueue;
@@ -168,9 +166,7 @@
         try {
             jobListenersAfterJob();
         } catch (Throwable t) {
-            final StringWriter sw = new StringWriter();
-            final PrintWriter pw = new PrintWriter(sw);
-            t.printStackTrace(pw);
+            LOGGER.log(Level.SEVERE, t.getMessage(), t);
             batchStatusFailedFromException();
         }
 
diff --git a/jbatch/src/main/java/org/apache/batchee/container/util/BatchWorkUnit.java b/jbatch/src/main/java/org/apache/batchee/container/util/BatchWorkUnit.java
index 096e78f..af12594 100755
--- a/jbatch/src/main/java/org/apache/batchee/container/util/BatchWorkUnit.java
+++ b/jbatch/src/main/java/org/apache/batchee/container/util/BatchWorkUnit.java
@@ -24,8 +24,6 @@
 import org.apache.batchee.container.services.ServicesManager;
 
 import javax.batch.runtime.BatchStatus;
-import java.io.PrintWriter;
-import java.io.StringWriter;
 
 /*
  * I took out the 'work type' constant since I don't see that we want to use
@@ -65,10 +63,6 @@
                 getBatchKernel().jobExecutionDone(getJobExecutionImpl());
             }
         } catch (final Throwable t) {
-            final StringWriter sw = new StringWriter();
-            final PrintWriter pw = new PrintWriter(sw);
-            t.printStackTrace(pw);
-
             if (isNotifyCallbackWhenDone()) {
                 getBatchKernel().jobExecutionDone(getJobExecutionImpl());
             }
