IBM Support

After upgrading IBM Content Navigator, the Process applet keepalive no longer sustains the session.

Troubleshooting


Problem

Process applets have a feature called keepalive that will ping the server while the applet is running to keep the session active.  After upgrading to IBM Content Navigator 3.0.4 or later, the user's session can timeout even though the ping requests are still being sent to the application server.  The session timing out will cause an error the next time the applet tries to make a call to the navigator application and the window that launched the applet will display the logon page.

Symptom

The error message shown by the Process applet may vary depending on what action was being performed.
The following is an example of clicking the Validation button in Process Designer:
image 1191
Bringing up properties for an item in Process Configuration applet does not populate the popup window and generates the following in the Java console:
network: Server http://{server:port}/navigator/jaxrs/plugin?plugin=CPEAppletsPlugin&action=CPEAppletListenerPluginService&repositoryId=p8os1&desktop=Browse&security_token={token} requesting to set-cookie with "JSESSIONID={jsessionid} Path=/"
java.lang.RuntimeException: java.lang.RuntimeException: java.io.StreamCorruptedException: invalid stream header: 7B7D2626
    at filenet.vw.soap.util.VWSOAPUtils.invoke(VWSOAPUtils.java:99)
    at filenet.pe.soap.SOAPClientSession.command(SOAPClientSession.java:186)
    at filenet.pe.soap.SOAPClientSession.getConfigInfo(SOAPClientSession.java:252)
    at filenet.vw.api.VWSession.getDatabaseType(VWSession.java:2990)
    at filenet.vw.toolkit.admin.property.roster.VWConfigRosterPropertyDialog.<init>(VWConfigRosterPropertyDialog.java:133)
    at filenet.vw.toolkit.admin.VWConfigPerformer.performRosterProperty(VWConfigPerformer.java:1217)
    at filenet.vw.toolkit.admin.scope.VWConfigScopeViewPane.actionPerformed(VWConfigScopeViewPane.java:393)
    at filenet.vw.toolkit.admin.scope.VWScopeTreeMouseAndKeyListener.performAction(VWScopeTreeMouseAndKeyListener.java:385)
    at filenet.vw.toolkit.admin.scope.VWScopeTreeMouseAndKeyListener.mouseClicked(VWScopeTreeMouseAndKeyListener.java:226)
    at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:270)
    at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:269)
    at java.awt.Component.processMouseEvent(Component.java:6542)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6304)
    at java.awt.Container.processEvent(Container.java:2239)
    at java.awt.Component.dispatchEventImpl(Component.java:4889)
    at java.awt.Container.dispatchEventImpl(Container.java:2297)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4544)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
    at java.awt.Container.dispatchEventImpl(Container.java:2283)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
    at java.awt.EventQueue$4.run(EventQueue.java:733)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.lang.RuntimeException: java.lang.RuntimeException: java.io.StreamCorruptedException: invalid stream header: 7B7D2626
    at filenet.vw.server.rpc.PostURLDefault.postHttpObjects(PostURLDefault.java:362)
    at filenet.vw.server.rpc.PostURLDefault.postObjects(PostURLDefault.java:192)
    at filenet.vw.soap.transport.VWSOAPHTTPConnection.postHttpObjects(VWSOAPHTTPConnection.java:135)
    at filenet.vw.soap.util.VWSOAPUtils.invoke(VWSOAPUtils.java:86)
    ... 40 more
Caused by: java.lang.RuntimeException: java.io.StreamCorruptedException: invalid stream header: 7B7D2626
    at filenet.vw.server.rpc.SerializationUtils.getHttpServerErrorEx(SerializationUtils.java:124)
    ... 44 more
Caused by: java.io.StreamCorruptedException: invalid stream header: 7B7D2626
    at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:866)
    at java.io.ObjectInputStream.<init>(ObjectInputStream.java:358)
    at filenet.vw.server.rpc.PostURLDefault.postHttpObjects(PostURLDefault.java:308)
    ... 43 more

Cause

IBM Content Navigator 3.0.4 introduced a new feature to warn users before the session expires.  If the user does not interact with the prompt, Content Navigator will terminate the session.  The mechanism used to determine the session expiration notification is based on client local information and is unaware of the ping requests sent to the server by the applet keepalive pings.

Resolving The Problem

The session warning feature can be disabled by creating a custom Content Navigator setting.  This is added using the Content Navigator Administration desktop > Settings > General (tab) > Additional Settings > New: 
image 1179
In the new Custom Property dialog > enableSessionExpireWarning - value: False:
image 1190
Save the changes and recycle the application server hosting the Content Navigator application.  With this setting in place, the session expiration warning feature will be disabled and the session timeout will revert to the behavior before V3.0.4, which relies on the application server's session timeout functionality.  The Process applet keepalive pings will prevent the application server's session from expiring.
A longer term software fix is also under investigation.

Document Location

Worldwide

[{"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Product":{"code":"SSEUEX","label":"IBM Content Navigator"},"Component":"Process Applets integration","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF016","label":"Linux"},{"code":"PF033","label":"Windows"}],"Version":"3.0.4, 3.0.5","Edition":"","Line of Business":{"code":"LOB18","label":"Miscellaneous LOB"}}]

Product Synonym

ICN, PE, CPE, Process Engine, FileNet Business Process Manager

Document Information

Modified date:
19 June 2019

UID

ibm10886991