【问题标题】:Applet executing program on server小程序在服务器上执行程序
【发布时间】:2012-11-10 05:49:21
【问题描述】:

我有一个小程序,它必须 exec 同一服务器上的一个程序。

Runtime c = Runtime.getRuntime();
window.finishedQuery("Got Runtime...");
Process p = c.exec(String.format("cmd");
window.finishedQuery("Excecuted CMD");

第二行在浏览器中不起作用,但在 Netbeans 小程序查看器中起作用。

window 是我的小程序,它显示 got runtime 但不显示 excecuted CMD

在谷歌浏览器中,我看到以下消息:

access denied ("java.io.FilePermission" "<<ALL FILES>>" "execute")

我猜小程序“认为”我想访问用户的 PC/程序,但我想在服务器上启动一个程序。

我该怎么办?

【问题讨论】:

  • 您能否详细说明“不起作用”?你怎么知道?您希望看到什么,实际会发生什么?
  • 好吧,window 是我的小程序,它确实显示“得到运行时”但不显示“执行 CMD”,我不知道如何显示更多细节......我猜小程序“认为”我想要访问用户 PC/程序,但我想在服务器上启动一个程序:S
  • 好的,在谷歌浏览器中我看到以下消息“访问被拒绝(“java.io.FilePermission”“>”“execute”)”

标签: java security process applet runtime.exec


【解决方案1】:

如果由小程序创建,Process 将在客户端机器的 JVM 中创建。该 VM 将无法调用服务器上的方法。

解决此问题的最佳方法是让沙盒小程序调用它所在主机上的 Web 服务(servlet、JSP、PHP、ASP..)。让 Web 服务创建 Process1,并将输出提供给小程序以供使用/显示。

1。 此外,请阅读runtime.exec Wiki 链接的 Java World 文章并实施所有建议,但对于 1.5+,请使用ProcessBuilder 创建Process

【讨论】:

  • 为了让您正确:我必须编写第二个小程序来实现该过程。我从第一个小程序调用第二个小程序并从那里得到结果?我必须授予其中一个小程序的任何权利吗?没有更简单的方法吗?
  • 不,我不是说两个小程序,请参阅更新。你读过 Java World 的文章了吗?将更新后的代码显示为对问题的编辑。
  • 好的,谢谢你的帮助,我找到了一个用java创建服务的教程,我会试试这些......
【解决方案2】:

好的,我编写了一个服务来创建进程并通过 wsimport 创建了一个“客户端类”...在 netbeans 小程序管理器中一切正常,但是当我在浏览器中启动小程序时,小程序不请求该服务,即使我将我的小程序放在本地网络服务器(xampp)上并在同一个客户端上启动服务。我想如果两者都在同一个客户端上,我不必签署我的小程序? (注意确定我是否必须将此作为新问题或对我的问题的回答......)

【讨论】:

    猜你喜欢
    • 2013-11-15
    • 2017-11-17
    • 2017-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-22
    • 1970-01-01
    • 2018-03-24
    相关资源
    最近更新 更多