2010-01-24 68 views
42

Tengo un sitio web y quiero permitirle al usuario ejecutar un archivo Java en el servidor desde el sitio web.Ejecutar el archivo de clase Java desde el script PHP en un sitio web

Quiero que el usuario haga clic en un botón que ejecutará el archivo Java en el servidor Y todo lo que se imprima como estándar por el programa Java se imprimirá en el sitio web para que el usuario lo vea.

¿Cómo se puede hacer esto (llamar al programa Java desde PHP y enviar el estándar desde el archivo Java al sitio web PHP en tiempo real)?

Actualización:

Gracias por las respuestas sobre cómo ejecutar el programa Java desde PHP. Sin embargo, también quiero poder, ya que el programa Java está imprimiendo en stdout, donde imprimirá una gran cantidad de texto mientras se está ejecutando, para poder imprimirlo en la página web para que el usuario pueda ver en qué etapa se encuentra. El programa Java está en su ejecución.

¿Cómo se puede hacer esto y requiere algún AJAX o JavaScript adicional o algo por el estilo?

Respuesta

44

El exec() función de PHP es el camino a seguir, pero debe ser muy cuidado en lo que permites a ejecutar .. en otras palabras, no se basan en la entrada del usuario, ya que podría poner en peligro su servidor completo

Llamar al iniciador de aplicaciones Java mediante exec, puede ejecutar cualquier aplicación Java desde PHP, p. Ej.

<?php exec("java -jar file.jar arguments", $output); ?> 
+1

HI James, la ejecución de Java es darme el permiso denegado error. mi usuario es apache –

14

Dado que usted menciona en tiempo real que sugeriría la creación de un puente de PHP a Java. Inicializar la JVM en cada solicitud requiere una gran cantidad de recursos.

PHP/Java Bridge

El puente PHP/Java es un implementación de un streaming, protocolo de red basado en XML, que puede puede utilizar para conectar un nativo motor de scripts , por ejemplo PHP, Esquema o Python, con una máquina virtual Java o ECMA 335 . Es hasta 50 veces más rápido que el RPC local a través de SOAP, requiere menos recursos en el lado del servidor web . Es más rápido y más confiable que la comunicación directa a través de la interfaz Java Native , y no requiere componentes adicionales para invocar los procedimientos Java de los procedimientos PHP de Java.

4

yo preferiría envolver la clase Java en un applet de Java, que puede ser invocado desde una llamada javascript en el lado del cliente: ver http://www.rgagnon.com/javadetails/java-0170.html

De lo contrario, si la llamada lanza una gran cantidad de texto para la salida estándar o la clase tiene que ejecutarse en el servidor debido a las dependencias del sistema, llamando desde php exec es el camino a seguir, pero es probable que necesite algo como para mostrar el texto en el cliente en tiempo real. Hay implementaciones para varios kits de herramientas de javascript como Dojo o jQuery.

Por el lado del servidor, parece haber una implementación cometd en php here.

espero que esto ayude ...

Philippe

Cuestiones relacionadas