Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Run Java class file from PHP script on a website

I have a website and want to be able to allow the user to run a Java file on the server from the website.

I want the user to click a button which will run the Java file on the server AND anything printed to standard-out by the Java program will be printed out on the website for the user to see.

How can this be done (call Java program from PHP and feed the standard out from the Java file back to the PHP website in real time)?

Update:

Thanks for the answers on how to run the Java program from PHP. However I also want to be able, as the Java program is printing to stdout where it will be printing out a lot of text as it is executing, to be able to print this out on the webpage so that the user can see what stage the Java program is in its execution.

How can this be done and does it require any additional AJAX or JavaScript or anything like that?

like image 380
tree-hacker Avatar asked Jan 24 '10 20:01

tree-hacker


People also ask

How do I run a Java file on my website?

You can run a Java Web Start application from a browser by clicking a link to the application's JNLP file. The following text is an example of a link to a JNLP file. Java Web Start software loads and runs the application based on instructions in the JNLP file.


2 Answers

The PHP exec() function is the way to go, but you should be very careful in what you allow to executed.. in other words don't rely on user input as it could potentially compromise your entire server.

Calling the Java application launcher using exec, you can execute any Java application from PHP, e.g.

<?php exec("java -jar file.jar arguments", $output); ?> 
like image 124
James Goodwin Avatar answered Oct 05 '22 17:10

James Goodwin


Since you mention real time I would suggest setting up a PHP to Java Bridge. Initializing the JVM at each request takes up a lot of resources.

PHP/Java Bridge

The PHP/Java Bridge is an implementation of a streaming, XML-based network protocol, which can be used to connect a native script engine, for example PHP, Scheme or Python, with a Java or ECMA 335 virtual machine. It is up to 50 times faster than local RPC via SOAP, requires less resources on the web-server side. It is faster and more reliable than direct communication via the Java Native Interface, and it requires no additional components to invoke Java procedures from PHP or PHP procedures from Java.

like image 44
Peter Lindqvist Avatar answered Oct 05 '22 18:10

Peter Lindqvist