diff --git a/build/solaris/makefiles/Defs.gmk b/build/solaris/makefiles/Defs.gmk
index 3028ac7..6a041b7 100644
--- a/build/solaris/makefiles/Defs.gmk
+++ b/build/solaris/makefiles/Defs.gmk
@@ -29,9 +29,9 @@
 # Default JAVAHOME
 #
 ifeq ($(ARCH), sparc)
-    _JAVAHOME = /java/re/jdk/1.4.2/archive/fcs/binaries/solaris-sparc
+    _JAVAHOME = /java/re/jdk/1.5.0/archive/fcs/binaries/solaris-sparc
 else
-    _JAVAHOME = /java/re/jdk/1.4.2/archive/fcs/binaries/solaris-i586
+    _JAVAHOME = /java/re/jdk/1.5.0/archive/fcs/binaries/solaris-i586
 endif
 
 #
@@ -183,7 +183,7 @@
 #
 # Invoking the Java compiler
 #
-JAVAC_CMD = $(JAVAC) -source 1.4
+JAVAC_CMD = $(JAVAC) -source 1.5
 
 #
 # Set opt level to ALT_OPT if set otherwise _OPT
diff --git a/src/share/classes/javax/activation/CommandMap.java b/src/share/classes/javax/activation/CommandMap.java
index 7da1e2a..79a2cbc 100644
--- a/src/share/classes/javax/activation/CommandMap.java
+++ b/src/share/classes/javax/activation/CommandMap.java
@@ -40,6 +40,9 @@
 
 package javax.activation;
 
