From bb4982e302638efc618989df2aa9f0c28c60cb9b Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Mon, 13 Dec 2010 21:06:33 +0100 Subject: [PATCH] fix bug in JAXBStore, see http://jaxb.java.net/guide/Performance_and_thread_safety.html --- .../java/sonia/scm/boot/BootstrapListener.java | 4 ---- .../main/java/sonia/scm/store/JAXBStore.java | 17 ++++++----------- 2 files changed, 6 insertions(+), 15 deletions(-) diff --git a/scm-webapp/src/main/java/sonia/scm/boot/BootstrapListener.java b/scm-webapp/src/main/java/sonia/scm/boot/BootstrapListener.java index 90d2f2e0e3..f2eda228b0 100644 --- a/scm-webapp/src/main/java/sonia/scm/boot/BootstrapListener.java +++ b/scm-webapp/src/main/java/sonia/scm/boot/BootstrapListener.java @@ -39,13 +39,10 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import sonia.scm.SCMContext; -import sonia.scm.util.Util; //~--- JDK imports ------------------------------------------------------------ import java.io.File; -import java.io.FilenameFilter; -import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; @@ -53,7 +50,6 @@ import java.net.URLClassLoader; import java.util.LinkedList; import java.util.List; -import java.util.logging.Level; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; diff --git a/scm-webapp/src/main/java/sonia/scm/store/JAXBStore.java b/scm-webapp/src/main/java/sonia/scm/store/JAXBStore.java index fe76fb0c5a..dc01ff908b 100644 --- a/scm-webapp/src/main/java/sonia/scm/store/JAXBStore.java +++ b/scm-webapp/src/main/java/sonia/scm/store/JAXBStore.java @@ -45,7 +45,6 @@ import java.io.File; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; -import javax.xml.bind.Unmarshaller; /** * @@ -72,11 +71,7 @@ public class JAXBStore implements Store { try { - JAXBContext context = JAXBContext.newInstance(type); - - marshaller = context.createMarshaller(); - marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); - unmarshaller = context.createUnmarshaller(); + context = JAXBContext.newInstance(type); this.configFile = configFile; } catch (JAXBException ex) @@ -102,7 +97,7 @@ public class JAXBStore implements Store { try { - result = (T) unmarshaller.unmarshal(configFile); + result = (T) context.createUnmarshaller().unmarshal(configFile); } catch (JAXBException ex) { @@ -132,6 +127,9 @@ public class JAXBStore implements Store try { + Marshaller marshaller = context.createMarshaller(); + + marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); marshaller.marshal(object, configFile); } catch (JAXBException ex) @@ -146,8 +144,5 @@ public class JAXBStore implements Store private File configFile; /** Field description */ - private Marshaller marshaller; - - /** Field description */ - private Unmarshaller unmarshaller; + private JAXBContext context; }