indeed JBoss Portal takes care of closing the session when the request is finished and the session must be closed.
This is all taken care by Hibernate - when using SessionFactory.getCurrentSession().
But it depends on the active transaction - which is delivered to you by JBoss Portal (in v2.0 by TransactionFilter, in v2.2 by TransactionInterceptor).
The thing that finally closes your session is the ability of JTA synchronization registry. So your session is closed when underlying transaction is complete.
well said Justin