2011-10-19 66 views
0

我有一个Java应用程序(实际上它是grails)我需要执行一个外部程序。最好我希望我的应用程序是独立的,即将外部脚本/程序作为战争文件的一部分。这个外部脚本/程序也需要生成一些文件。最佳实践在Java Web应用程序中执行外部程序

我想,我的问题是,如果有某种最佳实践如何做这些样的东西,使最终产品是不是太酥取决于应用程序的权限,什么不可以?

回答

0

您需要确保的一件事情是,一次只有一个线程执行程序的一个实例。所以你需要一些锁定和同步。

想象这样一个场景,多个用户/请求/线程试图用不同的输入执行相同的程序,那将是一场灾难。因此您需要在执行程序时等待程序锁定程序,或者您需要在每次运行程序时创建新实例。你应该对此非常小心。

此外,你想清理程序运行后,如果它产生任何输出。

你必须要小心,如果用户可以通过恶意命令到您的系统,并试图劫持其他应用程序。

总之,你要注意安全性和正确性

0

安全(我提到的第一个方案。) - 确保您的应用程序不允许arbitary的执行(用户自备)在主机系统上的代码。考虑SQL注入风格的攻击。如果需要传递数据,我建议先将它插入数据库,然后将主键传递给外部进程,这将有助于避免缓冲区溢出类型的情况。

健壮性 - 这个程序是否会失败,或者花时间,或者有其他未知的副作用。通过从不同的线程执行,甚至是不同的进程,将您的主要Web应用程序从此程序中分离出来。

记录 - 如果你需要从这个外部应用程序收集日志,您可能希望在会话ID(或同等学历)传递,所以你可以跟踪回Web会话任何错误。

0

您可以设计一个小型管理系统来跟踪服务请求。这将是一个非常有用的组件,因为大多数项目都有这样的目的。

该应用程序应该从服务执行,对该服务本身的请求应该是异步的。此外,您还可以获得反馈并跟踪该服务状态。

相关问题