I have a large portlet application developed using the beehive pageflow framework that is bundled with WebLogic Portal 8.1. The application works great 95% of the time, however occasionally the pageflow loses all of its state/data and causes a Null Pointer Exception to be thrown since all the pageflow variables suddenly become null. The error appears to happen randomly anywhere throughout the pageflow and is not associated with a particular page. It is not easily reproduceable but I set up a Selenium script to jump through the pages of the workflow over and over again and I can reliably reproduce the error after 1,000 or so page requests. The error seems to happen quicker/occur more frequently if there is a lot of traffic on the website (during business hours) but is much harder to reproduce after hours. I've monitored the heap memory and do not see anything out of ordinary and even tried bumping up the maximum heap memory with no luck. As far as I can tell the session is still in tact after the error occurs but the data for that particular pageflow is completely lost.
Has anyone else encountered issues like this? I do not believe it is a bug in my code, it looks to be a problem with Weblogic/Beehive framework although I have not found any documentation to support this.
Please help I've been working on this for a week and am about to pull my hair out.
Joined: Jul 29, 2011
Wooohooo. I got really lucky and figured it out. There was another portlet that shared the same "instance label" as my portlet. The shared instance label is what was causing the porlet to lose its page flow data. It only happens if two users access the two different portlets that share the same instance label at the same time (which accounts for its semi-random nature). Anyways moral of the story is make sure each instance label is unique. This is something we have been ignoring for awhile because with multiple developers it is a pain to manage and we didn't realize how serious of problems it can cause.
As a solution I am creating a script to automatically update all the instance label so that they are all guaranteed to be unique.