Details

    • Type: New Feature New Feature
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 1.7.1
    • Component/s: None
    • Labels:
      None
    • Environment:
      ICEfaces, Ajax Push
    • Affects:
      Documentation (User Guide, Ref. Guide, etc.), Sample App./Tutorial

      Description

      The current RenderManager API offers a high degree of control over server-initiated rendering, but provides more power than necessary for simple applications. The SessionRenderer provides a more basic API as follows:

      public class org.icefaces.application.SessionRenderer extends java.lang.Object{
          public static synchronized void addCurrentSession(java.lang.String groupName);
          public static synchronized void removeCurrentSession(java.lang.String groupName);
          public static void render(java.lang.String groupName);
      }

      A sample invocation, such as in the auctionMonitor would be

      In a bean constructor:

      SessionRenderer.addCurrentSession("auction");

      When an event occurs:

      SessionRenderer.render("auction");

      The SessionRenderer is responsible for the maintenance of the lists of HttpSessions/PortletSessions. Lists of Views are obtained from the ICEfaces infrastructure. RenderingException is not passed to the application because, in this case, the application is only concerned with pushing updates to active users. If users are not active, they are automatically garbage collected.

        

        Issue Links

          Activity

          Ted Goddard created issue -
          Hide
          Ted Goddard added a comment -

          Prototype implemented, pending checkin.

          Show
          Ted Goddard added a comment - Prototype implemented, pending checkin.
          Ted Goddard made changes -
          Field Original Value New Value
          Fix Version/s 1.7.1 [ 10122 ]
          Hide
          Deryk Sinotte added a comment -

          The goal of a simpler API for certain use cases is definitely a good thing. My comments on the suggested API (without seeing the implementation):

          The name, SessionRenderer suggests to me that it's bound to a session - an individual user. Rather than suggesting what it does, it seems to refer to how it does it. The word "session" is a bit of an overloaded concept already when you consider the difference between Http Sessions and Portlet Sessions. However the use of "group names" as parameters suggests that this can be used across different groups of sessions. Bottom line, perhaps the class and method names could be revisited.

          This appears to only handle on-demand rendering cases (not interval or delay like the existing API). This may be intended in order for the API to remain simple.

          Without looking at the implementation, I can't tell if this uses some of our existing rendering API infrastructure (Thread pool, RenderHub) or not. If it doesn't, then I'd like to see how it does do things so I could comment more fully.

          Show
          Deryk Sinotte added a comment - The goal of a simpler API for certain use cases is definitely a good thing. My comments on the suggested API (without seeing the implementation): The name, SessionRenderer suggests to me that it's bound to a session - an individual user. Rather than suggesting what it does, it seems to refer to how it does it. The word "session" is a bit of an overloaded concept already when you consider the difference between Http Sessions and Portlet Sessions. However the use of "group names" as parameters suggests that this can be used across different groups of sessions. Bottom line, perhaps the class and method names could be revisited. This appears to only handle on-demand rendering cases (not interval or delay like the existing API). This may be intended in order for the API to remain simple. Without looking at the implementation, I can't tell if this uses some of our existing rendering API infrastructure (Thread pool, RenderHub) or not. If it doesn't, then I'd like to see how it does do things so I could comment more fully.
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #16455 Wed Apr 16 08:28:22 MDT 2008 ted.goddard new simple API for rendering all views in a session (ICE-2989)
          Files Changed
          Commit graph MODIFY /icefaces/trunk/icefaces/core/src/com/icesoft/faces/webapp/http/servlet/MainSessionBoundServlet.java
          Commit graph ADD /icefaces/trunk/icefaces/core/src/org/icefaces
          Commit graph ADD /icefaces/trunk/icefaces/core/src/org
          Commit graph ADD /icefaces/trunk/icefaces/core/src/org/icefaces/application/SessionRenderer.java
          Commit graph ADD /icefaces/trunk/icefaces/core/src/org/icefaces/application
          Commit graph MODIFY /icefaces/trunk/icefaces/core/src/com/icesoft/faces/context/View.java
          Hide
          Ted Goddard added a comment -

          A prototype of the API has been checked in for inspection and modification.

          The API is deliberately based on Session (Servlet or Portlet) because this concept is already familiar to the developer. If all portlets open by a particular user are in the same PortletSession, then this is appropriate.

          The implementation does not make use of RenderManager, but it should either apply the same pooling techniques, or directly make use of RenderManager functions (possibly exposed slightly differently for system use).

          It is intended that this API support clustering through a simple mechanism of specifying which groups should be broadcast cluster-wide, for instance:

          enableClusterRendering(String groupPattern)
          disableClusterRendering(String groupPattern)

          i.e.

          enableClusterRendering("auction/*");

          Clustering must be enabled on a group both for it to receive and to send rendering requests in the cluster.

          One of the goals of this API is to reduce the learning curve for new uses of Ajax Push, so it is possible that clustering features should be found instead in a section of the RenderManager API that operates on SessionGroups. This would include enabling/disabling clustering, obtaining notification when a group is created or destroyed, etc.

          Show
          Ted Goddard added a comment - A prototype of the API has been checked in for inspection and modification. The API is deliberately based on Session (Servlet or Portlet) because this concept is already familiar to the developer. If all portlets open by a particular user are in the same PortletSession, then this is appropriate. The implementation does not make use of RenderManager, but it should either apply the same pooling techniques, or directly make use of RenderManager functions (possibly exposed slightly differently for system use). It is intended that this API support clustering through a simple mechanism of specifying which groups should be broadcast cluster-wide, for instance: enableClusterRendering(String groupPattern) disableClusterRendering(String groupPattern) i.e. enableClusterRendering("auction/*"); Clustering must be enabled on a group both for it to receive and to send rendering requests in the cluster. One of the goals of this API is to reduce the learning curve for new uses of Ajax Push, so it is possible that clustering features should be found instead in a section of the RenderManager API that operates on SessionGroups. This would include enabling/disabling clustering, obtaining notification when a group is created or destroyed, etc.
          Hide
          Deryk Sinotte added a comment -

          Here are my comments after looking at the implementation:

          Some of the logic in the render method for dealing with individual views is very interesting. Seems like there's a good way of dealing with multiple views that should be used more generally for all Rendering API work.

          The current SessionRenderer API doesn't use the existing Render APIs or classes at all. This has a few implications. One is that it makes it more difficult to transition from the simpler API to the more sophisticated API as the developer gains experience and the application gains complexity.

          The implementation only has a comment around requiring a thread pool - no implementation. There's a fair amount of complexity around threads created on the server-side. You can't call the JSF lifecycle from the server-side without creating your own threads. If we don't use the existing mechanisms (or come up with a shared mechanism) then we'll potentially be creating a second thread pool to handle the requirements of this API. We currently do a bunch of stuff to try and ensure the proper thread context and to work with other technologies (e.g. Seam). Admittedly, some of it could be unnecessary baggage that's been carried along from previous releases but the current implementation doesn't have any implementation or any notes on how this would be done. In my opinion, going forward, we should potentially look at using a standard library (like Quartz) and/or using the built-in APIs of the app server when available (Worker API). However, the context of those threads still need to be valid when running with other frameworks. There's some work involved in any case.

          I have some concerns about multiple render calls. With the existing Render API, multiple calls to render are handled in an efficient manner (run one, queue the next one, and throw away any others if a render is already queued). The current render method looks like it would execute the lifecycle as many times as it was called.

          There appears to be no support for anything other than on-demand style rendering. Delay rendering is a niche but interval style rendering has proven to be fairly popular.

          I agree that clustered rendering should probably be considered a more advanced feature and not part of a simplified API.

          Show
          Deryk Sinotte added a comment - Here are my comments after looking at the implementation: Some of the logic in the render method for dealing with individual views is very interesting. Seems like there's a good way of dealing with multiple views that should be used more generally for all Rendering API work. The current SessionRenderer API doesn't use the existing Render APIs or classes at all. This has a few implications. One is that it makes it more difficult to transition from the simpler API to the more sophisticated API as the developer gains experience and the application gains complexity. The implementation only has a comment around requiring a thread pool - no implementation. There's a fair amount of complexity around threads created on the server-side. You can't call the JSF lifecycle from the server-side without creating your own threads. If we don't use the existing mechanisms (or come up with a shared mechanism) then we'll potentially be creating a second thread pool to handle the requirements of this API. We currently do a bunch of stuff to try and ensure the proper thread context and to work with other technologies (e.g. Seam). Admittedly, some of it could be unnecessary baggage that's been carried along from previous releases but the current implementation doesn't have any implementation or any notes on how this would be done. In my opinion, going forward, we should potentially look at using a standard library (like Quartz) and/or using the built-in APIs of the app server when available (Worker API). However, the context of those threads still need to be valid when running with other frameworks. There's some work involved in any case. I have some concerns about multiple render calls. With the existing Render API, multiple calls to render are handled in an efficient manner (run one, queue the next one, and throw away any others if a render is already queued). The current render method looks like it would execute the lifecycle as many times as it was called. There appears to be no support for anything other than on-demand style rendering. Delay rendering is a niche but interval style rendering has proven to be fairly popular. I agree that clustered rendering should probably be considered a more advanced feature and not part of a simplified API.
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #16546 Tue Apr 29 15:55:13 MDT 2008 ted.goddard using ThreadPoolExecutor for view isolation and ContextEventRepeater for ThreadPool shutdown (ICE-2989)
          Files Changed
          Commit graph MODIFY /icefaces/trunk/icefaces/core/src/org/icefaces/application/SessionRenderer.java
          Jack Van Ooststroom made changes -
          Assignee Jack Van Ooststroom [ jack.van.ooststroom ]
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #16679 Thu May 22 17:09:01 MDT 2008 ted.goddard remove using iterator during session expiry (ICE-2989)
          Files Changed
          Commit graph MODIFY /icefaces/trunk/icefaces/core/src/org/icefaces/application/SessionRenderer.java
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #16694 Fri May 23 17:56:12 MDT 2008 ted.goddard using ThreadPoolExecutor for view isolation and ContextEventRepeater for ThreadPool shutdown (ICE-2989)
          Files Changed
          Commit graph MODIFY /icefaces/branches/icefaces-1.7/icefaces/core/src/org/icefaces/application/SessionRenderer.java
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #16758 Fri May 30 15:46:57 MDT 2008 jack.van.ooststroom Fixed JIRA ICE-2989 : SessionRenderer API
          Files Changed
          Commit graph ADD /icefaces/trunk/icefaces/core/src/org/icefaces/x/core
          Commit graph MODIFY /icefaces/trunk/icefaces/core/src/com/icesoft/faces/async/render/DelayRenderer.java
          Commit graph ADD /icefaces/trunk/icefaces/core/src/org/icefaces/x/core/push
          Commit graph MODIFY /icefaces/trunk/icefaces/core/src/com/icesoft/faces/async/render/IntervalRenderer.java
          Commit graph MODIFY /icefaces/trunk/icefaces/core/src/com/icesoft/faces/async/render/GroupAsyncRenderer.java
          Commit graph ADD /icefaces/trunk/icefaces/core/src/org/icefaces/x/core/push/SessionRenderer.java
          Commit graph ADD /icefaces/trunk/icefaces/core/src/org/icefaces/x
          Commit graph MODIFY /icefaces/trunk/icefaces/core/src/com/icesoft/faces/async/render/RenderManager.java
          Commit graph MODIFY /icefaces/trunk/icefaces/core/src/com/icesoft/faces/async/render/AsyncRenderer.java
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #16759 Fri May 30 15:47:52 MDT 2008 jack.van.ooststroom Fixed JIRA ICE-2989 : SessionRenderer API
          Files Changed
          Commit graph DEL /icefaces/trunk/icefaces/core/src/org/icefaces/application
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #16764 Fri May 30 15:58:49 MDT 2008 jack.van.ooststroom Fixed JIRA ICE-2989 : SessionRenderer API
          Files Changed
          Commit graph MODIFY /icefaces/branches/icefaces-1.7/icefaces/core/src/com/icesoft/faces/async/render/RenderManager.java
          Commit graph MODIFY /icefaces/branches/icefaces-1.7/icefaces/core/src/com/icesoft/faces/async/render/AsyncRenderer.java
          Commit graph ADD /icefaces/branches/icefaces-1.7/icefaces/core/src/org/icefaces/x/core/push
          Commit graph MODIFY /icefaces/branches/icefaces-1.7/icefaces/core/src/com/icesoft/faces/async/render/DelayRenderer.java
          Commit graph MODIFY /icefaces/branches/icefaces-1.7/icefaces/core/src/com/icesoft/faces/async/render/IntervalRenderer.java
          Commit graph ADD /icefaces/branches/icefaces-1.7/icefaces/core/src/org/icefaces/x
          Commit graph DEL /icefaces/branches/icefaces-1.7/icefaces/core/src/org/icefaces/application
          Commit graph ADD /icefaces/branches/icefaces-1.7/icefaces/core/src/org/icefaces/x/core/push/SessionRenderer.java
          Commit graph ADD /icefaces/branches/icefaces-1.7/icefaces/core/src/org/icefaces/x/core
          Commit graph MODIFY /icefaces/branches/icefaces-1.7/icefaces/core/src/com/icesoft/faces/async/render/GroupAsyncRenderer.java
          Jack Van Ooststroom made changes -
          Status Open [ 1 ] In Progress [ 3 ]
          Hide
          Jack Van Ooststroom added a comment -

          The SessionRenderer API should be able to use the broadcasting capabilities automatically.

          Show
          Jack Van Ooststroom added a comment - The SessionRenderer API should be able to use the broadcasting capabilities automatically.
          Jack Van Ooststroom made changes -
          Link This issue depends on ICE-2742 [ ICE-2742 ]
          Hide
          Jack Van Ooststroom added a comment -

          SessionRenderer API:

          • public static void addCurrentSession(String groupName)
          • public static void removeCurrentSession(String groupName)
          • public static void render(String groupName)

          I left Ted's suggested SessionRenderer API as is. I only removed the synchronized off each method. The RenderManager API has been made HttpSession-aware by changing the GroupAsyncRenderer:

          • public void add(HttpSession httpSession)
          • public boolean contains(HttpSession httpSession)
          • public void remove(HttpSession httpSession)

          The SessionRenderer cleverly uses the RenderManager's capabilities to provide a simpler API. It only utilizes the OnDemandRenderer. As it uses the RenderManager it automatically gains broadcasting capabilities as well. However, without the fine-grained control capabilities.

          Both the SessionRenderer API and RenderManager API can be used together in an ICEfaces application. This should be done with care!

          Marking this one as FIXED.

          Show
          Jack Van Ooststroom added a comment - SessionRenderer API: public static void addCurrentSession(String groupName) public static void removeCurrentSession(String groupName) public static void render(String groupName) I left Ted's suggested SessionRenderer API as is. I only removed the synchronized off each method. The RenderManager API has been made HttpSession-aware by changing the GroupAsyncRenderer: public void add(HttpSession httpSession) public boolean contains(HttpSession httpSession) public void remove(HttpSession httpSession) The SessionRenderer cleverly uses the RenderManager's capabilities to provide a simpler API. It only utilizes the OnDemandRenderer. As it uses the RenderManager it automatically gains broadcasting capabilities as well. However, without the fine-grained control capabilities. Both the SessionRenderer API and RenderManager API can be used together in an ICEfaces application. This should be done with care! Marking this one as FIXED.
          Jack Van Ooststroom made changes -
          Status In Progress [ 3 ] Resolved [ 5 ]
          Resolution Fixed [ 1 ]
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #16802 Wed Jun 04 16:44:29 MDT 2008 jack.van.ooststroom Fixed JIRA ICE-2989 : SessionRenderer API; removed HttpSession from the public API
          Files Changed
          Commit graph MODIFY /icefaces/trunk/icefaces/core/src/com/icesoft/faces/async/render/GroupAsyncRenderer.java
          Commit graph MODIFY /icefaces/trunk/icefaces/core/src/org/icefaces/x/core/push/SessionRenderer.java
          Commit graph MODIFY /icefaces/trunk/icefaces/core/src/com/icesoft/faces/webapp/http/servlet/SessionDispatcher.java
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #16803 Wed Jun 04 16:47:28 MDT 2008 jack.van.ooststroom Fixed JIRA ICE-2989 : SessionRenderer API; removed HttpSession from the public API
          Files Changed
          Commit graph MODIFY /icefaces/branches/icefaces-1.7/icefaces/core/src/org/icefaces/x/core/push/SessionRenderer.java
          Commit graph MODIFY /icefaces/branches/icefaces-1.7/icefaces/core/src/com/icesoft/faces/webapp/http/servlet/SessionDispatcher.java
          Commit graph MODIFY /icefaces/branches/icefaces-1.7/icefaces/core/src/com/icesoft/faces/async/render/GroupAsyncRenderer.java
          Hide
          Jack Van Ooststroom added a comment -

          HttpSession should not be part of the public API as it makes the servlet-api.jar a mandatory lib at compile time for applications using the RenderManager API. Reopening this one.

          Show
          Jack Van Ooststroom added a comment - HttpSession should not be part of the public API as it makes the servlet-api.jar a mandatory lib at compile time for applications using the RenderManager API. Reopening this one.
          Jack Van Ooststroom made changes -
          Resolution Fixed [ 1 ]
          Status Resolved [ 5 ] Reopened [ 4 ]
          Ken Fyten made changes -
          Summary SessionRenderer API Add new SessionRenderer API
          Affects [Documentation (User Guide, Ref. Guide, etc.), Sample App./Tutorial]
          Ken Fyten made changes -
          Status Reopened [ 4 ] Resolved [ 5 ]
          Resolution Fixed [ 1 ]
          Hide
          Jack Van Ooststroom added a comment -

          I checked in the following change:

          • GroupAsyncRenderer
          • Removed the add(HttpSession), contains(HttpSession) and remove(HttpSession) methods.
          • Added the addCurrentSession(), containsCurrentSession() and removeCurrentSession() methods.
          • Internally it stores the HttpSession and PortletSession instances via a WeakReference in its Set.
          • SessionRenderer
          • Changed the addCurrentSession(String), containsCurrentSession(String) and removeCurrentSession(String) methods to use the GroupAsyncRenderer's "equivalent" methods.
          • SessionDispatcher
          • Overloaded the getSingletonSessionServlet(HttpSession) method with the getSingletonSessionServlet(String sessionId) method.

          This way HttpSession and PortletSession are not publically exposed in the API, nor is the JSF API exposed.

          I successfully tested in both a servlet and portlet environment, and in both a non-clustered and clustered environment.

          Marking this one as FIXED (which Ken already did

          Show
          Jack Van Ooststroom added a comment - I checked in the following change: GroupAsyncRenderer Removed the add(HttpSession), contains(HttpSession) and remove(HttpSession) methods. Added the addCurrentSession(), containsCurrentSession() and removeCurrentSession() methods. Internally it stores the HttpSession and PortletSession instances via a WeakReference in its Set. SessionRenderer Changed the addCurrentSession(String), containsCurrentSession(String) and removeCurrentSession(String) methods to use the GroupAsyncRenderer's "equivalent" methods. SessionDispatcher Overloaded the getSingletonSessionServlet(HttpSession) method with the getSingletonSessionServlet(String sessionId) method. This way HttpSession and PortletSession are not publically exposed in the API, nor is the JSF API exposed. I successfully tested in both a servlet and portlet environment, and in both a non-clustered and clustered environment. Marking this one as FIXED (which Ken already did
          Ken Fyten made changes -
          Affects Version/s 1.7RC1 [ 10123 ]
          Hide
          Ken Fyten added a comment -

          Need to ensure this API is included in the ICEfaces JavaDoc, including the new org.icefaces.x package tree.

          Show
          Ken Fyten added a comment - Need to ensure this API is included in the ICEfaces JavaDoc, including the new org.icefaces.x package tree.
          Ken Fyten made changes -
          Resolution Fixed [ 1 ]
          Status Resolved [ 5 ] Reopened [ 4 ]
          Assignee Priority P1
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #16906 Mon Jun 16 14:32:38 MDT 2008 jack.van.ooststroom Fixed JIRA ICE-2989 : Add new SessionRenderer API; added package-level JavaDoc
          Files Changed
          Commit graph ADD /icefaces/branches/icefaces-1.7/icefaces/core/src/org/icefaces/x/core/push/package.html
          Commit graph ADD /icefaces/branches/icefaces-1.7/icefaces/core/src/org/icefaces/x/package.html
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #16907 Mon Jun 16 14:33:07 MDT 2008 jack.van.ooststroom Fixed JIRA ICE-2989 : Add new SessionRenderer API; added package-level JavaDoc
          Files Changed
          Commit graph ADD /icefaces/trunk/icefaces/core/src/org/icefaces/x/core/push/package.html
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #16908 Mon Jun 16 14:33:37 MDT 2008 jack.van.ooststroom Fixed JIRA ICE-2989 : Add new SessionRenderer API; added package-level JavaDoc
          Files Changed
          Commit graph ADD /icefaces/trunk/icefaces/core/src/org/icefaces/x/package.html
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #16909 Mon Jun 16 16:45:47 MDT 2008 jack.van.ooststroom Fixed JIRA ICE-2989 : Add new SessionRenderer API; added package-level JavaDoc
          Files Changed
          Commit graph MODIFY /icefaces/trunk/icefaces/core/src/org/icefaces/x/core/push/package.html
          Commit graph MODIFY /icefaces/trunk/icefaces/core/src/org/icefaces/x/package.html
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #16910 Mon Jun 16 16:46:47 MDT 2008 jack.van.ooststroom Fixed JIRA ICE-2989 : Add new SessionRenderer API; added package-level JavaDoc
          Files Changed
          Commit graph MODIFY /icefaces/branches/icefaces-1.7/icefaces/core/src/org/icefaces/x/core/push/package.html
          Commit graph MODIFY /icefaces/branches/icefaces-1.7/icefaces/core/src/org/icefaces/x/package.html
          Hide
          Jack Van Ooststroom added a comment -

          Package-level JavaDoc Description has been added. Marking this one as FIXED again.

          Show
          Jack Van Ooststroom added a comment - Package-level JavaDoc Description has been added. Marking this one as FIXED again.
          Jack Van Ooststroom made changes -
          Status Reopened [ 4 ] Resolved [ 5 ]
          Resolution Fixed [ 1 ]
          Ken Fyten made changes -
          Status Resolved [ 5 ] Closed [ 6 ]
          Assignee Priority P1
          Assignee Jack Van Ooststroom [ jack.van.ooststroom ]
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #17258 Wed Jul 30 13:44:09 MDT 2008 ted.goddard ported to SessionRenderer (ICE-2989)
          Files Changed
          Commit graph MODIFY /icefaces/trunk/icefaces/samples/auctionMonitor/src/com/icesoft/applications/faces/auctionMonitor/ChatState.java
          Commit graph MODIFY /icefaces/trunk/icefaces/samples/auctionMonitor/src/com/icesoft/applications/faces/auctionMonitor/beans/AuctionBean.java
          Commit graph MODIFY /icefaces/trunk/icefaces/samples/auctionMonitor/src/com/icesoft/applications/faces/auctionMonitor/beans/UserBean.java
          Commit graph MODIFY /icefaces/trunk/icefaces/samples/auctionMonitor/web/WEB-INF/faces-config.xml
          Commit graph MODIFY /icefaces/trunk/icefaces/samples/auctionMonitor/src/com/icesoft/applications/faces/auctionMonitor/beans/AuctionMonitorItemBean.java
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #17259 Wed Jul 30 13:44:23 MDT 2008 ted.goddard ported to SessionRenderer (ICE-2989)
          Files Changed
          Commit graph MODIFY /icefaces/branches/icefaces-1.7/icefaces/samples/auctionMonitor/src/com/icesoft/applications/faces/auctionMonitor/beans/UserBean.java
          Commit graph MODIFY /icefaces/branches/icefaces-1.7/icefaces/samples/auctionMonitor/src/com/icesoft/applications/faces/auctionMonitor/beans/AuctionBean.java
          Commit graph MODIFY /icefaces/branches/icefaces-1.7/icefaces/samples/auctionMonitor/web/WEB-INF/faces-config.xml
          Commit graph MODIFY /icefaces/branches/icefaces-1.7/icefaces/samples/auctionMonitor/src/com/icesoft/applications/faces/auctionMonitor/beans/AuctionMonitorItemBean.java
          Commit graph MODIFY /icefaces/branches/icefaces-1.7/icefaces/samples/auctionMonitor/src/com/icesoft/applications/faces/auctionMonitor/ChatState.java
          Hide
          Ted Goddard added a comment -

          updated auctionMonitor to use SessionRenderer for bid updates and chat messages. Ticking clocks still uses IntervalRenderer.

          Note that auctionMonitor had an obsolete capability for propagating events between a stock JSF implementation and an ICEfaces implementation. This event feature has been deactivated to simplify the implementation.

          Show
          Ted Goddard added a comment - updated auctionMonitor to use SessionRenderer for bid updates and chat messages. Ticking clocks still uses IntervalRenderer. Note that auctionMonitor had an obsolete capability for propagating events between a stock JSF implementation and an ICEfaces implementation. This event feature has been deactivated to simplify the implementation.

            People

            • Assignee:
              Unassigned
              Reporter:
              Ted Goddard
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: