我需要限制嵌入式Jetty中包含servlet的“插件”WAR文件的文件权限 . 为了测试文件权限,我创建了一个包含此servlet的WAR,它试图写入webapps文件夹之外的文件:

public class Test extends HttpServlet
{
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        try
        {
            FileWriter outFile = new FileWriter("C:\\temp\\test.txt");
            PrintWriter out = new PrintWriter(outFile);
            out.println("This is line 1");
            out.println("This is line 2");
            out.close();
            response.getWriter().print("File created");
        }
        catch(Exception e)
        {
            response.getWriter().print(e.getMessage());
            e.printStackTrace();
        }

    }
}

然后将包含此servlet的WAR添加到具有已配置文件权限的嵌入式Jetty处理程序中,如下所示:

jetty = new Server(serverPort);
handlers = new HandlerList();

...
(adding standard Web Apps here)
...

WebAppContext plugin = new WebAppContext();

//Create file permissions policy
PermissionCollection pcol = new Permissions();
FilePermission fp = new FilePermission(path_to_war, "read");
pcol.add(fp);
plugin.setPermissions(pcol);

plugin.setContextPath("/plugins/plugin_name");
plugin.setWar(path_to_war);
plugin.setCopyWebDir(false);
plugin.setCopyWebInf(false);
plugin.setExtractWAR(false);

handlers.addHandler(plugin);
jetty.setHandler(handlers);
jetty.start();

然而,servlet仍然能够创建和写入测试输出文件 - 我不确定为什么......我已经搜索了为单个Web应用程序实现特定权限的示例代码,但是在这个主题上找不到很少的信息 . 我最好的猜测是WebAppContext从嵌入应用程序“继承”文件权限策略 .

谁能指出我正确的方向?谢谢!