线程安全策略

时间:2009-12-12 04:05:25

标签: java security multithreading

假设我正在编写一些执行客户端代码(Java)的环境。客户端向jar发送清单信息。 Environment从jar创建一些类实例(假设Runnable的实例)并在某个线程中运行它。但我需要保证客户端代码不会启动自己的线程或创建自己的ExecutorService等等。

安全经理是否有可能进行此级别的限制?如果是这样,我怎么能实现这个目标呢?

2 个答案:

答案 0 :(得分:2)

我能想到的最好方法是使用AspectJ进行一些运行时编织,如果有任何其他线程/ runnables被创建,则抛出错误或以某种方式告知用户他们有问题。

然后,您可以实现各种安全协议,例如,您不仅可以阻止线程,还可以阻止任何系统调用,就像您可能禁止动态查询并只允许预准备语句一样。

否则,您可能需要使用反射器API执行此类实现。

答案 1 :(得分:0)

我认为你需要扩展SecurityManager并使用你自己的实现。

此论坛: http://forums.sun.com/thread.jspa?threadID=761922讨论如何覆盖SecurityManager.checkAccess(ThreadGroup)以防止创建线程,但它听起来并不像特定的“创建线程y / n “许可。