Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 2.0-Alpha3
    • Fix Version/s: 2.0-Alpha3, 2.0.0
    • Component/s: Framework
    • Labels:
      None
    • Environment:
      ICEfaces 2.0

      Description


      The PushRenderer implementation currently makes use of persistent references to session objects. This is problematic for two reasons: it may be running in a Portlet context and the Session object may not be valid outside of the HTTP request serving the session. Even though a "Session" may be the object of interest to the application developer, the implementation needs to work directly with the underlying objects associated with the push connections.
       

        Activity

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

        It may be desirable to delay this work to be done as part of the notification service implementation.

        Show
        Ted Goddard added a comment - It may be desirable to delay this work to be done as part of the notification service implementation.
        Hide
        Ted Goddard added a comment -

        Deryk has fixed this for ICEfaces 1.8:

        http://jira.icefaces.org/browse/ICE-4621

        However the underlying infrastructure is different (again indicating that this should be fixed as part of the notification service implementation).

        Show
        Ted Goddard added a comment - Deryk has fixed this for ICEfaces 1.8: http://jira.icefaces.org/browse/ICE-4621 However the underlying infrastructure is different (again indicating that this should be fixed as part of the notification service implementation).
        Ted Goddard made changes -
        Field Original Value New Value
        Assignee Deryk Sinotte [ deryk.sinotte ]
        Hide
        Ted Goddard added a comment -

        The notification service strategy is outlined in the wiki:

        http://wiki.icefaces.org/display/facesDev/Ajax+Push+Architecture

        Show
        Ted Goddard added a comment - The notification service strategy is outlined in the wiki: http://wiki.icefaces.org/display/facesDev/Ajax+Push+Architecture
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #19517 Wed Oct 28 08:59:11 MDT 2009 ted.goddard PushRenderer and standard annotations in example (ICE-4808)
        Files Changed
        Commit graph MODIFY /icefaces/scratchpads/glimmer/samples/auction/src/main/java/org/icefaces/demo/auction/beans/ClockBean.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #19518 Wed Oct 28 09:17:22 MDT 2009 ted.goddard handle NullPointerExceptions (ICE-4808)
        Files Changed
        Commit graph MODIFY /icefaces/scratchpads/glimmer/core/src/main/java/org/icefaces/application/PushRenderer.java
        Commit graph MODIFY /icefaces/scratchpads/glimmer/core/src/main/java/org/icefaces/push/SessionRenderableAdaptor.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #19519 Wed Oct 28 09:23:34 MDT 2009 ted.goddard including prototype view-based methods (ICE-4808)
        Files Changed
        Commit graph MODIFY /icefaces/scratchpads/glimmer/core/src/main/java/org/icefaces/application/PushRenderer.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #19520 Wed Oct 28 09:26:49 MDT 2009 ted.goddard commented out println (ICE-4808)
        Files Changed
        Commit graph MODIFY /icefaces/scratchpads/glimmer/core/src/main/java/org/icefaces/push/SendUpdatedViews.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #19533 Wed Oct 28 15:42:12 MDT 2009 ted.goddard instantiating DEFAULT_SESSION_RENDERER prior to injection (ICE-4808)
        Files Changed
        Commit graph MODIFY /icefaces/scratchpads/glimmer/core/src/main/java/org/icefaces/push/SendUpdatedViews.java
        Commit graph MODIFY /icefaces/scratchpads/glimmer/core/src/main/java/org/icefaces/application/PushRenderer.java
        Hide
        Deryk Sinotte added a comment -

        Assigning to Mircea. Ted to add comments regarding the current implementation.

        Show
        Deryk Sinotte added a comment - Assigning to Mircea. Ted to add comments regarding the current implementation.
        Deryk Sinotte made changes -
        Salesforce Case []
        Assignee Deryk Sinotte [ deryk.sinotte ] Mircea Toma [ mircea.toma ]
        Hide
        Ted Goddard added a comment -

        Their should be a direct correspondence between ICEfaces groups and ICEpush groups. Likely we need to add a SUBID that corresponds to notification of all browser windows to ICEpush.

        Show
        Ted Goddard added a comment - Their should be a direct correspondence between ICEfaces groups and ICEpush groups. Likely we need to add a SUBID that corresponds to notification of all browser windows to ICEpush.
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #20690 Thu Feb 18 10:36:48 MST 2010 mircea.toma ICE-4808 Stop 1-to-1 association between views with windows. Assign view IDs separately. Send disposed viewIDs when window unloads document. Introduce ViewNotificationManager.
        Files Changed
        Commit graph MODIFY /icefaces/scratchpads/glimmer/core/src/main/javascript/application.js
        Commit graph MODIFY /icefaces/scratchpads/glimmer/core/src/main/java/org/icefaces/push/BridgeSetup.java
        Commit graph MODIFY /icefaces/scratchpads/glimmer/core/src/main/java/org/icefaces/push/DisposeWindowScope.java
        Commit graph MODIFY /icefaces/scratchpads/glimmer/core/src/main/java/org/icefaces/push/SessionBoundServer.java
        Commit graph ADD /icefaces/scratchpads/glimmer/core/src/main/java/org/icefaces/push/ViewNotificationManager.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #20702 Thu Feb 18 17:31:47 MST 2010 mircea.toma ICE-4808 Introduce PortableRenderer. Keep PushRenderer group membership up to date.
        Files Changed
        Commit graph MODIFY /icefaces/scratchpads/glimmer/core/src/main/java/org/icefaces/application/PushRenderer.java
        Commit graph MODIFY /icefaces/scratchpads/glimmer/core/src/main/java/org/icefaces/push/BridgeSetup.java
        Commit graph ADD /icefaces/scratchpads/glimmer/core/src/main/java/org/icefaces/application/PortableRenderer.java
        Commit graph MODIFY /icefaces/scratchpads/glimmer/samples/auction/src/main/java/org/icefaces/demo/auction/beans/ClockBean.java
        Commit graph MODIFY /icefaces/scratchpads/glimmer/core/src/main/java/org/icefaces/push/ViewNotificationManager.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #20720 Sat Feb 20 10:14:41 MST 2010 mircea.toma ICE-4808 Throw RuntimeException when calling PushRenderer methods without a current FacesContext. Avoid notifying browser when PortableRenderer.render is invoked and FacesContext is present.
        Files Changed
        Commit graph MODIFY /icefaces/scratchpads/glimmer/core/src/main/java/org/icefaces/application/PushRenderer.java
        Commit graph MODIFY /icefaces/scratchpads/glimmer/core/src/main/java/org/icefaces/application/PortableRenderer.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #20721 Sun Feb 21 14:45:39 MST 2010 mircea.toma ICE-4808 Rename class.
        Files Changed
        Commit graph ADD /icefaces/scratchpads/glimmer/core/src/main/java/org/icefaces/push/SessionViewManager.java
        Commit graph MODIFY /icefaces/scratchpads/glimmer/core/src/main/java/org/icefaces/application/PushRenderer.java
        Commit graph MODIFY /icefaces/scratchpads/glimmer/core/src/main/java/org/icefaces/push/BridgeSetup.java
        Commit graph MODIFY /icefaces/scratchpads/glimmer/core/src/main/java/org/icefaces/push/DisposeWindowScope.java
        Commit graph MODIFY /icefaces/scratchpads/glimmer/core/src/main/java/org/icefaces/push/SessionBoundServer.java
        Commit graph DEL /icefaces/scratchpads/glimmer/core/src/main/java/org/icefaces/push/ViewNotificationManager.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #20722 Sun Feb 21 15:25:04 MST 2010 mircea.toma ICE-4808 Use ViewState as view identifier.
        Files Changed
        Commit graph MODIFY /icefaces/scratchpads/glimmer/core/src/main/java/org/icefaces/push/SessionViewManager.java
        Commit graph MODIFY /icefaces/scratchpads/glimmer/core/src/main/java/org/icefaces/application/PushRenderer.java
        Commit graph MODIFY /icefaces/scratchpads/glimmer/core/src/main/java/org/icefaces/push/BridgeSetup.java
        Commit graph MODIFY /icefaces/scratchpads/glimmer/core/src/main/java/org/icefaces/push/DisposeWindowScope.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #20724 Sun Feb 21 15:42:16 MST 2010 mircea.toma ICE-4808 Use sets to avoid duplication.
        Files Changed
        Commit graph MODIFY /icefaces/scratchpads/glimmer/core/src/main/java/org/icefaces/push/SessionViewManager.java
        Hide
        Mircea Toma added a comment -

        First step taken in fixing this issue was to change the assumption that a window will contain only one view. SessionViewManager was introduced to register and keep track of all the views created within a session. Once this achieved PushRenderer was changed to make use of SessionViewManager and PushContext. This way the groups managed by PushRenderer are in reality ICEpush groups.

        PushRenderer.addCurrentView and PushRenderer.removeCurrentView are also implemented by making use of SessionViewManager in conjunction with current FacesContext.

        The JSF view state identifiers are reused as puhIds for the views.
        Also introduced PortableRenderer to allow for render notifications to be sent when FacesContext is not present. PortableRenderer can be looked up at application startup.

        Show
        Mircea Toma added a comment - First step taken in fixing this issue was to change the assumption that a window will contain only one view. SessionViewManager was introduced to register and keep track of all the views created within a session. Once this achieved PushRenderer was changed to make use of SessionViewManager and PushContext. This way the groups managed by PushRenderer are in reality ICEpush groups. PushRenderer.addCurrentView and PushRenderer.removeCurrentView are also implemented by making use of SessionViewManager in conjunction with current FacesContext. The JSF view state identifiers are reused as puhIds for the views. Also introduced PortableRenderer to allow for render notifications to be sent when FacesContext is not present. PortableRenderer can be looked up at application startup.
        Mircea Toma made changes -
        Status Open [ 1 ] Resolved [ 5 ]
        Fix Version/s 2.0-Alpha3 [ 10032 ]
        Resolution Fixed [ 1 ]
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #20747 Mon Feb 22 16:42:43 MST 2010 mircea.toma ICE-4808 Remove unused static field.
        Files Changed
        Commit graph MODIFY /icefaces/scratchpads/glimmer/core/src/main/java/org/icefaces/application/PushRenderer.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #20792 Thu Feb 25 08:50:51 MST 2010 mircea.toma ICE-4808 Add Javadoc.
        Files Changed
        Commit graph MODIFY /icefaces/scratchpads/glimmer/core/src/main/java/org/icefaces/application/PushRenderer.java
        Commit graph MODIFY /icefaces/scratchpads/glimmer/core/src/main/java/org/icefaces/application/PortableRenderer.java
        Ken Fyten made changes -
        Issue Type Bug [ 1 ] Improvement [ 4 ]
        Salesforce Case []
        Ken Fyten made changes -
        Fix Version/s 2.0.0 [ 10230 ]
        Ken Fyten made changes -
        Status Resolved [ 5 ] Closed [ 6 ]

          People

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

            Dates

            • Created:
              Updated:
              Resolved: