Problem Description
Tapestry is currently limited to support for the Servlet API. This means that Tapestry applications can not be used (directly) as part of a portal, as defined by the JSR-168 Java Portal Specification.
Proposed Solution
I don't know the details of the differences between Servlet API and Portal API. Research must be done (and recorded here!)
I suspect that the difference can largely be worked out by introducing a Tapestry-specific API that can be facade over either Servlet API or Portal API. I understand this is the solution used by JavaServerFaces.
Access to the Servlet API is buried several layers deep, i.e., getRequestCycle().getRequestContext().getRequest()
, and the vast majority of code and components do not access the Servlet API objects at all. A change along these lines would not be fully backwards compatible.
Discussion
The differences between the portlet and servlet API are well described at the eXo site. Look at the sub-sections of the "eXo bridges and frameworks" menu item at the left menu (for example JSF portlet integration)!