Ubuntu Forums Archive Viewer

HOWTO: Ubuntu 8.04 Tomcat+Cocoon for Oracle ApEx PDF printing

Archived thread 1004742 from Outdated Tutorials & Tips. Markdown source: Outdated_Tutorials_&_Tips/thread_1004742_HOWTO_Ubuntu_8.04_Tomcat+Cocoon_for_Oracle_ApEx_PD.md

Original URL About this archive
#1

This tutorial is for people who wants enable PDF printing for Oracle Application Express version 3.1 or greater. I have tested this on Ubuntu 8.04 server, Oracle XE Universal and Apex versions from 3.1 to 3.2.1.

First set enviroment variables adding rows to your .bashrc

nano ~/.bashrc

Add lines end to file

export JAVA_HOME=/usr/lib/jvm/java-6-sun
export CATALINA_HOME=/usr/share/tomcat5.5

Logoff and login again so that enviroment variables taken use.

Install Unrar, Java and Tomcat

sudo apt-get install unrar sun-java6-jre sun-java6-jdk libtomcat5.5-java tomcat5.5 tomcat5.5-admin tomcat5.5-webapps

Stop Tomcat

sudo /etc/init.d/tomcat5.5 stop

Create user for Tomcat admin and manager editing file /usr/share/tomcat5.5/conf/tomcat-users.xml. Replace "yourusername" and "yourpasswd" string you like use to username and password.

sudo nano /usr/share/tomcat5.5/conf/tomcat-users.xml

Add between tags <tomcat-users> and </tomcat-users> rows

<role rolename="manager"/>
<role rolename="admin"/>
<user username="yourusername" password="yourpasswd" roles="admin,manager"/>

Set JAVA_HOME

sudo nano /etc/default/tomcat5.5

Add line end of file

JAVA_HOME=/usr/lib/jvm/java-6-sun

Create policy for Cocoon

sudo nano /etc/tomcat5.5/policy.d/05cocoon.policy

And paste this to file

grant codeBase "file:/var/lib/tomcat5.5/webapps/cocoon/-" {
    permission java.security.AllPermission;
};

Download Cocoon source:

cd /tmp
wget http://mirror.eunet.fi/apache/cocoon/cocoon-2.1.11-src.tar.gz
tar -xvvzf cocoon-2.1.11-src.tar.gz

Build Cocoon war file

cd /tmp/cocoon-2.1.11
sh build.sh war

Copy war file to Tomcat webapps folder

sudo cp /tmp/cocoon-2.1.11/build/cocoon/cocoon.war /var/lib/tomcat5.5/webapps

Start Tomcat

sudo /etc/init.d/tomcat5.5 start

Get fop_post for ApEx and place it to Tomcat webapps Cocoon folder

wget http://rste.net.googlepages.com/fop_post.rar
unrar x fop_post.rar
sudo mv fop_post /var/lib/tomcat5.5/webapps/cocoon

Now Tomcat mainpage can be access from http://localhost:8180/

Set up ApEx:

  • Login to your ApEx INTERNAL workspace
  • Go to Manage Service -> Instance Settings
  • Change Report Printing configuration

Print Server: Standard Print Server Host Address: localhost Print Server Port: 8180 Print Server Script: /cocoon/fop_post/

Now you can enable PDF printing on your ApEx application reports

I have used below links to build up this guide. So credit goes to https://help.ubuntu.com/community/Oracle10g http://www.debian-administration.org/articles/430 http://carlback.blogspot.com/2007/03/apex-cocoon-pdf-and-more.html http://rste.blogspot.com/2008/07/excel-export-from-apex-cocoon.html http://www.oracle.com/technology/tech/linux/install/xe-on-kubuntu.html http://howto.landure.fr/gnu-linux/debian-4-0-etch-en/install-cocoon-2-1-x-and-fop-0-9x-on-debian-4-0-etch/view?set_language=en http://www.poveravoce.net/blog/?p=85

Edit: When you configure Apex instance you can also select Print Server: Advanced (requires Oracle BI Publisher) Then you get more options to print your interactive report.

Tomcat has by default limit on POST size. That prevent you download large PDF file

You can change maxPostSize parametter to e.g. unlimited

Open /etc/tomcat5.5/server.xml

sudo nano /etc/tomcat5.5/server.xml

find line maxSpareThreads="75" and add after that to new line

maxPostSize="0"

Also you need increase Java memory. Edit /etc/default/tomcat5.5

sudo nano /etc/default/tomcat5.5

and line end of file

JAVA_OPTS="-Xms1024m -Xmx2049m -XX:MaxPermSize=512m -XX:PermSize=512m -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled"

This seems to be issue that printing needs lot of memory.[/I]

After changes restart Tomcat

sudo /etc/init.d/tomcat5.5 restart

to connect database/Apex there might be also limitation for Post size. If you use Embed PL/SQL gateway (EPG) there should not be limits. At least I have not find any on Oracle XE EPG.[/I]

I am still testing/experimenting those Java memory settings so if some one use this guide and understand better Java memory parameters , please post your comments