Domino Blog dot com - Free Blog Toolkit for Domino

 web design framework for Lotus Domino  
 
Navigation
 
Site:
 ›home
 ›about
 ›news
 ›the author
 ›hire the author
 ›donate to site
 ›live! project cam
 ›projects
 
Issue Archive:
 ›may 2003
 ›april 2003
 ›march 2003
 ›february 2003
 ›january 2003
 ›december 2002
 ›november 2002
 ›october 2002
 
Technical:
 ›articles
 ›downloads
 ›links
 
DXFramework:
 ›about
 ›articles
 ›screenshots
 ›demos
 ›licencing
 ›take part
 ›documentation
 

  
Introduction Comment:  Add | View 

I've been interested in Puakma for a long time. The main reason being that it fits into the mid size companies market for Java/Web application development very well. This is because it has all the functionality you need in a very small footprint, but without all the administration and costs of say applications like IBM's Websphere.

 

To start a quote from the creater of Puakma:

 

"Don't get me wrong - I am a Domino fan.... the right tool for the right job. Domino works really well when you have small apps eg Document Libraries and discussion-style databases. Where it falls over is in the level of control you get over your programming environment and the data source. NSF files just don't cut it in bigger apps (consider something like a timesheeting app - people, projects, jobs, time entries etc - all related. Not to mention the inherent performance problems when you get a large number of documents in a single NSF file.

On a public/internet website you can't stop some of the Domino default behaviours which may compromise your databases. $DefaultNav is a nasty, along with ?ReadViewEntries. Then there's the custom login form problems, stopping people opening forms (easily) if they know the names, ...

Puakma is aimed at that next level up: More complex web apps. Obviously the multi-platform thing is great, and the server itself is incredibly extensible: write your own authentication mechanisms, develop your own custom server AddIns. The relational datasource is used cleverly and much of the RDBMS complexity is hidden from developers, but at the same time if you want to mess about with the gamut of JDBC you can.

If you have a large Domino environment, definitely don't throw it out! Puakma represents a very cost effective way to implement complex web apps. You can even leverage some of that Domino infrastructure: use it as your mail router, run LDAP so you can log in your Puakma users against it, use CORBA calls from Puakma to leverage the data in it, etc.

The world seems to be moving to a "mix and match" software environment, and Puakma acts as that glue very well."


Ok - to clarify what Puakma actually is:

 

Puakma is a 100% Java application server, providing application and collaboration services.
The core is a http server and chat facility, but Puakma services may be easily extended and enhanced. Puakma sits in the middle-tier between your clients and their data.

 

The way Puakma works is there are a number of java JAR/CLASS files, together with configuration and language files, typically installed in /puakma/.


The data is provided by a JDBC data source, such as mySQL, DB/2, Oracle, etc. This RDBMS must be purchased and installed seperately to your puakma installation. The RDBMS may or may not be physically on the same machine, obviously performance will be better if they are both on the same machine.


In using Puakma, there are a number of advantages to be gained:

 

Hardware/software architecture agnostic
Flexible, scalable and extensible
Tightly integrated with relational data
Easy to install
Secure
Very easy to create custom web applications
Integrated application services: chat, http, authentication
Low TCO, leverages existing architecture


In addition, Puakma will run on any hardware/Operating system that has a full Java 1.4 runtime environment.
This may be x86 chips, RISC chips, Microsoft Windows, Sun Solaris, Linux to name a few. It is a full multi-threaded application so will scale up to the hardware it is installed on. For best performance, ensure you have a hotspot (or better) JVM.

 

One of the reasons I am particulary keen on Puakma, apart from what I have already mentioned, is to do with the DXFramework.


At the moment the DXFramework is reliant on Domino for administration, delivery to Web Browser of final application and back end data store. Software like Puakma will enable me to make the DXFramework totally web server, platform and data store independant -which really excites me.


Basically you could web enable your Domino Applications using the DXFramework and should you ever want to upgrade and go to J2EE or use another backend database such as Oracle, DB2, MySQL etc then you are half way there without doing anything. From my experience in the industry - that is a huge benefit.

 

Installation  

In order to install Puakma, you require the following:

 

