Take the 2-minute tour ×
Database Administrators Stack Exchange is a question and answer site for database professionals who wish to improve their database skills and learn from others in the community. It's 100% free, no registration required.

Oracle Application Express (APEX) requires one of the following three options for an HTTP server: (1) Oracle HTTP Server (with mod_plsql), (2) Oracle Application Express Listener, or (3) an embedded PL/SQL gateway).

I understand the embedded PL/SQL gateway shouldn't be used when interfacing with browsers outside the firewall, which my application requires.

But, could I simply put an Apache Tomcat between it and the external browsers?

If so, what would be the advantages/disadvantages of using this solution compared to Oracle Application Express Listener (assuming it similarly has an Apache Tomcat between it and browsers)?

share|improve this question
    
Have you a source for "shouldn't be used when interfacing with browsers outside the firewall"? I can well imagine why but I'd like to read up on it. –  Jack Douglas Jan 25 '12 at 18:05
    
Nothing too detailed. Some links: http://www.databasejournal.com/features/oracle/article.php/3902866/Oracle-Appli‌​cation-Express---A-DBA-Perspective.htm and http://collaborate10.ioug.org/Portals/1/attendee/HARDENING%20APEX%20FOR%20MAXIM‌​UM%20SECURITY.pdf –  ggkmath Jan 25 '12 at 19:49
add comment

2 Answers

up vote 1 down vote accepted

The options you note:

  • (1) Oracle HTTP Server with MOD_PLSQL
  • (2) Oracle APEX Listener
  • (3) Embedded PL/SQL Gateway

For each option, pro/con:

(1) Original solution. Full flexibility of an http server with rewrite rules, access rules, etc. However, loading additional modules for mixed application server use can be painful because of the custom Apache build. Also, licensing additional products from Oracle can be pricy.

(2) Latest solution. Most flexible, it can be used in any j2ee container (Tomcat, Glassfish, Weblogic, old OC4J, etc), but should be combined with a true http server with access rules, etc for security (Tomcat is typically combined with HTTPD for this purpose). This does have the problem in that currently this must be deployed for each connection configuration, while (1) is deployed for the whole server with the single configuration.

(3) This is typically not recommended for external deployment in any case. Included is the issue with direct access to the database server from external clients. This can be helped with HTTPD as a proxy server (like Tomcat above).

In existing installs, where you already have mod_plsql applications in place, put the APEX dad along side those and you should be set using solution (1). For new installs, I would go with (2). (3) is a viable option for initial setup and testing, but should be replaced prior to production deployment.

share|improve this answer
    
For (2), would I just follow the install instructions for Glassfish if I wanted to use with Tomcat? (since Tomcat is not officially supported, there are no instructions to install on it). The other solution I'm considering is using Oracle HTTP Server that comes with 11G database, keeping them both on one server, and getting a separate server for middle tier plus Apache Web Server (so APEX has officially supported Oracle HTTP Server in front of it). Any preference? –  ggkmath Jan 27 '12 at 4:13
1  
Steps for Tomcat are outlined here (apexdplsepg.blogspot.com/2011/12/…), but basically it is adding the user and roles to tomcat-users.xml, and then configuring the instance the same way from the guide. If you are looking to httpd in front of, then you could look at the Standalone deployment, since this basically uses a small-footprint, embedded j2ee container. –  REW Jan 27 '12 at 4:35
    
Tomcat would typically be on the app server, listening with AJP on a port that is not publicly accessible, with the web server proxying for it. The APEX Listener would then be deployed in it as a normal j2ee application. –  REW Jan 27 '12 at 4:37
    
I will need to use Tomcat on the middle tier server for other purposes anyway, along with Apache Webserver with mod_jk. So if I understand you correctly, there are two approaches I could take regarding APEX Listener: (A) use Standalone deployment (which server is the APEX Listener located in this case?), or (B) add APEX Listener to Tomcat on the middle tier server. Is that right? Thanks so much for your comments REW. –  ggkmath Jan 27 '12 at 5:22
1  
(B) is the approach. Deploy it as you would normally deploy a WAR file application in Tomcat. –  REW Jan 27 '12 at 6:11
show 2 more comments

well tomcat works great except when you restart it or the server is restarted. I have found that I have to delete the $TOMCAT_HOME/temp/apex-config.xml file, restart tomcat, then reconfigure the listener each time tomcat restarts. is there a way around this? Has anyone successfully set this up, restarted tomcat, then access the apex application? I have not and it is frustrating

share|improve this answer
1  
Is this a new question? If so, please click the 'Ask Question' link above top right instead of adding an 'answer' here. –  Paul White Nov 1 '13 at 2:04
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.