Overview
--------

This document describes how to call Java methods from PHP. And how to
embed PHP applications into a pure Java application server or servlet
engine. Please see the INSTALL.J2SE document for details how to call
PHP methods from a pure Java application.

The PHP/Java Bridge can be installed with one copy operation:

* the JavaBridge.war must be copied into the autodeploy folder of the
  J2EE server.


Development
-----------

* Extract the JavaBridge.jar from the JavaBridge.war zip file from the
  PHP/Java Bridge binary download. Double-click on JavaBridge.jar or
  type "java -jar JavaBridge.jar" and click "OK" to start a servlet
  engine back end for all computers on the local network.

* Link Java.inc and your Java libraries into PHP at run-time. Example:
  
   <?php
    require_once("http://localhost:8080/JavaBridge/java/Java.inc");

    // call Java libraries using the provided Java class...
    java_require("myLibs/myLib.jar;dependentLib1.jar;...);
    $my = new Java("myPackage.MyClass", ...);
    $my->callSomething(...);
   ?>


Deployment
----------

* Install a J2EE application server or servlet engine, for example
  Apache Geronimo, Tomcat, Glassfish, ...

* Extract the files from the php-java-bridge J2EE download and deploy
  JavaBridge.war into your J2EE server, example for Tomcat on Unix: 
  
    cp JavaBridge.war $CATALINA_HOME/webapps/

  Example for Apache Geronimo on Windows:

    copy JavaBridge.war "\Program Files\IBM\WebSphereCommunityEdition\deploy"

* If you want to run PHP as a sub component of the J2EE server or
  servlet engine, visit http://localhost:8080/JavaBridge and click on
  test.php. 

* If you want to run PHP as a sub component of Apache or IIS or from
  the command line, create a simple test.php file and call it as usual.
  For example:

  <?php
    require_once("http://localhost:8080/JavaBridge/java/Java.inc");
    $s = new Java("java.lang.System");
    echo $s->getProperties();
  ?>

  copy it to the web server document root and browse to
  http://yourHost.com/test.php or use the PHP command line
  interface. For example:

    php-cgi test.php >result.html

* Firewall-out the J2EE/Servlet port 8080, if necessary. Or modify the
  J2EE/Servlet so that it listens only on the local interface. Note that
  in the default setup the PHP/Java Bridge rejects requests from non-local
  PHP clients. For a intranet server start the J2EE/Servlet VM with the
  parameter -Dphp.java.bridge.promiscuous=true or set the "promiscuous"
  init-param in the J2EE WEB-INF/web.xml and make sure that your
  computer cannot be accessed from the internet. At least firewall-out
  the ports 8080 and all ports in the range [9267,...,[9367 and read the
  "security" sections from README.

* Please report bugs/problems to the mailing list:

    php-java-bridge-users@lists.sourceforge.net


* An optimized implementation, which is up to 10 times faster than the
  pure PHP implementation described above, is available as C source. 
  Please see the README and INSTALL document located in the source
  download archive how to compile an optimized "php_java.dll" or
  "java.so" for your operating system.