1. Java Runtime Environment 1.4 or greater from www.java.sun.com
2. A JDBC compliant relational database system (RDBMS) and the JDBC client-side driver.
3. Some technical knowledge of networking and web technologies

 

Ok I was frightened by this to start with - make sure I had a Java Runtime Environment, install a JDBC compliant relational database system, then Puakma and connect the two etc etc - sounds like - well something I will do tommorrow instead!

 

In the end though I had to be brave and install the thing. First of all a relational database system. I chose MySQL firstly because I wanted some experience in that field, secondly due to the fact the product is free (under the terms of the GNU General Public License (GPL)) and thirdly Puakma comes with a JDBC driver for MySQL (it is preconfigured for mySQL) and the help guides use that as an example.


In the past - free software - can't be that good - can't rely on it for mission critical stuff - well in fact with mySQL you can - it is in fact used by companies like Yahoo! Finance, MP3.com, Motorola, NASA, Silicon Graphics, and Texas Instruments to name a few in mission critical applications. Well if its good enough for them etc.

 

I started by checking my java version by going to a command prompt and typing 'java -version'. It told me I already had 1.4 installed - so that was fine. Should that not be the case for you the file to run is available here: http://java.sun.com/j2se/1.4.1/download.html.

 

Next is the installation of mySQL - this is the bit I was nervous about! - You can download mySQL from here: http://www.mysql.com/downloads/index.html.

 

Well I ran the installation program - no sooner as I started and confirmed the installation path and selecting a typical installation I had a finish button to press! That was quick and easy!


The only additional configuration required for MySQL was to configure a user and password. So I ran the winmysqladmin application that can be found in the \bin folder of the mySQL installation folder. As soon as you run it for the first time it displays the default logon user as root and a blank password. I entered my password and then closed mySQL and restarted it.

 

Thats that done I had a relational database running on my XP Laptop. Next for the actual Puakma server install. The actual installation file can be found on the Puakma site under "Download Puakma". Once downloaded (670kb file!!), you simply unzip to where you want Puakma to reside - for me it was c:\puakma.

 

As I said before, Puakma is actually preconfigured to run with mySQL. The first thing you have to do, is to edit the puakma.config file with your mySQL user name and password. This file is located in the puakma/config folder and is entitled puakma.config. ie:

 

#********* JDBC SETTINGS **********
# Note: Paths/urls are CaSe senSitive!
#*** for mysql ***
SystemDBName=puakma
SystemDBURL=jdbc:mysql://localhost:3306/
SystemDriverClass=org.gjt.mm.mysql.Driver
SystemUser=root
SystemPW=password

 

With that done and saved, time to run the installation program. You need a command prompt to do this. Go to your Puakma\bin folder and run the SetupDB.bat file. This will build the required tables (within mySQL) in a database called puakma (the commands for building the database and tables can be found in /puakma/config/datadef.sql).


This batch file will pause part-way through and display a username and password for your installation.
Make a careful note of these before you press a key to continue! The username is 'SysAdmin' and the password is a unique six-digit number.


With that successfully done - time to launch the Puakma Server. Again in the puakma\bin folder, run the pmaStart.bat file. You should then see the server loading:

 

 

Ok the next part is accessing Puakma itself via a web browser. I started Internet Explorer typed in 127.0.0.1 (localhost - I am running everything from my laptop) and I instantly got the following logon prompt:

 

 

Once logged on the default system administration page is shown:

 

 

Thats it all done - we have a relational database running, a java web server running (puakma), and Puakma can read/write/create databases/tables.

 

 

Conclusion  

As mentioned before, the concept of Puakma really appeals to me. The fact I have my hands on a Java Web Server that runs on any platform (that can run the Java Runtime) and can connect to any database that is JDBC Compliant.


Then if you take into account that with mySQL costing zero, Puakma costing US $1,500 per server (not per processor). You have some heavyweight software without the heavyweight pricing, installation and administration costs. I myself will be doing a lot more work on this!


Coming soon... Further articles on Puakma which will cover administration and development.

 
 
copyright 2002-2003 - Steve Castledine - ProjectDX.org