+import java.util.Map;
+import java.util.WeakHashMap;
+
 
 /**
  * The CommandMap class provides an interface to a registry of
@@ -51,6 +54,8 @@
  */
 public abstract class CommandMap {
     private static CommandMap defaultCommandMap = null;
+    private static Map<ClassLoader,CommandMap> map =
+				new WeakHashMap<ClassLoader,CommandMap>();
 
     /**
      * Get the default CommandMap.
@@ -69,11 +74,18 @@
      *
      * @return the CommandMap
      */
-    public static CommandMap getDefaultCommandMap() {
-	if (defaultCommandMap == null)
-	    defaultCommandMap = new MailcapCommandMap();
+    public static synchronized CommandMap getDefaultCommandMap() {
+	if (defaultCommandMap != null)
+	    return defaultCommandMap;
 
-	return defaultCommandMap;
+	// fetch per-thread-context-class-loader default
+	ClassLoader tccl = SecuritySupport.getContextClassLoader();
+	CommandMap def = map.get(tccl);
+	if (def == null) {
+	    def = new MailcapCommandMap();
+	    map.put(tccl, def);
+	}
+	return def;
     }
 
     /**
@@ -84,7 +96,7 @@
      * @exception SecurityException if the caller doesn't have permission
      *					to change the default
      */
-    public static void setDefaultCommandMap(CommandMap commandMap) {
+    public static synchronized void setDefaultCommandMap(CommandMap commandMap) {
 	SecurityManager security = System.getSecurityManager();
 	if (security != null) {
 	    try {
@@ -92,13 +104,16 @@
 		security.checkSetFactory();
 	    } catch (SecurityException ex) {
 		// otherwise, we also allow it if this code and the
-		// factory come from the same class loader (e.g.,
+		// factory come from the same (non-system) class loader (e.g.,
 		// the JAF classes were loaded with the applet classes).
-		if (CommandMap.class.getClassLoader() !=
+		if (CommandMap.class.getClassLoader() == null ||
+		    CommandMap.class.getClassLoader() !=
 			    commandMap.getClass().getClassLoader())
 		    throw ex;
 	    }
 	}
+	// remove any per-thread-context-class-loader CommandMap
+	map.remove(SecuritySupport.getContextClassLoader());
 	defaultCommandMap = commandMap;
     }
 
diff --git a/src/share/classes/javax/activation/DataHandler.java b/src/share/classes/javax/activation/DataHandler.java
index 901a93f..22b941d 100644
--- a/src/share/classes/javax/activation/DataHandler.java
+++ b/src/share/classes/javax/activation/DataHandler.java
@@ -381,7 +381,10 @@
 	// if it's not set, set it...
 	if (transferFlavors == emptyFlavors)
 	    transferFlavors = getDataContentHandler().getTransferDataFlavors();
-	return transferFlavors;
+	if (transferFlavors == emptyFlavors)
+	    return transferFlavors;
+	else
+	    return (DataFlavor[])transferFlavors.clone();
     }
 
     /**
diff --git a/src/share/classes/javax/activation/FileTypeMap.java b/src/share/classes/javax/activation/FileTypeMap.java
index 8b7079e..1050590 100644
--- a/src/share/classes/javax/activation/FileTypeMap.java
+++ b/src/share/classes/javax/activation/FileTypeMap.java
@@ -41,6 +41,8 @@
 package javax.activation;
 
 import java.io.File;
+import java.util.Map;
+import java.util.WeakHashMap;
 
 /**
  * The FileTypeMap is an abstract class that provides a data typing
@@ -61,6 +63,8 @@
 public abstract class FileTypeMap {
 
     private static FileTypeMap defaultMap = null;
+    private static Map<ClassLoader,FileTypeMap> map =
+				new WeakHashMap<ClassLoader,FileTypeMap>();
 
     /**
      * The default constructor.
@@ -95,7 +99,7 @@
      * @exception SecurityException if the caller doesn't have permission
      *					to change the default
      */
-    public static void setDefaultFileTypeMap(FileTypeMap map) {
+    public static synchronized void setDefaultFileTypeMap(FileTypeMap map) {
 	SecurityManager security = System.getSecurityManager();
 	if (security != null) {
 	    try {
@@ -103,9 +107,10 @@
 		security.checkSetFactory();
 	    } catch (SecurityException ex) {
 		// otherwise, we also allow it if this code and the
-		// factory come from the same class loader (e.g.,
+		// factory come from the same (non-system) class loader (e.g.,
 		// the JAF classes were loaded with the applet classes).
-		if (FileTypeMap.class.getClassLoader() !=
+		if (FileTypeMap.class.getClassLoader() == null ||
+		    FileTypeMap.class.getClassLoader() !=
 			map.getClass().getClassLoader())
 		    throw ex;
 	    }
@@ -122,10 +127,17 @@
      * @return The default FileTypeMap
      * @see javax.activation.FileTypeMap#setDefaultFileTypeMap
      */
-    public static FileTypeMap getDefaultFileTypeMap() {
-	// XXX - probably should be synchronized
-	if (defaultMap == null)
-	    defaultMap = new MimetypesFileTypeMap();
-	return defaultMap;
+    public static synchronized FileTypeMap getDefaultFileTypeMap() {
+	if (defaultMap != null)
+	    return defaultMap;
+
+	// fetch per-thread-context-class-loader default
+	ClassLoader tccl = SecuritySupport.getContextClassLoader();
+	FileTypeMap def = map.get(tccl);
+	if (def == null) {
+	    def = new MimetypesFileTypeMap();
+	    map.put(tccl, def);
+	}
+	return def;
     }
 }
diff --git a/src/share/classes/javax/activation/MailcapCommandMap.java b/src/share/classes/javax/activation/MailcapCommandMap.java
index 5f2c319..2c83938 100644
--- a/src/share/classes/javax/activation/MailcapCommandMap.java
+++ b/src/share/classes/javax/activation/MailcapCommandMap.java
@@ -133,11 +133,7 @@
 public class MailcapCommandMap extends CommandMap {
     /*
      * We manage a collection of databases, searched in order.
-     * The default database is shared between all instances
-     * of this class.
-     * XXX - Can we safely share more databases between instances?
      */
-    private static MailcapFile defDB = null;
     private MailcapFile[] DB;
     private static final int PROG = 0;	// programmatically added entries
 
@@ -177,14 +173,10 @@
 	loadAllResources(dbv, "META-INF/mailcap");
 
 	LogSupport.log("MailcapCommandMap: load DEF");
-	synchronized (MailcapCommandMap.class) {
-	    // see if another instance has created this yet.
-	    if (defDB == null)
-		defDB = loadResource("/META-INF/mailcap.default");
-	}
+	mf = loadResource("/META-INF/mailcap.default");
 
-	if (defDB != null)
-	    dbv.add(defDB);
+	if (mf != null)
+	    dbv.add(mf);
 
 	DB = new MailcapFile[dbv.size()];
 	DB = (MailcapFile[])dbv.toArray(DB);
diff --git a/src/share/classes/javax/activation/MimetypesFileTypeMap.java b/src/share/classes/javax/activation/MimetypesFileTypeMap.java
index eef6c5f..0d9fbd4 100644
--- a/src/share/classes/javax/activation/MimetypesFileTypeMap.java
+++ b/src/share/classes/javax/activation/MimetypesFileTypeMap.java
@@ -82,11 +82,7 @@
 public class MimetypesFileTypeMap extends FileTypeMap {
     /*
      * We manage a collection of databases, searched in order.
-     * The default database is shared between all instances
-     * of this class.
-     * XXX - Can we safely share more databases between instances?
      */
-    private static MimeTypeFile defDB = null;
     private MimeTypeFile[] DB;
     private static final int PROG = 0;	// programmatically added entries
 
@@ -127,14 +123,10 @@
 	loadAllResources(dbv, "META-INF/mime.types");
 
 	LogSupport.log("MimetypesFileTypeMap: load DEF");
-	synchronized (MimetypesFileTypeMap.class) {
-	    // see if another instance has created this yet.
-	    if (defDB == null)
-		defDB = loadResource("/META-INF/mimetypes.default");
-	}
+	mf = loadResource("/META-INF/mimetypes.default");
 
-	if (defDB != null)
-	    dbv.addElement(defDB);
+	if (mf != null)
+	    dbv.addElement(mf);
 
 	DB = new MimeTypeFile[dbv.size()];
 	dbv.copyInto(DB);
