[英]RMI connection refused
我正在努力獲得rmi連接。 我遇到了很多安全問題,但一直無法找到解決這一問題的方法。 我執行我的jar文件:
java -Djava.security.policy=java.security.AllPermission -jar "myjarfile"
我用來創建它的代碼是:
public class server
{
public static void main(String args[])throws Exception
{
if (System.getSecurityManager() == null)
System.setSecurityManager ( new RMISecurityManager() {
public void checkConnect (String host, int port) {}
public void checkConnect (String host, int port, Object context) {}
});
try
{
sampleserverimpl server = new sampleserverimpl();
System.out.println("SERVER IS WAITING");
LocateRegistry.createRegistry(2020);
//Runtime.getRuntime().exec("rmiregistry 2020");
Naming.rebind("//localhost:2020/SERVER", server);
}
catch(Exception e)
{
System.out.println(e);
}
}
};
我收到的錯誤跟蹤是:
Exception in thread "RMI TCP Connection(idle)" java.security.AccessControlExcept
ion: access denied (java.net.SocketPermission 127.0.0.1:31199 accept,resolve)jav
a.rmi.UnmarshalException: Error unmarshaling return header; nested exception is:
java.io.EOFException
我嘗試了不同的方法來解決這個問題,有人能看到這個問題嗎?
謝謝
-Djava.security.policy
接受指向策略文件的URL,該策略文件又包含權限。 所以你應該: -Djava.security.policy=/some/path/my.policy
作為my.policy
文件包含的JVM參數:
grant {
permission java.security.AllPermission;
};
此外,為了避免代碼中出現NULL檢查和手動創建SecurityManager
,您可以通過傳遞JVM開關請求為您的應用程序自動安裝SecurityManager: -Djava.security.manager
。
您的最終JVM調用應如下所示:
java -Djava.security.manager -Djava.security.policy=/some/path/my.policy
這是兩個獨立的例外。 第一個是權限問題。 第二個,即EOFException,可能有多種原因。 我需要看看java -version和完整的堆棧跟蹤以進一步提供幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.