ICEfaces
  1. ICEfaces
  2. ICE-7683

ICEpush check fails because Servlet 3.0 async methods are not accessible in the portlet API

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 3.0.RC2
    • Fix Version/s: 3.0
    • Component/s: Framework
    • Labels:
      None
    • Environment:
      ICEfaces 3 portal portlet ICEpush
    • Affects:
      Documentation (User Guide, Ref. Guide, etc.), Sample App./Tutorial, Compatibility/Configuration
    • Workaround Exists:
      Yes
    • Workaround Description:
      Hide
      <context-param>
          <param-name>org.icepush.useAsyncContext</param-name>
          <param-value>false</param-value>
      </context-param>
      Show
      <context-param>     <param-name>org.icepush.useAsyncContext</param-name>     <param-value>false</param-value> </context-param>

      Description

      In testing our ACE Showcase portlets on Liferay 6.1, I'm finding that an aspect of ICEpush is failing in the following way:

      Caused by: java.lang.UnsupportedOperationException
          at org.icefaces.impl.push.servlet.ProxyHttpServletRequest.(ProxyHttpServletRequest.java:81)
          at org.icepush.servlet.AsyncAdaptingServlet.service(AsyncAdaptingServlet.java:42)
          at org.icepush.servlet.EnvironmentAdaptingServlet.service(EnvironmentAdaptingServlet.java:48)
          at org.icepush.servlet.PathDispatcher.service(PathDispatcher.java:39)
          at org.icepush.servlet.BrowserDispatcher$BrowserEntry.service(BrowserDispatcher.java:105)
          at org.icepush.servlet.BrowserDispatcher.service(BrowserDispatcher.java:44)
          at org.icepush.servlet.PathDispatcher.service(PathDispatcher.java:39)
          at org.icepush.servlet.MainServlet.service(MainServlet.java:90)

      The ProxyHttpServletRequest class is used as a wrapper to protect certain framework calls from having to do portlet-specific handling. Instead, the proxy exposes the full HttpServletRequest API but only implements that stuff we need. Apparently we need the isAsyncSupported() method to return something for portlets. From what I can gather, the Portlet API does not expose any of the various *Async* methods that are part of the Servlet 3.0 spec, so our options are:

      Short-term:

      1) Change the proxies method implementation from:

          public boolean isAsyncSupported(){
              log.severe("ProxyHttpServletRequest unsupported operation");
              if (true) throw new UnsupportedOperationException();
              return false;
          }

      to always return "false" for portlets when checking whether Async is supported.


          public boolean isAsyncSupported(){
              log.info("Asynchronous servlet API not currently supported in portlets");
              return false;
          }

      2) Add an existing context parameter to all portlet examples to prevent the ICEpush from even checking:

      <context-param>
          <param-name>org.icepush.useAsyncContext</param-name>
          <param-value>false</param-value>
      </context-param>

      Long-term:

      I assume somewhere along the way that Async support in portlets would be desirable so we'd need to somehow provide that information in a portal environment in a non-standard way until it's available in a future portlet API.

        Issue Links

          Activity

          Repository Revision Date User Message
          ICEsoft Public SVN Repository #27333 Mon Jan 23 18:55:05 MST 2012 ken.fyten ICE-7683 - return default of "false" when checking isAsyncSupported in portals
          Files Changed
          Commit graph MODIFY /icefaces3/tags/icefaces-3.0.0/icefaces/core/src/main/java/org/icefaces/impl/push/servlet/ProxyHttpServletRequest.java

            People

            • Assignee:
              Deryk Sinotte
              Reporter:
              Deryk Sinotte
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: