java AccessController.doPrivileged使用
AccessController.doPrivileged意思是這個是特別的,不用做許可權檢查.
在什麼地方會用到呢:加入1.jar中有類可以讀取一個檔案,現在我們要使用1.jar去做這個事情.但是我們的類本生是沒有許可權去讀取那個檔案的,一般情況下就是眼睜睜的看著了.
但是jiava提供了doPrivileged.在1.jar中如果讀取檔案的方法是通過doPrivileged來實現的.就不會有後面的檢查了,現在我們就可以使用1.jar去讀取那個檔案了.
例子:
package huangyunbin.client;
import java.io.FilePermission;
import java.security.AccessController;
import java.security.Permission;
import java.security.PrivilegedAction;
public class Client
{
public void doCheck() {
AccessController.doPrivileged( new PrivilegedAction() {
public Object run() {
check();
return null ;
}
} );
}
private void check() {
Permission perm = new FilePermission( "/1.txt" , "read" );
AccessController.checkPermission(perm);
System.out.println( " TestService has permission " );
}
}
把這個類打包成client.jar 放到/home/h/client/下
我們建立個my.policy檔案,檔案內容是:
grant codeBase "file:/home/h/client/*" {
permission java.io.FilePermission "/1.txt","read";
};
配置檔案的意思是 /home/h/client/下面的jar包或class類 可以讀取/1.txt.
現在我們再建立一個專案:建立一個類來呼叫前面的Client
public class server
{
public static void main(String[] args)
{
Client c =new Client();
c.doCheck();
}
}
執行這個server類.注意這裡要用上之前的my.policy檔案
在vm引數中寫上這樣的:
-Djava.security.manager
-Djava.security.policy=/home/h/my.policy
執行,結果是
TestService has permission
在配置檔案my.policy中我們沒有允許server去讀取/1.txt,但是現在卻可以正常訪問.這個就是 AccessController.doPrivileged的作用.
相關文章
- 【JAVA】java使用Java
- JAVA使用accessJava
- JAVA使用SizeOfJava
- java使用iteratorJava
- [JAVA] Java switch的使用細節Java
- ImageMagick使用for java(im4java)Java
- ElasticSearch Java API使用ElasticsearchJavaAPI
- Java NIO Channel 使用Java
- EasyExcel Java API 使用ExcelJavaAPI
- java中使用protobufJava
- 介面的使用(Java)Java
- Java Stream流使用Java
- 使用java 爬蟲Java爬蟲
- Java列舉使用Java
- 【Java】函式使用Java函式
- 【Java】陣列使用Java陣列
- 【java】Stream的使用Java
- ZooKeeper 使用 Java APIJavaAPI
- 如何在Java中使用Deque? - Java67Java
- java使用JUnit出現java.lang.NullPointerExceptionJavaNullException
- 使用 Java 持久化 APIJava持久化API
- java命令--jmap命令使用Java
- Java中BasicNameValuePair的使用JavaAI
- java使用poi生成excelJavaExcel
- Java 中 RMI 的使用Java
- 使用Java操作Excel表格JavaExcel
- Java Optional使用指南Java
- java軟體的使用Java
- Java DES 使用方法Java
- java 反射簡單使用Java反射
- 使用Java新功能StackWalkerJava
- java api使用ElastichSearch指南JavaAPIAST
- Java註解的使用Java
- 【java】【列舉使用技巧】Java
- 使用 Java API 操作 elasticsearchJavaAPIElasticsearch
- Java使用類-StringJava
- Java陣列的使用Java陣列
- Java基礎·【File使用】Java