Any further word on this? I created a listener that implements both HttpSessionAttributeListener and ServletContextAttributeListener (code below). It exposed a few other classes we were putting into the session.
However, I continue to get the log4j NonSerializable exceptions without any indication from the listener that something has been added that contains org.apache.log4j.Level. import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import javax.servlet.http.HttpSessionAttributeListener; import javax.servlet.http.HttpSessionBindingEvent; import javax.servlet.ServletContextAttributeListener; import javax.servlet.ServletContextAttributeEvent; import java.io.ObjectOutputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; public class FindNonSerializableSessionAttributesListener implements HttpSessionAttributeListener, ServletContextAttributeListener { private static final Log logger = LogFactory.getLog(FindNonSerializableSessionAttributesListener.class); public void attributeAdded(HttpSessionBindingEvent httpSessionBindingEvent) { checkSerailizable(httpSessionBindingEvent.getName(), httpSessionBindingEvent.getValue()); } public void attributeRemoved(HttpSessionBindingEvent httpSessionBindingEvent) {} public void attributeReplaced(HttpSessionBindingEvent httpSessionBindingEvent) { checkSerailizable(httpSessionBindingEvent.getName(), httpSessionBindingEvent.getValue()); } private void checkSerailizable(String name, Object value) { if (logger.isDebugEnabled()) { try { ObjectOutputStream out = new ObjectOutputStream(new ByteArrayOutputStream()); out.writeObject(value); out.close(); out.flush(); } catch (IOException e) { logger.info("Error serialiazing when setting session attribute " + name + "::" + value, e); } } } public void attributeAdded(ServletContextAttributeEvent servletContextAttributeEvent) { checkSerailizable(servletContextAttributeEvent.getName(), servletContextAttributeEvent.getValue()); } public void attributeRemoved(ServletContextAttributeEvent servletContextAttributeEvent) { //To change body of implemented methods use File | Settings | File Templates. } public void attributeReplaced(ServletContextAttributeEvent servletContextAttributeEvent) { checkSerailizable(servletContextAttributeEvent.getName(), servletContextAttributeEvent.getValue()); } } View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4027961#4027961 Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4027961 _______________________________________________ jboss-user mailing list jboss-user@lists.jboss.org https://lists.jboss.org/mailman/listinfo/jboss-user