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
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user