shell_exec o exec en PHP

NeB1

Buenas a todos!

Vereis, tengo que instalar en un pseudo-pc, un wamp, con una web, y meterles también una aplicación java. La aplicación, ya la tenía prácticamente hecha de otro proyecto, así que no me apetece desarrollarla en otro lenguaje o algo. La cuestión es que no es un applet, y no la puedo ejecutar desde una web, y ellos quieren una web, y que cuando apretan una cosa, se ejecute esa aplicación, y no tengo la más remota idea de como hacerlo, había pensado hacer esto:

shell_exec('java -jar C:\wamp\www\mBlue\mBlueFinalTacticl.jar');

ó

exec('java -jar C:\wamp\www\mBlue\mBlueFinalTacticl.jar');

Pero no hace ná de ná, no sé las limitaciones de estas funciones, igual el comando java esta fuera de sus posibilidades, o a lo mejor lo estoy haciendo mal. Como lo haríais vosotros, no vale ninguna opción en la que aparezca una ventanita de confirmación, tiene que ser automático.

(Estoy algo verde en aplicaciones java y en applets i cosas de esas)

Pd: he hecho exec('dir C:\wamp\www\mBlue\'); y si que funciona.

Gracias a todos

Nucklear

Si explicas un poco como es la aplicación tendria una vision mejor.

Asi voy un poco a ciegas pero por lo que entiendo quieres hacer correr una aplicación java desde una web.

¿Llamar al jar desde una web PHP?

Vale, buscando algo para que te guies encontré esto. A ver si te sirve: http://php-java-bridge.sourceforge.net/doc/installation.php

Te recomiendo el tomcat para hacer el deploy que es sencillo de usar.

NeB1

#2 nah, la aplicación es pa escanear en busca de dispositivos bluetooth, y enviarle un fichero. el tema es hacer un maldito "java -jar" y que se ejecute la aplicación XD. Voy a ver eso que me has enviado, aunque parece un poco follón, no sé, no es para ejecutar applets desde tu web?

He estado leyendo, y parece que sí que es eso lo que necesito. La duda es, se ejecutará la aplicación, o tendré que ejecutar las funciones java desde PHP, para luego mostrar los resultados a través del PHP?

Nucklear

#3 Estoy un poco liado con lo que quieres, ¿pero por que no modificas el código java para que guarde la información en un xml y luego lo lees desde php para sacarlo por pantalla?

NeB1

El cliente, desde la web, tiene que elegir su modelo de móvil, ok? entonces, con esos datos elijo la aplicación que se ajusta a su movil (según resolución y compatibilidades), todo esto con PHP. Pero entonces tengo que conectar con una aplicación hecha en java, escanear los móviles de alrededor, y que el cliente elija su propio móvil.

Todo esto vá montado en un ordenador táctil, pero quieren que se vea su web y que desde la web, apretando un único botón se ejecute la aplicación java, o lo que sea que yo haga, pero que apretando un botón escanee y saque los dispositivos bluetooth más cercanos (y que entonces el elija el suyo, y la aplicación le envie mediante bluetooth el archivo).

NeB1

#4 Ya lo he conseguido, muchísimas gracias!! ^^

Nucklear

#6 Como lo hiciste al final, solo por curiosidad.

NeB1

Hay varias formas de hacerlo, la que he elegido, porque es la más sencilla, es, bajarte el archivo de la web, que incluye entre otros ficheros, un JavaBridge.jar, que incluye dentro todo lo necesario. Creas tu aplicación de escritorio con netbeans, como toda la vida, la mar de sencillo, e incluyes al principio esto:

public static final String JAVABRIDGE_PORT="8087";
static final php.java.bridge.JavaBridgeRunner runner =
    php.java.bridge.JavaBridgeRunner.getInstance(JAVABRIDGE_PORT);

Dejas la aplicación corriendo de background (sin mostrar el entorno gráfico, pero que el programa esté encendido, ya que si te fijas en esas lineas, montan un pequeño servidor en local)

Despues desde PHP haces algo así como:

<?php
require_once("http://localhost:8087/JavaBridge/java/Java.inc");

$world = new java("mbluefinal.MBlueFinalApp");
echo $world->hello(array("from PHP"));

?>

En este caso mbluefinal.MBlueFinalApp es mi aplicación java (package.claseprincipal), y haciendo eso, ejecuta el método 'hello', que me saca un JOptionPanel con el texto que le envío, brutal, levantas el GUI desde PHP, aunque solo funciona en local esto último, pero es lo que quería.

Si no se levanta ningún entorno gráfico, puedes hacerlo desde remoto, esto, funciona desde cualquier ordenador que se conecte al servidor web:

require_once("http://localhost:8087/JavaBridge/java/Java.inc");
$System = java("java.lang.System");  
print_r( $System->getProperties()); 

Mola mogollón!

LOc0

Vaya invento más chulo el PHP/JAVA bridge este ;)

Salu2 ;)

Usuarios habituales

  • LOc0
  • NeB1
  • Nucklear