Programming a PHP/Java Bridge servlet
This guide shows how to create a servlet and how to call it from PHP code.
Create a servlet using the Eclipse IDE
- Start Eclipse Java EE IDE for Web Developers
- Click on File/New/Dynamic Web Project
- Enter Project name: "MyWebApp", Target runtime: "Apache Tomcat v6.0", Configuration: "Default configuration for Apache Tomcat"
- Click on Finish
- Open the tree: Project Explorer/MyWebApp/WebContent/WEB-INF so that the lib directory becomes visible
- Drag and drop JavaBridge.jar and php-servlet.jar to the lib directory.
- Click on File/New/Servlet
- Enter Java package: "test", Class name: "Hello"
- Click Next, Click Next
- Uncheck "doPost", check "doGet" and "doPut"
- Click on Finish
- Add the following code to the doGet method body:
response.getWriter().write("HelloServlet is running!");
- Add the following code to the doPut method body (press Control-Shift-o to automatically resolve references):
RemoteHttpServletContextFactory ctx = new RemoteHttpServletContextFactory(this,
getServletContext(), request, request, response);
response.setHeader("X_JAVABRIDGE_CONTEXT", ctx.getId());
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
try {
ctx.handleRequests(request.getInputStream(), response.getOutputStream());
} finally {
ctx.destroy();
}
- Add the following method to the servlet:
public String hello() {return "hello from MyServlet";}
- Click on the Run button. In the dialog box click on the Finish button. You should see the browser "http://localhost:8080/MyWebApp/Hello" with the message "HelloServlet is running!".
Connect PHP with your servlet
- Drag and drop Java.inc to a directory and create the following PHP script "test.php":
<?php
define("JAVA_HOSTS", "localhost:8080");
define("JAVA_SERVLET", "/MyWebApp/Hello");
require_once("Java.inc");
echo java_context()->getServlet()->hello();
?>
- Run the PHP script. For example with the command:
php -n test.php
hello()
method and display its result.
Please see the Java API documentation for more information.