Increase the session timeout of Oracle BPM Worklist app

3

The Oracle BPM Worklist app is a part of the Oracle SOA Suite. Working with the Worklist app is very annoying, because the default timeout is very short (seconds!). So after getting a cup of coffee or reading a mail you have to login again.
Solving this problem seems quite easy by increasing the session timeout in your (generated) ADF human task or in the worklist app in the weblogic console, but it all doesn’t work.
The solution for this annoying issue is quite easy, once you know where and how. Here is the trick.

First we need to create a deployment plan for the worklistapp. When you already have one, you can skip step 1 to 5 and continue with step 6.
1. Navigate in the Weblogic console to “Deployments” (in the menu on the left) and search in the list for “worklistapp”.

2. Expand the worklistapp [+] and under Modules click on Web Application “/integration/worklistapp”.

3. Go to the “Configuration” tab (subtab “General”).

4. Change the value of the “Session Timeout (in seconds)” to something else (it must be a different value).

5. Save and follow the weblogic directions to create a deployment plan (plan.xml).

6. Locate you deployment plan by going the “Deployments” page and search again for “worklistapp”.

7. Instead of expanding, click on the “worklistapp”.

8. You can see the location of your deployment plan under tab “Overview” after property “Path”.
e.g. /apps/Oracle/Middleware/Oracle_SOA1/soa/Plan.xml

9. Go to this location on the machine (server) where the BPM Worklist (SOA Suite) is installed.

10. Make a copy of the plan (e.g. Plan2.xml), leaving the original one as ‘backup’.

11. Edit the new deployment Plan2.xml file.

12. Search in the beginning of the file for the setting with the name SessionDescriptor_timeoutSecs_xxxxxxxxxxxxxx where x is a digit
(xpath: /deployment-plan/variable-definition/variable/name)
Edit the value for the timeout you desire. The timeout value you define proves to be in minutes (not seconds, despite of the name)!

e.g. in my case, I’ve set the timeout to 45 minutes:

<variable>
  <name>SessionDescriptor_timeoutSecs_13064193293970</name>
  <value>45</value>
</variable>

13. Search for the node “module-override” of the “worklist.war” module (xpath: /deployment-plan/module-override/module-name).

14. In this “module-override” node, there is a child node “module-descriptor” that contains child node “root-element” with value “web-app”, probably the last child node of node “module-override”).
Note: Don’t confuse it with node “module-descriptor” with “root-element” node “weblogic-web-app”.

15. When you’ve found the correct “module-descriptor” node, add the following child nodes after child node “uri”, which should have value “WEB_INF/web.xml”, and replace the xxxxxxxxxxxxxx with the same digits you have found in step 12:

<variable-assignment>
  <name>SessionDescriptor_timeoutSecs_xxxxxxxxxxxxxx</name>
  <xpath>/web-app/session-config/session-timeout</xpath>
  <operation>replace</operation>
</variable-assignment>

e.g in my case:

<module-descriptor external="false">
  <root-element>web-app</root-element>
  <uri>WEB-INF/web.xml</uri>
  <variable-assignment>
    <name>SessionDescriptor_timeoutSecs_13064193293970</name>
    <xpath>/web-app/session-config/session-timeout</xpath>
    <operation>replace</operation>
  </variable-assignment>
</module-descriptor>

16. Save the file.

17. Go back to the Weblogic console and again go to the “Deployments” page.

18. Select “worklistapp” [v]

18. Stop the “worklistapp” with the Stop button.

19. Select “worklistapp” [v]again.

20. With the “Update” button use your new deployment plan (e.g. Plan2.xml)

Note: When there are problems (errors) with updating other applications as well, stop the other applications and restart them after the update of the “worklistapp”.

21. Start the “worklistapp”.

Test:
You can check if it works bij checking the session timeout of a session.
22. First login into the BPM Worklist to create a session.

23. In the Weblogic admin console, go to the “Deployments” page and search for the “worlistapp” again.

24. Expand the “worklistapp” [+] and under Modules click on Web Application “/integration/worklistapp”.

25 Click on tab “Monitoring” and select subtab “Sessions”.

26. If you’ve done it correctly, the “Max Inactive Interval” is set to your value multiplied by 60 (minutes to seconds).
e.g. in my case, it’s 2700 (45 * 60).

And from now on a less annoying life has began! :-)

 

Share.

About Author

Emiel is a senior Java & SOA consultant at AMIS, Nieuwegein (The Netherlands).

3 Comments

  1. I got this resolved. Added a different variable for the weblogic.xml timeout and teh web.xml timeout (Btw the digits after the timeout props are not needed if you donot need too many variables).
     
    Also My config root was pointing to the wrong war. I changed it to point to a correct .war (relative location can be used too) & it worked just fine after that !
    Thanks
     

  2. Thanks Emiel . Was a very useful post.
    Though I faced one tiny issue here.
    My Plan.xml gets updated to use the “SessionDescriptor_timeoutSecs_xxxxxxxxxxxxxx” for weblogic.xml [which is expected in seconds]
    I cannot create a new one (since for web.xml its expected in mins) – the weblogic console shows me some weird error while updating the deployment .. a NPE due to inablity to load the Plan.
    As a result I am having to use the same parameter for both web.xml and weblogic.xml  , which is resulting in a very high value of system timeout !!
    A lower value for the param is resulting ina  low value for SystemTimeout property on the Configurations tab of the WAR (probably coming from weblogic.xml) which is causing timeout again !!
     
    Please help.
     

Leave a Reply