I'm an currently testing a migration of classic WebSpeed applications to PASOE using OpenEdge.Web.CompatibilityHandler (using 11.7.2).
I have created a PASOE instance with multiple ABL Applications that are working as expected. Under one of those ABL Applications I have installed multiple ABL WebApps (based on oeabl.war) , enabled the WEB transport for each and set the default handler as 'OpenEdge.Web.CompatibilityHandler'. Each classic webspeed application can be accessed using '/App1/web/', '/App2/web/', etc. without issue.
However, I noticed that the 'AppURL' variable (which would normally return '/App1/web/' or '/App2/web/' depending on which app reference was used in the URL) was not accurate. When accessingd a webspeed program using '/App1/web/test1.w', it returned the correct '/App1/web/' value. If I next accessed a webspeed program using '/App2/web/test2.w', I would expect '/App2/web/' to be returned as the 'AppURL' value. But it actually returned '/App1/web/'.
After adding some debug to 'web-util.p', I found that the internal procedure 'init-session' is called once when the ABL Application agent handles the first OpenEdge.Web.CompatibilityHandler call. 'init-session' sets a number of cfg-* variables that are used in other initialization procedures that are run with each request (init-cgi, init-variables). All calls to the agent that use 'web-util.p' will then return configuration information for that first request (if '/App1/web/' is the first to use web-util.p, every other WebApp will receive '/App1/web/' as the AppURL value).
Making a change to 'init-cgi' to run 'init-session' (if multi-session-agent() is true) resolves this issue.
If there a configuration setting that I am missing that handles the case of multiple WebApps running the WEB transport under a single ABL Application? We have other minor changes to apply to web-util.p (to handle some custom headers), so making the change isn't a big deal, but I just want to make sure this is the path I should be going down.
There is now a restriction that you can only have one Compatibility Handler per ABL application. However, you can have multiple ABL applications per PASOE instance.
This seems like a bug, I shall log one.
There is now a restriction that you can only have one Compatibility Handler per ABL application. However, you can have multiple ABL applications per PASOE instance.