/*===============================================================*/
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest myRequest = (HttpServletRequest) request;
HibernateSessionLong hsl = null;
Session session = null;
/* --------------------------------
* die Hibernate-Session connecten
* --------------------------------*/
// das Managed Bean aus der Session holen
hsl = (HibernateSessionLong) myRequest.getSession().getAttribute("HibernateSessionLong");
// wenn das Managed Bean bereits in der Http-Session war,
// dann daraus die Hibernate-Session ermitteln
if (hsl != null) {
session = hsl.getSession();
}
if (session != null && !session.isConnected()) {
}
try {
chain.doFilter(request, response);
} catch (Exception e) {
throw new ServletException(new GUIExceptionWrapper("Unexpected Error.", e));
} finally {
/* --------------------------------
* die Hibernate-Session von der Datenbank trennen
* --------------------------------*/
// das Managed Bean aus der Session holen
hsl = (HibernateSessionLong) myRequest.getSession().getAttribute("HibernateSessionLong");
// wenn das Managed Bean bereits in der Http-Session war,
// dann daraus die Hibernate-Session ermitteln
if (hsl != null) {
session = hsl.getSession();
// gibt es eine Hibernate-Session und ist diese mit der DB verbunden,
// dann wird diese jetzt getrennt
if (session != null && session.isConnected()) {
session.disconnect();
}