- PHP: los recursos normales instalados en el servidor físico o maquina de trabajo linux
- Quercus: recurso para ejecutar una aplicación php dentro de un servidor de aplicaciones java
- Descarga: descargar de http://quercus.caucho.com/, Quercus_x.x.x.war
- Instalación:
- desplegar el Quercus_x.x.x.war desde la consola de administración de glassfish.
- Librerías: Copiar las librerías necesarias dentro del web-inf del proyecto quercus desplegado, todas las usadas en jasperreport para exportar el pdf, para conexión el driver conector postgres, y alticJasper.jar parar realizar la conexión desde php al conector y el jasperreport.
- Glassfish: servidor de aplicaciones web J2EE, JSE, etc.
- Jasperreport: tecnología para realizar reportes java enlazados a bases de datos
Código php usado para llamar el reporte .jasper, adaptado de la red.
//directorio de los reportes
$dir = "/home/iproject/glassfish-3.1.2.2/glassfish/domains/domain1/applications
/quercus-4.0.37/EAOptimaERP_v1.2_Contabilidad/reportes";
//Especificamos el nombre del reporte
$informe = "/reporte";
try {
//Creamos la conexión JDBC
$Conn = new Java("org.altic.jasperReports.JdbcConnection");
//Seteamos el driver mysql
$Conn->setDriver("org.postgresql.Driver");
//Especificamos los datos de la conexión
$Conn->setConnectString("jdbc:postgresql://localhost:5432/
optimaerp_db");
$Conn->setUser("postgres");
$Conn->setPassword("");
// Creamos una variable tipo arreglo que contendrá los parámetros
$parametrosMap = new Java("java.util.HashMap");
$parametrosMap->put("usuario", new Java('java.lang.String','YovanySuarez'));
//Creamos el objeto JasperReport que permite obtener el reporte
$sJfm = new Java("net.sf.jasperreports.engine.JasperFillManager");
//Guardamos el reporte en una variable $print para luego exportarla
$print = $sJfm->fillReportToFile($dir . $informe . ".jasper",
$parametrosMap, $Conn->getConnection());
//pdf en el directorio donde están los reportes
$sJem = new Java("net.sf.jasperreports.engine.JasperExportManager");
$sJem->exportReportToPdfFile($print, $dir . $informe . ".pdf");
//abre el archivo generado desde el explorador
if (file_exists($dir . $informe . ".pdf")) {
header("Content-disposition: attachment;filename=" . $informe . ".pdf");
header("Content-Type: application/pdf");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . @filesize($dir . $informe . ".pdf"));
header("Pragma: no-cache");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Expires: 0");
set_time_limit(0);
@readfile($dir . $informe . ".pdf") or die("error.");
}
} catch (JavaException $ex) {
echo "error ";
$trace = new Java("java.io.ByteArrayOutputStream");
$ex->printStackTrace(new Java("java.io.PrintStream", $trace));
print "java stack trace: $trace\n";
}