This issue can also manifest itself with a dialog titled Session has expired. Unable to process incoming request. showing up as you try to interact with a form. This comes from the fact that Tomcat and WebLogic handle the
JSESSIONIDcookie used to track sessions differently:
- Tomcat creates one
JSESSIONIDper web application, with the cookie path set to the context of the application. When an application invalidates the session, Tomcat sends a new
JSESSIONIDto the browser.
- WebLogic stores one cookie
JSESSIONIDwith cookie path
/for all the applications. This cookie doesn't change when a session is invalidated, and hence there is no one-to-one mapping between a
JSESSIONIDcookie and a session in WebLogic.The error can happen when:
- 1.You first access your application deployed on
/myappwith Tomcat. Tomcat sets a
- 2.You then access your application on the same server deployed on
/myappwith WebLogic. Tomcat sets a
- 3.In subsequent requests, the browser sends the Tomcat
JSESSIONIDas it is more specific (for
/myappinstead of just
/), but WebLogic doesn't recognize it, hence the error you're getting.
The solution is simply to clear in your browser all the
JSESSIONIDcookies for the host you are trying to access.
If when accessing the Form Runner summary page, the data you're seeing looks garbled, then run the following in on your MySQL database:
alter table orbeon_form_definition change xml xml mediumtext collate utf8_unicode_ci;
alter table orbeon_form_data change xml xml mediumtext collate utf8_unicode_ci;
This instructs MySQL to use the
utf8_unicode_cicollation instead of the default
utf8_bin, and fixes this issue (#1607). Note that no data was lost; data was always safe in the database, and this only impacted how it was shown on the summary page. The [MySQL DDL for Orbeon Forms 4.5][mysql-45-ddl] has been updated after the 4.5 release, so if you're today installing Orbeon Forms 4.5, you can safely use that DDL and don't need to run the above commands.