2013-05-06 18 views
0

我遇到了連接Active Directory的麻煩。 有問題的代碼是以下幾點:java.net.SocketPermission:「connect.resolve」

Hashtable<Stirng,String> env = new Hashtable<String,String>(); 
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory"); 
env.put(Context.PROVIDER_URL,"ldap://192.168.0.100:389"); 
env.put(Context.SECURITY_AUTHENTICATION,"simple"); 
env.put(Context.SECURITY_PRINCIPAL,"TEST\\Administrator"); 
env.put(Context.SECURITY_CREDENTIALS,"password"); 
LdapContext ctx = new InitialLdapContext(env, null); 

當我調試它,它給了我一個錯誤:

javax.naming.CommunicationException: 192.168.0.100:389 [Root Exception is java.security.AccessControlException: access denied ("java.net.SocketPermission" "192.168.0.100:389" "connect.resolve")] 

一個我試圖連接的IP是192.168.0.99(Windows 7)中 192.168.0.100安裝在Windows 2008中,當我嘗試從192.168.0.100本身連接時,我仔細檢查了連接沒有任何問題。 你能給我一個建議嗎? 如果需要,我很樂意提供更多信息

+0

你的代碼是作爲一個applet運行的嗎? – 2013-05-06 06:36:36

+0

從這裏開始http://docs.oracle.com/javase/6/docs/technotes/guides/security/permissions.html – rkosegi 2013-05-06 06:37:31

+0

哦對不起。它作爲一個Servlet運行 – 2013-05-06 06:37:54

回答

2

我發現哪裏出了問題。 我在政策文件中添加

grant 
{ 
    permission java.net.SocketPermission "*:1024-65535","connect,accept,resolve"; 
    permission java.net.SocketPermission "*:1-1023","connect,resolve"; 
}; 

(這是我的catalina.policy) 然後,我在Run配置的論據在Eclipse中添加了一個聲明爲:

-Djava.security.policy="c:\catalina.policy"

感謝

相關問題