Мы пытаемся, чтобы получить число файлов из каталога, используя следующий код:AccessControlException в doPriveledge
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 относится к пути: C: \ MyApp \ Config Он бросает AccessControlException на следующую строку в коде:
privcount[0] = privdataDir.list().length;
исключение составляет:
[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
grant codeBase "file:C:/MyApp/-" {
permission java.security.AllPermission;
};
Этот код уже выполняется для IBM Websphere 8.0.x. В другой части того же приложения, он дает ту же ошибку при чтении файла. Мы не можем понять, почему код дает эту ошибку, даже если все разрешения уже предоставлены ему. Любая помощь будет оценена по достоинству.
Вот почему я предложил добавить его в нужное приложение через файл was.policy, а не открыть его для всего сервера .. – Gas