我有一个网站,希望能够允许用户从网站上运行服务器上的Java文件.
我希望用户单击一个按钮,该按钮将在服务器上运行Java文件,并且Java程序打印到标准输出的任何内容都将打印在网站上供用户查看.
如何做到这一点(从PHP调用Java程序并将标准从Java文件实时提供回PHP网站)?
更新:
感谢有关如何从PHP运行Java程序的答案.但是我也希望能够,因为Java程序正在打印到stdout,它将在执行时打印出大量文本,以便能够在网页上打印出来,以便用户可以看到Java程序正在执行中.
如何做到这一点,是否需要任何额外的AJAX或JavaScript或类似的东西?
PHP exec()
函数是可行的方法,但您应该非常小心您允许执行的内容..换句话说,不要依赖用户输入,因为它可能会危及您的整个服务器.
使用exec调用Java应用程序启动器,您可以从PHP执行任何Java应用程序,例如
既然你提到实时我会建议设置PHP到Java Bridge.在每个请求初始化JVM会占用大量资源.
PHP/Java Bridge
PHP/Java Bridge是基于XML的流式网络协议的实现,可用于将本机脚本引擎(例如PHP,Scheme或Python)与Java或ECMA 335虚拟机连接.它通过SOAP比本地RPC快50倍,在Web服务器端需要的资源更少.它比通过Java Native Interface直接通信更快,更可靠,并且它不需要额外的组件来从PHP调用Java程序或从Java调用PHP程序.
我宁愿将Java类包装在Java applet中,然后可以从客户端的javascript调用中调用它:参见http://www.rgagnon.com/javadetails/java-0170.html
否则,如果调用将大量文本抛出到标准输出或由于系统依赖性而必须在服务器上运行类,则从php exec调用是可行的方法,但是您可能需要像cometd这样的东西来显示客户端上的文字实时.有各种javascript工具包的实现,如Dojo或jQuery.
对于服务器端,似乎是在PHP中的cometd实现在这里.
我希望这有帮助...
菲利普