diff --git a/src/main/src/main/java/org/geoserver/config/JAIInfo.java b/src/main/src/main/java/org/geoserver/config/JAIInfo.java
index 8101701..9b55432 100644
--- a/src/main/src/main/java/org/geoserver/config/JAIInfo.java
+++ b/src/main/src/main/java/org/geoserver/config/JAIInfo.java
@@ -4,6 +4,8 @@
  */
 package org.geoserver.config;
 
+import java.io.Serializable;
+
 import javax.media.jai.JAI;
 import javax.media.jai.TileCache;
 
@@ -15,7 +17,7 @@ import com.sun.media.jai.util.SunTileCache;
  * @author Justin Deoliveira, OpenGeo
  *
  */
-public interface JAIInfo {
+public interface JAIInfo extends Cloneable, Serializable{
 
     /**
      * Flag controlling image interpolation.
@@ -92,4 +94,6 @@ public interface JAIInfo {
      */
     TileCache getTileCache();
     void setTileCache(TileCache tileCache);
+
+    public JAIInfo clone();
 }
diff --git a/src/main/src/main/java/org/geoserver/config/impl/JAIInfoImpl.java b/src/main/src/main/java/org/geoserver/config/impl/JAIInfoImpl.java
index 9d5a8cd..55411f5 100644
--- a/src/main/src/main/java/org/geoserver/config/impl/JAIInfoImpl.java
+++ b/src/main/src/main/java/org/geoserver/config/impl/JAIInfoImpl.java
@@ -239,4 +239,12 @@ public class JAIInfoImpl implements Serializable, JAIInfo {
             return false;
         return true;
     }
+    
+    public JAIInfoImpl clone() {
+        try {
+            return (JAIInfoImpl) super.clone();
+        } catch (CloneNotSupportedException e) {
+            throw new RuntimeException(e);
+        }
+    }
 }
diff --git a/src/main/src/main/java/org/geoserver/jai/JAIInitializer.java b/src/main/src/main/java/org/geoserver/jai/JAIInitializer.java
index b6b840e..831e57f 100644
--- a/src/main/src/main/java/org/geoserver/jai/JAIInitializer.java
+++ b/src/main/src/main/java/org/geoserver/jai/JAIInitializer.java
@@ -33,7 +33,9 @@ public class JAIInitializer implements GeoServerInitializer {
                     List<String> propertyNames, List<Object> oldValues,
                     List<Object> newValues) {
                 
-                initJAI( global.getJAI() );
+                if(propertyNames.contains("jAI")){//TODO: check why the propertyname is reported as jAI instead of JAI
+                    initJAI( global.getJAI() );
+                }
             }
             
             @Override
diff --git a/src/web/core/src/main/java/org/geoserver/web/admin/JAIPage.java b/src/web/core/src/main/java/org/geoserver/web/admin/JAIPage.java
index 7695f6a..6733c4e 100644
--- a/src/web/core/src/main/java/org/geoserver/web/admin/JAIPage.java
+++ b/src/web/core/src/main/java/org/geoserver/web/admin/JAIPage.java
@@ -13,6 +13,7 @@ import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.StringResourceModel;
 import org.apache.wicket.validation.validator.NumberValidator;
 import org.geoserver.config.GeoServer;
+import org.geoserver.config.GeoServerInfo;
 import org.geoserver.config.JAIInfo;
 import org.geoserver.web.GeoServerHomePage;
 
@@ -54,8 +55,9 @@ public class JAIPage extends ServerAdminPage {
             @Override
             public void onSubmit() {
                 GeoServer gs = (GeoServer) geoServerModel.getObject();
-                gs.getGlobal().setJAI( (JAIInfo)jaiModel.getObject() );
-                gs.save( gs.getGlobal() ); 
+                GeoServerInfo global = gs.getGlobal();
+                global.setJAI( (JAIInfo)jaiModel.getObject() );
+                gs.save( global ); 
                 doReturn();
             }
         };
diff --git a/src/web/core/src/main/java/org/geoserver/web/admin/ServerAdminPage.java b/src/web/core/src/main/java/org/geoserver/web/admin/ServerAdminPage.java
index 988b728..6fbef30 100644
--- a/src/web/core/src/main/java/org/geoserver/web/admin/ServerAdminPage.java
+++ b/src/web/core/src/main/java/org/geoserver/web/admin/ServerAdminPage.java
@@ -9,7 +9,9 @@ import java.util.List;
 
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.LoadableDetachableModel;
+import org.apache.wicket.model.Model;
 import org.geoserver.catalog.DataStoreInfo;
+import org.geoserver.config.JAIInfo;
 import org.geoserver.web.GeoServerSecuredPage;
 import org.geotools.data.DataAccess;
 import org.geotools.data.DataStore;
@@ -38,13 +40,9 @@ public abstract class ServerAdminPage extends GeoServerSecuredPage {
         };
     }
 
-    public IModel getJAIModel(){
-        return new LoadableDetachableModel(){
-            public Object load() {
-                return getGeoServerApplication()
-                    .getGeoServer().getGlobal().getJAI();
-            }
-        };
+    public IModel<JAIInfo> getJAIModel(){
+        JAIInfo currJaiInfo = getGeoServerApplication().getGeoServer().getGlobal().getJAI().clone();
+        return new Model<JAIInfo>(currJaiInfo);
     }
     
     public IModel getCoverageAccessModel(){
