Scripting with servlets [php - using quercus] - part VII (Sun Java System WebServer 7.0)

Scripting with servlets [using quercus implementation of php (over jvm)]

Hack Warning

     The steps described below are plainly a simple hack to get the Quercus implementation of
php working with Sun's WebServer 7.0. This will get you started and gives only the base language.
I have not tested any of the libraries and do not expect any of them to work. The hack involves
removing the dependency of Resin server from the distributed open-sourced Quercus codebase.

More info: 

For a detailed treatment of running the Native php on Sun Java System see Joe's article. The difference
here is that we use the Quercus implementation of php over jvm provided by Caucho.
We use Quercus implementation distributed with the Resin 3.0 which was opensourced by Caucho.

Unlike the previous installments of this series, This entry does not make use of the ScriptingServlet or the Scripting
interface of jdk6. I have tried to make use of the servlet (slightly modified) that allows Quercus to run on Resin, and
have modified it slightly to run on Sun Java System WebServer 7.0.

More over, I have added the diffs required to get Quercus to work in Sun Java System WebServer here. It should
help any one else who are interested. (note that all the lines that states 'Only in' are the directories that were removed
from the original Caucho distribution)

About the language

The php is a powerful server-side templating language. It is widely used and is an alternative to technologies
like ASP, JSP etc. The strength of php is that it is easy to use and its syntax is closely related to Perl and C.

Steps involved for the Users.

  1. Download the quercus-webapp.tar.gz
  2. Extract it to the samples/java/webapps/quercus directory in your installation. (same as previous entries)
  3. Download the below jars and put them inside samples/java/webapps/quercus/docroot/WEB-INF/lib
  4. compile the PhpServlet by invoking Ant from your quercus/src directory.
    • (This will create quercus-webapp.war in your quercus directory)
  5. deploy it by invoking the deploy.tcl in your quercus directory.
    • wadm  -u admin -f deploy.tcl

The directory should look like the following after the jars are downloaded.


|cd quercus
|find .
.
./docs
./docs/index.html
./src
./src/build.xml
./src/HelloModule.java
./src/docroot
./src/docroot/WEB-INF
./src/docroot/WEB-INF/lib
./src/docroot/WEB-INF/lib/aopalliance.jar
./src/docroot/WEB-INF/lib/amber-resin.jar
./src/docroot/WEB-INF/lib/ejb-resin.jar
./src/docroot/WEB-INF/lib/javax-resin.jar
./src/docroot/WEB-INF/lib/lib-resin.jar
./src/docroot/WEB-INF/lib/main-resin.jar
./src/docroot/WEB-INF/lib/parser-resin.jar
./src/docroot/WEB-INF/lib/server-resin.jar
./src/docroot/WEB-INF/web.xml
./src/docroot/WEB-INF/sun-web.xml
./src/docroot/WEB-INF/classes
./src/docroot/WEB-INF/classes/META-INF
./src/docroot/WEB-INF/classes/META-INF/services
./src/docroot/WEB-INF/classes/META-INF/services/com.caucho.quercus.QuercusModule
./src/docroot/index.html
./src/docroot/hello.php
./src/PhpServlet.java
./resin.patch
./deploy.tcl

(There are multiple jar files only because the blogs.sun.com does not permit me to upload files more
than 3.0 MB at once.)

Callbacks to Java Land

 You might have noticed two interesting files in the previous listing..
    HelloModule.java and com.caucho.quercus.QuercusModule

 

 The HelloModule.java contains a simple implementation of a php function. hello_test. (The class name does not matter.)

package example;
import com.caucho.quercus.module.AbstractQuercusModule;

public class HelloModule extends AbstractQuercusModule {
    public String hello_test(String name) {
        return "at, " + (new java.util.Date()).toString() + " for " + name;
    }
}

 

and the com.caucho.quercus.QuercusModule contains a single string that tells the Quercus what class to load

 

example.HelloModule

The hello.php file below invokes the php function we have thus defined.
 

<html>
<body>
<?php echo "Hello, "; ?>
<br/>
<?php echo hello_test("World"); ?>
<br/>
</body>
</html>

You will be able to invoke your application as

         http://yourserver:port/quercus/hello.php

once you have deployed the webapp.

 

Comments:

Post a Comment:
  • HTML Syntax: NOT allowed
About

blue

Search

Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today