There is no answer that handles all situations. There are several ways to move the web application from development to production. The best way to deploy to production will depend on each situation, application and configuration needs. The most common methods are as follows:
- If not done so already, create and configure the new production PASOE instance in the same OpenEdge version as documented in the following whitepaper:
- Export the REST/ABL WebApp as a named webapp into a WAR archive or deploy just the services as Paar files(Exported in a ZIP) to the existing ROOT webapp:
- Deploy the WAR WebApp archive to the production PASOE instance. Example:
cd %CATALINA_BASE% (like c:\oework\oepas1)
{Catalina_Base}\bin\tcman deploy -v -u tomcat:tomcat -l -a demoApp <war_file_path>\demoapp.war ablapp1
- Alternatively it can be deployed via the OpenEdge Explorer, once the oe manager has been deployed from: <DLC>\servers\pasoe\extras\oemanager.war
For a new deployment, never simply copy the .war to the webapps folder as could be done with Classic Rest Services. By doing so, the openedge.properties will not be tailored with the webapp configuration, resulting in subsequent runtime failure. Instead, use Step 3 or 4.
When deploying only the webapp services to the existing ROOT webapp, steps are outlined in Article:
How to export a REST or ABL webapp service from PDSOE to an existing REST application in PASOE Important Note: Tomcat has a requirement where a ROOT webapp must exist in order for it to function
- In PASOE the (Tomcat) ROOT webapp was replaced by our oeabl.war webapp.
- The ROOT webapp in a PASOE instance is in reality the oeabl.war deployed with the name ROOT, not the original Tomcat ROOT.war, which can also be found under $CATALINA_HOME/extras.
- Even when a named webapp is deployed as a WAR file the required ROOT webapp must remain deployed. It is a gateway into the application that does not have any default security configured, this would have to be addressed. As an alternative It is possible to undeploy the ROOT webapp and deploy the named webapp as ROOT. Tomcat requirement is that the ROOT webapp exists, regardless of which WAR file is used for deployment.
Other approaches:
- AppServer only (APSV transport) - if the application is AppServer only then copy the r-code to a newly created instance on the production machine, set PROPATH, db connections, event values in openedge.properties. However consider that in reality the webapp's primary purpose is to provide authentication for a set of ABL services, not simply the service's application code.
- When the PASOE instance has already been fully configured with all the necessary webapp(s):
- ZIP up the current development machine instance,
- Copy the compressed archive to the target machine and unzip it
- and then to modify the script files and register the instance run:
<DLC>\servers\pasoe\bin\tcman register <instance-name> <instance-dir>
An upgrade to OpenEdge 11.6.1 is necessary before running "tcman register" due to some known issues. When packaging and migrating instances make sure the instance is from a PASOE production license as the development license has performance limitations by design. For OE versions 11.6.2 or prior, it is not possible to register a Windows instance in Linux or vice-versa. This is fixed since OpenEdge 11.6.3.
- To create, build and deploy pasoe web application, with the service's application .p/.r code, authentication & other settings (like which transports are enabled), static images/resources and a set of ABL services (which may be REST, WEB , SOAP or APSV) use ant:
Since OpenEdge 12.2 the jettison-1.2.jar is replaced by jettison-1.4.0.jar, and 1padapters-util.jar is needed for a class needed by REST services
Assure the ${dlcJava} is the OpenEdge install directory $DLC/java folder, not the OpenEdge JDK directory.