0

我在Ubuntu上运行使用glassfish服务器的webservice。问题是 - 它需要访问共享资源之外的目录。目前它给出了一个错误,说“权限被拒绝”。我也将权限设置为server.policy。Java - glassfish - web服务 - 本地文件访问

grant codeBase "/home/glassfish/glassfish/test/-" { 
    permission java.security.AllPermission; 
}; 

但它似乎不工作。 我试过<property name="alternatedocroot_1" value="from=*.* dir=/home/glassfish/glassfish/test"/>,但它似乎只给予阅读权限。我还需要写入权限。所以我的问题是如何设置写入权限?

谢谢。

+2

你是否检查过glassfish用户对目录有写权限? – beerbajay 2012-04-16 07:09:43

+0

是glassfish用户有读/写/执行所有权限。 – Barun 2012-04-16 07:20:54

+0

你如何访问这些文件? Java File API或加载为资源? – NBW 2012-04-16 19:07:21

回答

0

这不是一个JavaSecurity问题,所以你不应该在这方面调整任何东西。

FWIW我们在各种风格的Windows上部署到GF的web应用都使用File API写入“Application”目录之外的目录。 alternatedocroot属于GF,它使用DefaultServlet提供静态内容,而不是在Application部署目录之外编写。

在Windows上运行服务时,必须小心“运行方式”用户具有写入目标目录的适当权限,在Unix上,您需要确保用户通过rc(init.d )运行asadmin.sh的脚本有权读取/写入目标目录。

我会仔细检查java进程GF正在运行的用户是否在您尝试写入的目录上具有rwx权限。确保用户可以写入目标文件夹。为了测试这个,你可以向用户索取并使用'touch'命令,如下所示:touch/tmp/test以这种方式验证写入权限。通过运行'ls -l/tmp/test'以确保您可以读取它,同样验证读取权限。

看看'ps -ef | grep java'显示来验证运行GF java进程的用户。另外在你的代码中,请尝试指定测试文件的完整路径,例如。 File test = new File(“/ tmp/test”);

您是从rc脚本运行GF还是从shell提示符使用asadmin.sh启动它?如果您正在运行rc脚本,请检查您的rc脚本是否真正以您希望的用户身份运行。