Well both Portlets and Servlets are loaded using the same classloader.So it's a plain fact that session can be made available in both the contexts.
As far as the portlets are concerned,
The PortletSession is namespaced :
1) PORTLET_SCOPE : Only available to the particular portlet.
2) APPLICATION_SCOPE: Available to all Portlets and also available in Servlets/JSP etc
So, if you really want to share sessions among Servlets and Portlets...
1) Define the scope of the session attributes as APPLICATION_SCOPE in Portlets....
2) Access the session attributes defined or set in servlets by specifying APPLICATION_SCOPE.. else you will get null.
As far as retrieving the PortletSession from HttpRequest is concerned.. You can get them via the APIs available..
For JSR168
Struts Portlets we have WpsStrutsUtil package that will return you the PortletSession...
Hope this makes something clear...