20 de febrero de 2011

Tutorial: Cómo acceder Sybase desde PHP en Java EE, usando GlassFish y Quercus

Image of Duke and PHP togetherEn mi tutorial anterior, ejecuté PHP en Java EE usando GlassFish y Quercus. Hoy, accedí una base de datos Sybase ASE desde PHP en un servidor Java EE.
  1. Instalé Sybase.
    1. Descargué e instalé la versión de desarrollo de Sybase Adaptive Server Enterprise 15.5 (enlace directo). La instalación me tomó bastante tiempo.
    2. Inicié la base de datos: inicié el servicio de Windows llamado Sybase SQLServer.
    3. Verifiqué la conexión a Sybase. En la línea de comandos de Windows, ejecuté:
      %SYBASE%\%SYBASE_OCS%\bin\isql -Usa -P
      Estando en el prompt de isql, ejecuté:
      select @@version
      go

      (A propósito, el usuario administrador es sa e inicialmente no tiene contraseña).
  2. Creé una base de prueba.
    1. En el prompt de isql, ejecuté:
      create database base_prueba
      go

    2. Creé su database owner:
      sp_addlogin dbo_base_prueba, password
      use base_prueba
      sp_changedbowner dbo_base_prueba
      sp_modifylogin dbo_base_prueba, defdb, base_prueba
      go
      exit
  3. Creé una tabla de prueba.
    1. Me conecté como dbo:
      %SYBASE%\%SYBASE_OCS%\bin\isql -Udbo_base_prueba -Ppassword
    2. Creé la tabla:
      create table Tabla1 (valor int)
      insert into Tabla1 values (12345)
      go
  4. Creé el DataSource en GlassFish.
    • Copié el driver JDBC de Sybase: copié el archivo Sybase\jConnect-6_0\classes\jconn3.jar al directorio glassfish\domains\domain1\lib\ext, y reinicié GlassFish.
    • Creé el connection pool, especificando la clase del driver como com.sybase.jdbc3.jdbc.SybDataSource.
    • Creé el DataSource y como nombre JNDI escribí jdbc/base.
  5. Creé una aplicación para ejecutar PHP en Java EE.
    • Usando mi tutorial anterior, creé una aplicación llamada HolaSybasePHP:
      • HolaSybasePHP.war
        • hola.php
        • WEB-INF
          • web.xml
          • lib
            • resin.jar
  6. Especifiqué el DataSource en la aplicación.
    • Agregué las siguientes líneas antes del tag final del archivo web.xml de mi aplicación:
      <resource-ref>
        <res-ref-name>jdbc/base</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
      </resource-ref>
  7. Modifiqué la página PHP.
    • Usé PDO (portable database object) de PHP 5:
      <p>Hola Sybase desde PHP.</p>
      <?php
      $pdo = new PDO("java:comp/env/jdbc/base");
      echo "<table border=1>"
      $sql = "SELECT valor FROM Tabla1";
      foreach ($pdo->query($sql) as $renglon) {
         echo "<tr><td>$renglon[valor]</td></tr>";
      }
      echo "</table>"
      ?>
  8. Finalmente, accedí http://localhost:8080/HolaSybasePHP/hola.php:
Una imagen del navegador de Internet mostrando en su interior Hola Sybase desde PHP 12345

Libros que espero te sean útiles (lista automática):

10 de febrero de 2011

Tutorial: Cómo ejecutar PHP en Java EE usando GlassFish y Quercus

Image of Duke and PHP togetherHoy ejecuté una página PHP en un servidor de aplicaciones Java EE llamado GlassFish. Esto es posible usando un intérprete llamado Quercus, que es una implementación 100% Java de PHP 5 liberada bajo la licencia Open Source GPL.
  1. Instalé Java.
    Tengo Java 6 (1.6.0_18-b07).
  2. Instalé GlassFish.
    Para ello, existe documentación de ayuda. Instalé GlassFish 2.1 (2.1-b60) para Windows.
  3. Descargé Quercus y lo descomprimí.
    Descargué el archivo .war de Quercus 4.0.11 de la página de Quercus. También hurgé en el contenido. ☺
  4. Creé una aplicación web.
    Simplemente, creé la siguiente estructura de directorio:
    • HolaMundoPHP.war
      • WEB-INF
        • lib
  5. Copié la biblioteca de Quercus.
    Copié el archivo resin.jar del directorio WEB-INF/lib del WAR de Quercus a mi aplicación Web:
    • HolaMundoPHP.war
      • WEB-INF
        • lib
          • resin.jar
  6. Creé el archivo web.xml
    Creé el archivo web.xml de mi aplicación Web, indicando que el Servlet de Quercus atendiera las peticiones a las páginas PHP:

    <?xml version="1.0" encoding="UTF-8"?>
     <web-app xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
     version="2.5">
     <description>Tutorial para ejecutar PHP en Java EE usando GlassFish y Quercus</description>
      <servlet>
       <servlet-name>QuercusServlet</servlet-name>
       <servlet-class>com.caucho.quercus.servlet.QuercusServlet</servlet-class>
      </servlet>
     <servlet-mapping>
      <servlet-name>QuercusServlet</servlet-name>
      <url-pattern>*.php</url-pattern>
     </servlet-mapping>
    </web-app>
    Lo coloqué en el directorio WEB-INF de mi aplicación Web:
    • HolaMundoPHP.war
      • WEB-INF
        • web.xml
        • lib
          • resin.jar
  7. Creé un archivo PHP.
    El ejemplo clásico, ahora en PHP, llamado hola.php:
    <?php
    echo "Hola mundo PHP";
    ?>
    Lo coloqué en mi aplicación Web, en donde normalmente se colocan los archivos JSP:
    • HolaMundoPHP.war
      • hola.php
      • WEB-INF
        • web.xml
        • lib
          • resin.jar
  8. Inicié GlassFish.
    Mediante el comando asadmin start-domain.
  9. Instalé mi aplicación usando autodeploy
    Copié el directorio de mi aplicación (HolaMundoPHP.war) al área de autodeploy del dominio de GlassFish. En mi caso, lo copie en glassfish\domains\domain1\autodeploy:
    • glassfish
      • domains
        • domain1
          • autodeploy
            • HolaMundoPHP.war
  10. Accedí mi aplicación Web.
    Accedí http://localhost:8080/HolaMundoPHP/hola.php y voliá.

Imagen del navegador con el texto Hola mundo PHP

Libros que espero te sean útiles (lista automática):