Проблема:
В моем Java-приложении (не апплете) я хочу ограничить определенные файловые операции всеми классами, кроме списка/группы/пакета классов, которые не должны ограничиваться.
В частности, я хотел бы ограничить...
- Файл читает
- Файл пишет
- Создание файла
- Удаление файла
... так что они могут быть выполнены только в текущем рабочем каталоге для всех классов, кроме неограниченных.
Попытка SecurityManager:
я попытался реализовать подкласс класса SecurityManager, который реализует это поведение, однако кажется, что при выполнении проверок предоставленная информация file не дайте больше, чем просто имя файла (если я что-то упустил?).
Кроме того, я не совсем понимаю, как в этом случае я мог бы узнать класс, из которого выполняется вызов, чтобы я мог определить, разрешать ли операцию или генерировать исключение. Есть ли способ получить всю информацию, необходимую для работы этого подхода?
Попытка на основе политик
Мне также известно, что политики Java предназначены для ограничения действий классов, включая такие вещи, как операции с файлами. Однако я изо всех сил пытался найти хороший ресурс, чтобы узнать, как решить свои проблемы с помощью файла .policy.
Обобщение вопроса:
1) Существуют ли альтернативные подходы, которые могут быть предпочтительнее упомянутых мной?
2) Возможно ли это с помощью SecurityManager? Я упускаю из виду, как я должен на самом деле реализовать такой подход?
3) Возможно ли это с помощью файла политики? Есть ли какие-нибудь хорошие ресурсы, которые я пропустил на этом фронте?
На самом деле я не возражаю против большого количества тяжелой работы, которую мне нужно вложить для достижения этой цели — я просто не знаю, как правильно подойти к этому. Мне также очень не хватает хороших ресурсов, чтобы научить меня достаточному количеству двух возможных подходов, которые я упомянул, чтобы позволить мне реализовать их самостоятельно. Прежде всего, я не боюсь много читать там, где это необходимо!
Спасибо за любую помощь, которую вы можете оказать, заранее.