php.java.servlet
Class PhpCGIServlet

java.lang.Object
  extended by javax.servlet.GenericServlet
      extended by javax.servlet.http.HttpServlet
          extended by php.java.servlet.CGIServlet
              extended by php.java.servlet.fastcgi.FastCGIServlet
                  extended by php.java.servlet.PhpCGIServlet
All Implemented Interfaces:
java.io.Serializable, javax.servlet.Servlet, javax.servlet.ServletConfig

public class PhpCGIServlet
extends FastCGIServlet

Handles requests from internet clients.

This servlet can handle GET/POST requests directly. These requests invoke the php-cgi machinery from the CGI or FastCGI servlet. Although the servlet to php-cgi back to servlet path is quite slow (compared with the http front end/j2ee back end setup) and consumes two servlet instances instead of only one, it can be useful as a replacement for a system php installation, see the README in the WEB-INF/cgi folder. It is currently used for our J2EE test/demo.

See Also:
JavaBridge, Serialized Form

Nested Class Summary
 class PhpCGIServlet.CGIEnvironment
          Adjust the standard tomcat CGI env.
 
Field Summary
static boolean USE_SH_WRAPPER
          True if /bin/sh exists, false otherwise
 
Fields inherited from class php.java.servlet.fastcgi.FastCGIServlet
FCGI_PIPE, FCGI_PORT, PHP_FCGI_CHILDREN, PHP_FCGI_MAX_REQUESTS
 
Fields inherited from class php.java.servlet.CGIServlet
BUF_SIZE, cgiPathPrefix, context, processEnvironment
 
Constructor Summary
PhpCGIServlet()
           
 
Method Summary
 void destroy()
          Destroys the FastCGI connection pool, if it exists.
static int getServletPoolSize()
          Return the servlet pool size
 void init(javax.servlet.ServletConfig config)
          Create a new FastCGI servlet which connects to a PHP FastCGI server using a connection pool.
static void releaseReservedContinuation()
          Release a captured continuation
static void reserveContinuation()
          Since each script captures up to two servlet instances, we must check the servlet engine's thread pool.
 
Methods inherited from class php.java.servlet.CGIServlet
getLocalPort, getRealPath
 
Methods inherited from class javax.servlet.http.HttpServlet
service
 
Methods inherited from class javax.servlet.GenericServlet
getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, log, log
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

USE_SH_WRAPPER

public static final boolean USE_SH_WRAPPER
True if /bin/sh exists, false otherwise

Constructor Detail

PhpCGIServlet

public PhpCGIServlet()
Method Detail

init

public void init(javax.servlet.ServletConfig config)
          throws javax.servlet.ServletException
Description copied from class: FastCGIServlet
Create a new FastCGI servlet which connects to a PHP FastCGI server using a connection pool. If the JavaBridge context exists and the JavaBridge context can start a FastCGI server and the current context is configured to connect to a FastCGI server, the current context connects to the JavaBridge context to start the server and then uses this server for all subsequent requests until the server is stopped. When FastCGI is not available (anymore), the parent CGI servlet is used instead.

Specified by:
init in interface javax.servlet.Servlet
Overrides:
init in class FastCGIServlet
Parameters:
config - The servlet config
Throws:
javax.servlet.ServletException - if an exception has occurred that interferes with the servlet's normal operation
See Also:
ConnectionPool, FastCGIServlet.destroy()

getServletPoolSize

public static int getServletPoolSize()
Return the servlet pool size

Returns:
The pool size

destroy

public void destroy()
Destroys the FastCGI connection pool, if it exists.

Specified by:
destroy in interface javax.servlet.Servlet
Overrides:
destroy in class FastCGIServlet

reserveContinuation

public static void reserveContinuation()
                                throws ScriptException
Since each script captures up to two servlet instances, we must check the servlet engine's thread pool. Check if a script continuation is available and capture it. Otherwise throw a PhpScriptException.

Throws:
ScriptException

releaseReservedContinuation

public static void releaseReservedContinuation()
Release a captured continuation