首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AccessControlException in doPriveledge

AccessControlException in doPriveledge
EN

Stack Overflow用户
提问于 2015-03-18 13:17:13
回答 2查看 138关注 0票数 0

我们试图使用以下代码从目录中获取文件数:

代码语言:javascript
复制
   File dataDir = new File(dataHome);
            final File privdataDir = dataDir;
            System.out.println("The datadir is : \n"+dataDir+"The privdataDir is : \n"+privdataDir);
            int count = 0;
            final int[] privcount = {0};


            if (privdataDir != null) {
                System.out.println("Going into doPriveledge block");
            AccessController.doPrivileged(new PrivilegedAction() {
                public Object run()
                {

                    privcount[0] = privdataDir.list().length;
                    return null;

                }
            });
            }

            count = privcount[0];
            System.out.println("The count is : "+count);

dataDir变量引用path : C:\MyApp\config,它在代码中的下面一行抛出AccessControlException:

代码语言:javascript
复制
privcount[0] = privdataDir.list().length;

例外是:

代码语言:javascript
复制
[ERROR][SmartlinkThread] 2015-03-18 07:22:59.0862 GMT: SmartlinkThread: Error processing agg interval: java.security.AccessControlException: Access denied (java.io.FilePermission C:\MyApp\config read) <AggIntervalTaskThread>
[ERROR][SmartlinkThread] 2015-03-18 07:22:59.0862 GMT: java.security.AccessControlException: Access denied (java.io.FilePermission C:\MyApp\config read) <AggIntervalTaskThread>
[ERROR][SmartlinkThread] 2015-03-18 07:22:59.0863 GMT:  at java.security.AccessController.checkPermission(AccessController.java:132) <AggIntervalTaskThread>
[ERROR][SmartlinkThread] 2015-03-18 07:22:59.0863 GMT:  at java.lang.SecurityManager.checkPermission(SecurityManager.java:544) <AggIntervalTaskThread>
[ERROR][SmartlinkThread] 2015-03-18 07:22:59.0863 GMT:  at java.lang.SecurityManager.checkRead(SecurityManager.java:883) <AggIntervalTaskThread>
[ERROR][SmartlinkThread] 2015-03-18 07:22:59.0863 GMT:  at java.io.File.list(File.java:982) <AggIntervalTaskThread>

以下内容已经添加到java.policy文件和server.policy文件中

代码语言:javascript
复制
grant codeBase "file:C:/MyApp/-" {
permission java.security.AllPermission;
};            

此代码正在为8.0.x运行。在同一应用程序的另一部分中,它在读取文件时会产生相同的错误。我们无法理解为什么代码会产生这个错误,即使所有的权限都已经被授予了。任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-23 05:03:31

贴出对我有用的东西。

我们的完整应用程序不部署在Websphere上。它的代码只有一部分与Websphere集成,并收集一些相关数据。我们相信部署在Websphere上的其他web应用程序可能已经启用了Java 2安全性。将以下语句添加到server.policy和java.policy文件中:

代码语言:javascript
复制
grant{
permission java.security.AllPermission;
};

请注意,此权限授予所有在Websphere中执行任何操作的权限。

票数 0
EN

Stack Overflow用户

发布于 2015-03-19 09:25:20

我假设您在WebSphere上部署了web应用程序,并且启用了Java2Security。

您应该在EAR/META-INF/was.policy文件中创建以下内容(您的codeBase不正确):

代码语言:javascript
复制
grant codeBase "file:${application}" {
  permission java.security.AllPermission;
};

如果您这样做正确,这个文件应该显示在安装期间通过网络控制台。

有关为WebSphere应用程序创建策略文件的详细信息,请参阅为Java 2安全配置was.policy文件

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29123145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档