Kbase P14362: WSA and AIA seem to be incompatible
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  3/11/2010 |
|
Status: Unverified
SYMPTOM(s):
AIA does not start once WSA has been configured
WSA does not start once AIA has been configured
WSA and AIA seem to be incompatible
WSA conflict with AIA over DLL
WARNING cannot access library environ.dll. The ubroker.properties token replacement is disabled.
java.lang.NoClassDefFound at com.progress.aia.AiaProperties.processArgs (AiaProperties.java:382).
FACT(s) (Environment):
OpenEdge 10.x
All Supported Operating Systems
CAUSE:
Release Note# 1A1B-00102
CAUSE:
This is a limitation set by the Java Servlet Engine (JSE) environment through its use of different ClassLoaders for each web application. Tomcat will attempt to load both servlets: aia and wsa and that's when the problem occurs. When each adapter attempts to load the environ.dll native library - the first one that loads it is successful, the second adapter will fail.
FIX:
To correct the problem choose one of the following options. Please note that these steps are based on Tomcat 4.1x:
Start a separate JSE for both AIA and WSA and map them both into the Web Server
- Install 2 JSEs and configure one for AIA and another one for the WSA.
- OR -
Configure both the AIA and WSA to run within the same JSE web application
1. Shutdown the web server and JSE.
2. Copy the aia.zip file from the <Progress-install-dir>/java directory into the directory containing the wsa/WEB-INF/lib directory.
By default this directory is located in <Progress-install-dir>/servlets/wsa/WEB-INF/lib. Rename aia.zip to aia.jar.
3. Edit the web.xml file for your deployed WSA servlet, e.g.: $TOMCAT_HOME/webapps/wsa/WEB-INF/web.xml
Insert the following text just above the servlet definition for the WSA.
<servlet>
<servlet-name>aia1_servlet</servlet-name>
<display-name>AIA servlet 1</display-name>
<servlet-class>com.progress.aia.Aia</servlet-class>
<init-param>
<param-name>InstallDir</param-name>
<param-value>Progress-install-dir</param-value>
</init-param>
<init-param>
<param-name>instanceName</param-name>
<param-value>aia1</param-value>
</init-param>
<init-param>
<param-name>propertyFileName</param-name>
<param-value>Progress-install-dir/properties/ubroker.properties</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
The key parameters to edit in the above text are: (a) the value for InstallDir, the value points to the Progress-Install-Dir,
(b) the value for instanceName, by default this is aia1 and (c) the value for propertyFileName points to the Progress-Install-Dir/properties/ubroker.properties file.
In the same web.xml file, locate the following section:
<servlet-mapping>
<servlet-name>wsa1_servlet</servlet-name>
<url-pattern>/wsa1/*</url-pattern>
</servlet-mapping>
Add a mapping for the AIA servlet by inserting the following text:
<servlet-mapping>
<servlet-name>aia1_servlet</servlet-name>
<url-pattern>/Aia/*</url-pattern>
</servlet-mapping>
5. The next step is to edit the server.xml file located within the $TOMCAT_HOME/conf directory. Locate the following text:
<!-- Tomcat Root Context -->
<!--
<Context path="" docBase="ROOT" debug="0"/>
-->
Add the following context immediately after the section shown above.
<Context path="/aia"
docBase="path_to_wsa/wsa"
debug="0"
reloadable="false">
</Context>
Make sure you set the docBase (see above) to the directory which contains the WSA. For example: c:\servlets\wsa. The default WSA d.irectory is located under <Progress-install-dir>/servlets.
5. Restart the web server and JSE.
- OR -
Configure the JSE to always start the AIA BEFORE the WSA
1. Shutdown the web server and JSE.
2. Explicitly change the WSA load-on-startup attribute from 1 to 0.
Edit the WSA servlet's web.xml (e.g.: $TOMCAT_HOME/webapps/wsa/WEB-INF/web.xml) as follows:
<!-- Set the WSA servlet class to load when the JSE starts (1 or 0) -->
<load-on-startup>0</load-on-startup>
3. Add the AIA load-on-startup attribute and set it to 1.
Edit the AIA servlet's web.xml as follows:
</init-param>
<load-on-startup>1</load-on-startup></servlet>
4. Modify the WSA's properties in ubroker.properties to NOT include tokens.
For example: "workDir=@{WorkPath}" should become "workDir=C:\WRK"
5. Restart the web server and JSE.
.