2010-12-10 28 views
6

Tengo una aplicación java que tomará la imagen como una entrada y dará salida a otra imagen. Tengo un sitio web con un host popular (PHP + MYSQL Hosting). Quiero crear una página en el sitio web con PHP con un formulario donde un usuario pueda cargar una imagen que luego pasará la imagen a la aplicación Java.Hacer que PHP se ejecute y se comunique con una aplicación Java en un servidor web

Lo que estoy planeando hacer es cuando el usuario carga la imagen, se almacena en una carpeta en el servidor web. Luego llamaré a la aplicación java en el servidor que pasa la url de la imagen como argumento y luego la aplicación java mostrará otra imagen, digamos, en una carpeta de resultados. La página PHP después de la ejecución mostrará la imagen resultante en el navegador.

Ahora mis preguntas son: ¿Es posible ejecutar aplicaciones Java en populares webhosts (por ejemplo, el mío es WebHostingBuzz.com)?

La aplicación Java es bastante pesada ya que procesa una gran cantidad de imágenes. ¿Debo descargar la aplicación java a otro servidor web? En caso afirmativo, ¿hay algún servicio que ejecute mi aplicación java?

(Opcional) Es una demostración de mi aplicación java y no quiero almacenar las imágenes que cargan las personas. ¿Hay alguna manera de pasar directamente la imagen cargada a la aplicación java y generar la imagen generada directamente en lugar de almacenarla en el servidor web? Preferiría esto porque, si la imagen es grande, puedo hacer que PHP detenga la ejecución después de un tiempo de espera.

¿Cómo me comunico con la aplicación Java desde PHP para obtener información sobre su ejecución, por ejemplo, cuando PHP llama a la aplicación Java, la página tiene que esperar hasta que la aplicación termine de procesarse? Quiero que la aplicación Java envíe una respuesta a la página PHP diciendo que el proceso se ha completado y la página se redirige o se actualiza en consecuencia.

Espero que entienda la idea, sugiera las tecnologías que puedo usar para implementar esto y, si tiene una idea mejor, ¡publíquela! Gracias!

Respuesta

4

Ahora mis preguntas son: ¿es posible ejecutar aplicaciones Java en populares webhosts (por ejemplo, el mío es WebHostingBuzz.com)?

Es técnicamente posible. Pero el hosting debe instalar JRE en el host y otorgar al usuario de PHP suficientes permisos de nivel de sistema operativo y de sistema de archivos. Entonces, realmente dependes del hosting si ofrecen esta oportunidad. Lo mejor es ponerse en contacto con su equipo de soporte y preguntarlo.

Si es compatible, puede usar shell_exec().

$result = shell_exec("java -jar /path/to/imageprocessor.jar " + $imagepath); 
if ($result) { 
    // Shell execution succeed. 
} else { 
    // Shell execution failed. 
} 

Para la comunicación asíncrona/procesamiento en segundo plano, el cliente debe iniciar una solicitud ajaxical.

Si no es compatible, considere transferir Java a PHP. El GD image library tiene muchas funciones que pueden ser útiles.

0

¿No sería más fácil hacer de su aplicación java una aplicación web, que PHP podría llamar a través de una url en la que colocaría la url de la imagen para que java pueda descargarla?

como http://yourjavaserver/imageprocessing?imgurl=IMAGE_URL

y el servlet de Java podría responder con el archivo de imagen itlsef.

Puede buscar "alojamiento de Java" en google, para encontrar un host para esto, pero es más caro que el alojamiento de PHP. Tal vez la mejor opción sea obtener un servidor dedicado que pueda alojar tanto aplicaciones PHP como Java ...

0

Creo que su mejor apuesta aquí es con su aplicación Java ejecutándose como cron (o un deamon) que pueda cargar el archivo detalles de la base de datos. Esto requerirá una (una o más) actualización de página en la parte de los usuarios después de que se complete la generación, momento en el que el script puede recuperar la imagen de la base de datos/sistema de archivos.

No creo que pueda hacer esto en tiempo real debido a restricciones de tiempo de espera en la página web de PHP. Sin embargo, podría escribir un applet de Java que pueda tomar el archivo y procesarlo antes de enviarlo al servidor (o según cómo vaya a usarlo, ¿quizás no necesite subirlo después de la transformación?).

2

Google App Engine permite alojar aplicaciones web Java (y Python). El SDK y la cuenta básica son gratuitos. Con el SDK, puede desarrollar y probar la aplicación localmente y luego simplemente implementarla en App Engine (los complementos de NetBeans y Eclipse están disponibles).

Luego, la aplicación PHP podría enviar los datos en un HTTP POST a la aplicación Google App Engine y obtener el resultado en los datos de respuesta.

O los datos se almacenan primero en un blob de base de datos y un trabajo de procesamiento se coloca en una cola de tareas (una 'cola de mensajes'). Esto tiene la ventaja de que la solicitud del cliente PHP regresará inmediatamente después de que los datos hayan sido enviados. Luego, la aplicación PHP podría sondear los datos del resultado mientras Google App Engine procesa la imagen. El lado PHP sería más receptivo de esta manera.

+0

Gracias! No sabía sobre esto. Lo investigaré. – tHeSiD

Cuestiones relacionadas