【问题标题】:Run Java class file from PHP script on a website从网站上的 PHP 脚本运行 Java 类文件
【发布时间】:2011-01-08 20:59:25
【问题描述】:

我有一个网站,并希望能够允许用户从该网站在服务器上运行 Java 文件。

我希望用户单击一个按钮,该按钮将在服务器上运行 Java 文件,并且由 Java 程序打印到标准输出的任何内容都将打印在网站上供用户查看。

如何做到这一点(从 PHP 调用 Java 程序并将 Java 文件中的标准实时反馈回 PHP 网站)?

更新:

感谢有关如何从 PHP 运行 Java 程序的答案。但是我也希望能够,因为 Java 程序正在打印到标准输出,它将在执行时打印出大量文本,以便能够在网页上打印出来,以便用户可以看到哪个阶段Java 程序正在执行中。

如何做到这一点,是否需要任何额外的 AJAX 或 JavaScript 或类似的东西?

【问题讨论】:

    标签: java php scripting stdout


    【解决方案1】:

    查看exec 和另一个program execution functions。但是非常小心地这样做,否则这是一个漏洞利用的秘诀。

    【讨论】:

      【解决方案2】:

      【讨论】:

        【解决方案3】:

        由于您提到实时,我建议设置 PHP 到 Java 桥。在每次请求时初始化 JVM 会占用大量资源。

        PHP/Java Bridge

        PHP/Java 桥是一个 流式传输的实现, 基于 XML 的网络协议,可以 用于连接原生脚本 引擎,例如 PHP、Scheme 或 Python,带有 Java 或 ECMA 335 虚拟机。最多50次 比通过 SOAP 的本地 RPC 更快, 需要更少的资源 网络服务器端。它更快而且 比直接更可靠 通过 Java Native 进行通信 接口,它不需要 调用 Java 的附加组件 来自 PHP 的程序或 PHP 程序 来自Java。

        【讨论】:

          【解决方案4】:

          PHP exec() 函数是要走的路,但你应该非常小心在你允许执行的..换句话说,不要依赖用户输入,因为它可能会危及您的整个服务器。

          使用 exec 调用 Java 应用程序启动器,您可以从 PHP 执行任何 Java 应用程序,例如

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

          【讨论】:

          • 嗨 james,执行 java 给我权限被拒绝错误。我的用户是 apache。
          • 我利用了你的好答案,现在我可以将 php 连接到 java,但是我的 Java 程序有 System.in 输入并且 exec 总是启动一个新的 java 程序,而不发送到同一个等待的 java 程序,我该如何改变呢?
          【解决方案5】:

          我宁愿将 Java 类包装在 Java 小程序中,然后可以从客户端的 javascript 调用中调用它:请参阅 http://www.rgagnon.com/javadetails/java-0170.html

          否则,如果调用向标准输出抛出大量文本,或者由于系统依赖性而必须在服务器上运行该类,则从 php exec 调用是可行的方法,但您可能需要类似 @ 987654322@在客户端实时显示文本。有各种 javascript 工具包的实现,例如 Dojo 或 jQuery。

          对于服务器端,phphere中似乎有cometd实现。

          我希望这会有所帮助...

          菲利普

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-08-19
            • 1970-01-01
            • 1970-01-01
            • 2019-01-28
            • 1970-01-01
            相关资源
            最近更新 更多