Ejecutar Java en PHP

2,797 views
Skip to first unread message

Facundo Ruiz

unread,
Sep 2, 2011, 10:00:29 AM9/2/11
to Grupo PHP Argentina
Hola Estimados acudo a ud para ver si alguien tiene experiencia en
este tema :

"Quiero ejecutar codigo java en un script en php"

tras este deseo o capricho me tope con algunas piedras en el camino.

La primera fue que todo lo encontrado en Sr google es sobre
versiones php 5.1 sobre el tema de
php-java-bridge ( http://php-java-bridge.sourceforge.net/pjb/index.php
)
un buen resumen de esto osea a instalacion lo pueden encontrar aqui
http://tutorsbd.com/ibooks/PHP%20JAVA%20WEB%20ODBC%20Issues.pdf

Luego, de lo poco que entendi es que me combiene instalar Apache
Tomcat y a este instalar cargarle el modulo de php( algo que me
gustaria evitar y lo estoy logrando).

Y por ultimo como hago para que funcione php-cgi desde la linea de
comando....?

Que tengo instalado(entorno de desarrollo):
winXP SP3
Apache/2.2.3(win32)
PHP/5.3.6
mod_fastcgi/2.4.6
y tres Motores de bases de datos jajaja

Facundo Ruiz

unread,
Sep 2, 2011, 10:45:24 AM9/2/11
to Grupo PHP Argentina

walter

unread,
Sep 2, 2011, 11:14:30 AM9/2/11
to Grupo PHP Argentina
Hola,
Casualmente estos días estuve con este tema, aunque en entorno Linux.
Despues de muchas pruebas, logré hacer funcionar el puente en modo
stand-alone, o sea ejecutando JavaBridge.jar desde una terminal.
Pero... no funciona con la última versión de php-java-bridge que esta
disponible en sourceforge, sino la versión anterior (5.5.4.1).

Este es mi stack:
* Ubuntu 11.04
* PHP 5.3.5
* java version "1.6.0_22" - OpenJDK 64-Bit Server VM (build 20.0-b11,
mixed mode)

En una terminal ejecuto esto (lo pueden poner en un bash script):
java -Djava.awt.headless="true" -Dphp.java.bridge.daemon="true" -
Djava.ext.dirs=[aca el path para java] -jar JavaBridge.jar HTTP_LOCAL:
9267 5 JavaBridge.log

El 5 casi al final del mandato, es el nivel de log que queremos.

En PHP hago lo siguiente:
define ("JAVA_HOSTS", 9267);
define ("JAVA_SERVLET", false);
require_once("java/Java.inc"); // descargar de sf.net

Y apartir de alli ya se puede utilizar las clases de php-java-bridge
dentro de php.

Saludos!

- Walter


On 2 sep, 11:00, Facundo Ruiz <facundor...@gmail.com> wrote:
> Hola Estimados acudo a ud para ver si alguien tiene experiencia en
> este tema :
>
> "Quiero ejecutar codigo java en un script en php"
>
> tras este deseo o capricho me tope con algunas piedras en el camino.
>
> La primera fue que  todo lo encontrado en Sr google es sobre
> versiones  php 5.1 sobre el tema de
> php-java-bridge (http://php-java-bridge.sourceforge.net/pjb/index.php
> )
> un buen resumen de esto osea a instalacion lo pueden encontrar aquihttp://tutorsbd.com/ibooks/PHP%20JAVA%20WEB%20ODBC%20Issues.pdf

xava *

unread,
Sep 2, 2011, 11:33:08 AM9/2/11
to php...@googlegroups.com
y esto, http://ar2.php.net/java
es algo totalmente distinto de lo que buscan?

2011/9/2 walter <wna...@gmail.com>:

> --
> Has recibido este mensaje porque estás suscrito al grupo "Grupo PHP Argentina" de Grupos de Google.
> Para publicar una entrada en este grupo, envía un correo electrónico a php...@googlegroups.com.
> Para anular tu suscripción a este grupo, envía un correo electrónico a php-arg+u...@googlegroups.com
> Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/php-arg?hl=es.
>
>

Facundo Ruiz

unread,
Sep 2, 2011, 4:09:02 PM9/2/11
to Grupo PHP Argentina
Gracias por el tips, en http://es.debugmodeon.com/debate/php-java-bridge-como
me termino de caer la ficha, y una solucion sin instalar el tomcat es
esa:
Ejecutar el JavaBridge.jar(el php-java-bridge_6.2.1_documentation.zip
tiene un JavaBridge.war, sacar los 3 jars del directorio lib
JavaBridge.jar, php-script.jar y php-servlet.jar) el cual te dice en
que puerto se ejecutara y ahi haces la conexion, tambien agrege la
siguiente configuracion en php.ini


[java]
java.home ="C:\Archivos de programa\Java\jdk1.6.0_05\bin"
java.java ="C:\Archivos de programa\Java\jdk1.6.0_05\bin\javaw.exe"
java.library ="C:\Archivos de programa\Java\jdk1.6.0_05\jre\bin\server
\jvm.dll"

;java.log_level = 3

java.library.path = "C:\servidor\php-5.3.6-Win32-VC9-x86\ext\"
java.class.path = "C:\servidor\php-5.3.6-Win32-VC9-x86\ext
\JavaBridge.jar;C:\servidor\php-5.3.6-Win32-VC9-x86\ext\php-
script.jar"

luego pude hacer funcionar este ejemplo

<?PHP // se obtiene la instancia de la clase de Java java.lang.System
desde PHP

define ("JAVA_HOSTS", "127.0.0.1:8080");


require_once("java/Java.inc");

try{
$system = new Java('java.lang.System');

// ejemplo de acceso a las propiedades de Java
echo "Version de Java=". $system->getProperty('java.version')."
<br>";
echo "Desarrollador de la JVM=" .$system-
>getProperty('java.vendor')." <br>";
echo "Sistema Operativo=".$system->getProperty('os.name')."".
$system->getProperty('os.version')." on ".
$system->getProperty('os.arch')." <br>";

// ejemplo de java.util.Date
$formatter = new Java('java.text.SimpleDateFormat',
"EEEE, MMMM dd, yyyy 'at' h:mm:ss a zzzz");

print $formatter->format(new Java('java.util.Date'));
} catch (Exception $e){
echo $e->getMessage();
}


$frame = new Java('java.awt.Frame', 'PHP');
$button = new Java('java.awt.Button', '¡Hola Mundo Java!');


$frame->add('North', $button);

$frame->validate();
$frame->pack();
$frame->visible = True;

$thread = new Java('java.lang.Thread');
$thread->sleep(10000);

$frame->dispose();



?>
Cuando Haces el test instal de javabridge te genera una carpeta java,
esa carpeta la puse al mismo nivel de este script...

Ahora mi codigo funciona con javabridge pero cuando suba a produccion
sera otro problema,
Gracias por la pronta respuesta


walter

unread,
Sep 2, 2011, 4:28:02 PM9/2/11
to Grupo PHP Argentina
Interesante Facundo, tu ejemplo muestra como tener la lógica de una
aplicación en php y la UI en java :-) .
Creo que las líneas en php.ini que indicas son para el modulo java de
php 4, con php-java-bridge esas líneas no tienen importancia.

Reply all
Reply to author
Forward
0 new messages