Puente PHP/Java

Índice de Contenidos

  1. Introducción
  2. Herramientas
  3. Instalación
    1. Instalación de PHP
    2. Instalación de Apache
    3. Instalación del puente PHP/Java
  4. Configuración
  5. Pruebas
    1. Llamada a un método Java desde PHP
    2. Llamada a un EJB desde PHP
  6. Conclusión

1. Introducción

El puente PHP/Java es un protocolo de red que permite conectar en ambas direcciones scripts en PHP con clases Java, EJB, VB.NET, C#, JRuby, etc. Es más rápido que RPC via SOAP y que JNI (Java Native Interface). Permite compartir la sesión entre páginas JSP y scripts PHP corriendo en distintos servidores. Los scripts PHP pueden correr en un servidor Apache, IIS, servidor FCGI o un Tomcat.

Enlaces de interés:

2. Herramientas

Las herramientas necesarias para la instalación en Windows son las siguientes:

3. Instalación

3.1 Instalación de PHP

Creamos un directorio en C:\PHP y descomprimimos el .zip del PHP que nos hemos descargado.

3.2 Instalación de Apache

La instalación de Apache no tiene ninguna complicación. Cuando nos pida la información de configuración del servidor introducimos lo siguiente:
  • Network Domain: localhost
  • Server Name: localhost
  • Administrator’s Email Address: una dirección de correo
  • Install Apache HTTP Server 2.0 programs and shortcuts for: All Users, on Port 80, as a Service
Finalmente si tenemos activado el Firewall de Windows nos bloqueará la ejecución del Apache por lo que debemos desbloquearlo.

3.3 Instalación del puente PHP/Java

Descomprimimos el zip en D:\servidores\php-java-bridge-3.1.8_j2ee

4. Configuración

    • Descomprimimos el JavaBridge.war (D:\servidores\php-java-bridge-3.1.8_j2ee) en el mismo directorio donde se encuentra.
    • Copiamos el JavaBridge.jar que contiene la API de conexión PHP/Java situado en D:\servidores\php-java-bridge-3.1.8_j2ee\WEB-INF\lib en C:\PHP\ext
    • Copiamos la dll java-x86-windows.dll situada en D:\servidores\php-java-bridge-3.1.8_j2ee\WEB-INF\cgi en C:\PHP\ext y la renombramos a php_java.dll para poder utilizar correctamente el puente en Windows.
    • Hacemos una copia del fichero php.ini-recommended y lo renombramos a php.ini situado en C:\PHP. Este fichero contiene las propiedades de arrranque de PHP. Añadimos lo siguiente:
      • Configuramos las extensiones dinámicas de PHP en la línea extension_dir y añadimos el path C:\PHP\ext
      • Añadimos en Windows Extensions la dll que acabamos de copiar.
      • Debajo de Module Settings añadimos un módulo para la conexión con Java con las siguientes propiedades.
    • Editamos el fichero httpd.conf situado en D:\servidores\Apache2\conf y añadimos lo siguiente:
      • A continuación de AddType application/x-gzip .gz .tgz añadimos:
      • A continuación de #LoadModule ssl_module modules/mod_ssl.so introducimos lo siguiente:
5. Pruebas Para probar que todo funciona correctamente creamos un script PHP que nos muestra los parámetros de configuración de PHP: Lo guardamos como phpinfo.php en D:\servidores\Apache2\htdocs\pruebas (creamos la carpeta pruebas dentro de htdocs). Para probarlo arrancamos el servidor Apache. Abrimos un navegador e introducimos http://localhost/pruebas/phpinfo.php. Se nos muestra una página con todos los parámetros configurados para PHP. Lo más interesante es ver si está correctamente configurado el módulo Java que está un poco más abajo en la misma ventana. Si no os saliera deberéis revisar los pasos en la configuración.

5.1 Llamada a un método Java desde PHP

    • Primero creamos una clase de prueba con un método para llamarlo desde un script PHP. Hacemos un clásico Hola Mundo!!
Lo guardamos como HolaMundo.java y lo compilamos con javac Holamundo.java Una vez creado el .class creamos un jar con el comando jar cvf HolaMundo.jar HolaMundo.class
    • Ahora creamos el script PHP que llamará al método saludo() de nuestra clase HolaMundo:
 

5.2 Llamada a un EJB desde PHP

    • Creamos la interfaz remota y el bean de sesión que la implementa. Lo haré con EJB3 ya que resulta muy sencillo.
Interfaz Remota
Bean se Sesión sin Estado
Creamos un jar y lo añadimos al directorio deploy del JBoss y también en la parte cliente, en este caso en C:\PHP\ext. También añadimos los jars necesarios de la parte cliente del JBoss a C:\PHP\ext (no se detallan estos pasos ya que no son el objetivo principal de este tutorial). Desde la consola jmx del JBoss comprobamos que se ha desplegado el Bean correctamente:
    • Para llamar al Bean remoto desde PHP creamos un script en el que añadimos lo siguiente:

6. Conclusión

Como podéis comprobar no es nada complicado unir dos mundos tan distintos como son PHP y Java si dispones del software apropiado. Quizá no sea un buen planteamiento para arrancar un proyecto inicial ya que existen otras herramientas pero sí puede resultar útil a la hora de conectar PHP con otras aplicaciones.