ICEfaces
  1. ICEfaces
  2. ICE-2012

Support for portlet containers - WebLogic Portal

    Details

    • Type: New Feature New Feature
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 1.6
    • Fix Version/s: 1.7Beta1, 1.7
    • Component/s: Framework
    • Labels:
      None
    • Environment:
      Portal

      Description

      Work on getting ICEfaces-based portlets running in WebLogic Portal.

        Activity

        Hide
        Deryk Sinotte added a comment -

        Targetting for 1.7

        Show
        Deryk Sinotte added a comment - Targetting for 1.7
        Hide
        Deryk Sinotte added a comment -

        We've had some success with ICEfaces portlets running in WebLogic Studio + Portal 10. Ajax Push is currently a problem but portlets that do not use Ajax Push seem to work fine. This case will remain open until we can get Ajax Push working reliably.

        The characterization of the problem is that when a portlet that uses Ajax Push is deployed it runs fine until there is some user interaction. For example, if I deploy our Auction Monitor demo as a portlet, it runs fine (ie clocks tick) until I actually try and bid or interact with the portlet in some way. Then it seems as if our heartbeating mechanism (ping/pong) starts to fail. Eventually the timeout for missed heartbeats is reached and the Network Interruption dialog is presented.

        Show
        Deryk Sinotte added a comment - We've had some success with ICEfaces portlets running in WebLogic Studio + Portal 10. Ajax Push is currently a problem but portlets that do not use Ajax Push seem to work fine. This case will remain open until we can get Ajax Push working reliably. The characterization of the problem is that when a portlet that uses Ajax Push is deployed it runs fine until there is some user interaction. For example, if I deploy our Auction Monitor demo as a portlet, it runs fine (ie clocks tick) until I actually try and bid or interact with the portlet in some way. Then it seems as if our heartbeating mechanism (ping/pong) starts to fail. Eventually the timeout for missed heartbeats is reached and the Network Interruption dialog is presented.
        Hide
        Deryk Sinotte added a comment -

        So I've finally tracked down the culprit that was causing us grief with async on WebLogic. It appears that our ViewQueue (a class for keeping track of the views that need to be updated) was based on LinkedBlockingQueue, a concurrent utility class that is found in the Java 5 as well as the backport library we use to support Java 1.4. I'm not sure what the interaction was that was causing the problem, but that LinkedBlockingQueue was showing that it had no entries (isEmpty() was true) but that it's size was > 0.

        In the SendUpdatedViews class, the constructor has this tidbit:

        ...
        Set viewIdentifiers = new HashSet(allUpdatedViews);
        if (!viewIdentifiers.isEmpty()) {
        ...

        So even though there should have been viewIdentifiers in the set (and the ViewQueue did report a size > 0), the isEmpty method was resolving to true. My hunch is that internally it was using the Interation which, when I tried it, didn't return anything to iterate over. The end result is that there were no updates making their way back to the client. This included our "Pong" heartbeat responses. So the client would eventually interpret this as a network connection issue and timeout. This was only a problem in WebLogic for some reason as it worked find in Liferay and JBoss portal.

        What I've done is to switch ViewQueue extends LinkedBlockingQueue to ViewQueue extends ConcurrentLinkedQueue. WebLogic seems to like this better as async now works properly and Liferay doesn't seem to mind either.

        Show
        Deryk Sinotte added a comment - So I've finally tracked down the culprit that was causing us grief with async on WebLogic. It appears that our ViewQueue (a class for keeping track of the views that need to be updated) was based on LinkedBlockingQueue, a concurrent utility class that is found in the Java 5 as well as the backport library we use to support Java 1.4. I'm not sure what the interaction was that was causing the problem, but that LinkedBlockingQueue was showing that it had no entries (isEmpty() was true) but that it's size was > 0. In the SendUpdatedViews class, the constructor has this tidbit: ... Set viewIdentifiers = new HashSet(allUpdatedViews); if (!viewIdentifiers.isEmpty()) { ... So even though there should have been viewIdentifiers in the set (and the ViewQueue did report a size > 0), the isEmpty method was resolving to true. My hunch is that internally it was using the Interation which, when I tried it, didn't return anything to iterate over. The end result is that there were no updates making their way back to the client. This included our "Pong" heartbeat responses. So the client would eventually interpret this as a network connection issue and timeout. This was only a problem in WebLogic for some reason as it worked find in Liferay and JBoss portal. What I've done is to switch ViewQueue extends LinkedBlockingQueue to ViewQueue extends ConcurrentLinkedQueue. WebLogic seems to like this better as async now works properly and Liferay doesn't seem to mind either.

          People

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

            Dates

            • Created:
              Updated:
              Resolved: