PageBox for Java: Web application deployment using Java PageBox

for
 PageBox for Java 
 API 
 Demo 
 Background 
Presentation Install User guide Developer guide Programming Port Repository PageBox Release notes

PageBox for Java

Presentation

PageBox for Java is a version of PageBox written in Java.

PageBox for Java reuses the design of PageBox for PHP and PageBox for .NET plus:

  1. A more scalable deployment model described in the Grid API V2. You can find details about this model in the Deployment with relays section.

  2. A delta deployment. Only the difference between the current version and the installed version is sent to the target PageBox.

  3. An installation API allowing fully automated deployments and updates.

  4. A better security model.

Don’t confuse PageBox for Java with the initial Java PageBox, still available on this site, whose design is completely different.

Java

PageBox for Java was compiled with Sun JDK 1.4. You can download the JDK (or J2SE SDK as it is called now) from http://java.sun.com/j2se/1.4/download.html.

Starting with version 0.0.10 PageBox for Java runs on:

  • Java Web Services Developer pack (JWSDP)

  • Tomcat 4.1 and above with Xalan and Axis

JWSDP

The Java WSDP is "an all-in-one download containing key technologies to simplify building of Web services using the Java 2 Platform." You can download the Java WSDP from http://java.sun.com/webservices/downloads/webservicespack.html.

PageBox for Java uses the following components of the Java WSDP:

  • The Tomcat servlet container

  • The Java API for XML Processing (JAXP)

  • Java API for XML-based RPC (JAX-RPC)

The main drawback of JWSDP is its license. In case of the JWSDP 1.2: "Sun grants to you, a non-exclusive, non-transferable, royalty-free and limited license to use one (1) copy of the Software internally for the purposes of evaluation only for sixty (60) days after the date you download the Software from Sun ("Evaluation Period"). No license is granted to you for any other purpose. You may not sell, rent, loan or otherwise encumber or transfer the Software in whole or in part, to any third party. Licensee shall have no right to use the Software for productive or commercial use."

It is a bit surprising because (1) JWSDP is mostly made of programs (Tomcat, Xalan, Xerces, Ant...) distributed with an Open source license, the Apache Software License (2) such restrictions didn’t exist in JWSDP 1.0.1 (used in PageBox for Java up to version 0.0.9).

PageBox 0.1.1 runs on top of JWSDP 1.3 and 1.5 (Tomcat 5).

Tomcat

JWSDP is useful to check that PageBox conforms to Sun standards. However its license is a showstopper. Therefore we built a distribution using:

Portages

PageBox for Java can be easily ported to other Application servers that support:

  • JavaServer Page (JSP) specification 1.2 and above

  • Servlet specification 2.3 and above

  • JAXP

  • COS, the com.oreilly.servlet package written by Jason Hunter for the Web archive upload (MultipartRequest class)

PageBox for Java is 100% written in Java and should run on all systems supporting a Java runtime >= 1.4.

We put comments when we used JDK 1.4 specific methods and objects. So it should be easy to recompile PageBox for Java with JDK 1.3.

Starting with version 0.0.10 the invocation of remote procedures is plug-able. For interoperability between Internet PageBoxes we recommend using JAX-RPC and the SOAP 1.2 protocol. For Intranet or Extranet you can develop a remote invocation driver for another protocol like raw TCP or RMI. We wrote a raw HTTP implementation suitable for Internet use.

Definition

PageBox is a set of components allowing the seamless deployment of Web applications, Web services, Controls, portlets...

Roles

Publisher

The publisher – maybe the author of an Application – packages a PageBox archive and uploads this archive on a Repository. A PageBox archive is a regular Web archive that can include an Installation class. The Installation class describes the post-installation steps of the archive, for instance create a database table. This Installation class runs under the control of the target PageBox that defines the installation environment and runs the Installation class in a sandbox.

The publisher can publish or unpublish a Web archive.

Subscriber

The subscriber registers one or more Pageboxes as agents interested by all or some archives available on a Repository.

The subscriber can subscribe or unsubscribe a PageBox.

In case of regular subscription, the PageBox will receive all the archives published on the Repository. If an archive is published after the subscription the PageBox will automatically receive it.

In case of archive subscription, the subscriber must also select the archives to send to the PageBox. The PageBox still automatically receive archive updates.

Repository

The Repository is a Web application.

The Repository is a rendez-vous point that handles publication and subscription request.

When the Repository receives a subscription request it sent the requested archives to the subscribed PageBox.

When a new archive is published the Repository sends the archive to the subscribed PageBoxes.

When a new version of an archive is published the Repository sends the differences between the old and new version of the archive to the subscribed PageBoxes.

The repository deploys and undeploys Web archives on the PageBox.

Deployments and undeployments are triggered by publications and subscriptions.

PageBox

A PageBox is a Web application.

A PageBox is an agent that handles requests of Repository.

The PageBox inflates the archive and can run the Installation class included in the archive and call the Application server to dynamically add or update the Web application.

When a PageBox receives a deployment request it:

  1. Copies the Web archive on a location defined by the PageBox administrator

  2. Runs the installation class of the archive if allowed by the PageBox administrator

  3. Calls the Application server to dynamically deploy the Web application

Note

In most cases, PageBox installs a form of Java Web application. However PageBox can be used to deploy any kind of archive, for instance:

  • PHP, .NET, Perl Web applications

  • Database updates

  • Configuration updates

Use

Dynamic content cache

Like HTTP proxy caches for static content, PageBox reduces bandwidth requirement for dynamic content. PageBox acts like reverse caching where Web sites pre-load caches. An application deployed by PageBox can implement different models:

  • Autonomous application managing its own data. If such an application talks to peer instances we can call the instance set "distributed application."

  • Graphical interface to one or many Web services. We describe this model in more detail in the next section "Subscribed components."

  • A mix of the models above

Subscribed components

An application can be an assembly of components from different providers. With PageBox providers can automatically update their components, for instance to support a newer version of a Web service or to fix a bug.


A portal displays portlets that can have been installed by a PageBox. It is useful in two scenarios:

  1. The portal owner can subscribe to a repository to get off-the-shelf portlets.

  2. An organization can choose to deploy Webtop portals in its branch offices. In this case PageBox allows deploying and maintaining the portlets of the branch offices.

Distributed applications

In a PageBox constellation (set of PageBoxes subscribed to the same repository)

  • All PageBox hosts have the same version of the deployed Web archives

  • A Web archive can retrieve its peer instances

Therefore a Web archive can safely call and get called by its peer instance. This function is useful to distribute work, synchronize caches and databases, route requests to the instance that owns the data... To facilitate the development of distributed applications we designed a Grid API. We plan to port this Grid API from .NET to Java.

Documentation

Question

URL

Audience

What is PageBox for Java?

PageBox presentation (this document)

Everybody

Where to find PageBox?

How to install and configure PageBox?

How to diagnose PageBox problems?

Download and installation guide

Administrator

How to publish and subscribe?

User guide

Administrator, publisher

How to write a PageBox archive?

Developer guide

Java programmer

How to port PageBox for Java to another Application server?

Porting guide

Java programmer

How does Java deployment work?

Deployment with relays

Java programmer

How does the PageBox repository work?

Repository implementation

Java programmer

How does PageBox work?

PageBox Implementation

Java programmer

How to modify PageBox and contribute to the PageBox development

PageBox programming environment

Java programmer

The documentation above has been created using Cuckoo that you can also download on this site.

You can also find on this site the documentation generated from the sources with JavaDoc for

Contact:support@pagebox.net
©2002-2004 Alexis Grandemange. Last modified .