Wicket 1.5 introduces pluggable serialization. This is an example of implementing JBoss Serializaton (http://www.jboss.org/serialization) into Wicket 1.5 using ISerializer.
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import org.apache.commons.io.IOUtils; import org.apache.wicket.WicketRuntimeException; import org.apache.wicket.serialize.ISerializer; import org.jboss.serial.io.JBossObjectInputStream; import org.jboss.serial.io.JBossObjectOutputStream; public class JBossSerializer implements ISerializer { @Override public Object deserialize(byte[] serializedBytes) { Object result = null; ByteArrayInputStream byteInputStream = null; JBossObjectInputStream jbossInputStream = null; try { byteInputStream = new ByteArrayInputStream(serializedBytes); jbossInputStream = new JBossObjectInputStream(byteInputStream); result = jbossInputStream.readObject(); } catch (IOException e) { throw new WicketRuntimeException("Error deserializing object.", e); } catch (ClassNotFoundException e) { throw new WicketRuntimeException("Class not found for serialized object.", e); } finally { IOUtils.closeQuietly(jbossInputStream); } return result; } @Override public byte[] serialize(Object obj) { byte[] serializedResult = null; JBossObjectOutputStream jbossOutputStream = null; ByteArrayOutputStream byteOutputStream = null; try { byteOutputStream = new ByteArrayOutputStream(); jbossOutputStream = new JBossObjectOutputStream(byteOutputStream); jbossOutputStream.writeObject(obj); jbossOutputStream.flush(); byteOutputStream.flush(); serializedResult = byteOutputStream.toByteArray(); } catch (IOException e) { throw new WicketRuntimeException("Error serializing object of type: " + obj.getClass().getCanonicalName(), e); } finally { IOUtils.closeQuietly(jbossOutputStream); } return serializedResult; } }
In the WebApplication init() method:
getFrameworkSettings().setSerializer(new JBossSerializer());