2012-01-07 2 views
1

моя программа отлично работает на локальном рабочем столе, но когда я развернул ее в домене и запустил ту же программу, то он отображает следующее исключение.java.security.AccessControlException: доступ запретил исключение на tomcat

java.security.AccessControlException: access denied (java.net.SocketPermission www.abc.com:80 connect,resolve) 

at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323) 

at java.security.AccessController.checkPermission(AccessController.java:546) 

at java.lang.SecurityManager.checkPermission(SecurityManager.java:532) 

at java.lang.SecurityManager.checkConnect(SecurityManager.java:1034) 

at sun.net.www.http.HttpClient.openServer(HttpClient.java:527) 

at sun.net.www.http.HttpClient.(HttpClient.java:233) 

at sun.net.www.http.HttpClient.New(HttpClient.java:306) 

at sun.net.www.http.HttpClient.New(HttpClient.java:323) 

at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:852) 

at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:793) 

at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:718) 

at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:896) 

at pnr.PnrServlet.processRequest(PnrServlet.java:46) 

at pnr.PnrServlet.doGet(PnrServlet.java:81) 

at javax.servlet.http.HttpServlet.service(HttpServlet.java:690) 

at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 

at java.lang.reflect.Method.invoke(Method.java:597) 

at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:244) 

at java.security.AccessController.doPrivileged(Native Method) 

at javax.security.auth.Subject.doAsPrivileged(Subject.java:517) 

at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:276) 

at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162) 

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:283) 

at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:56) 

at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:189) 

at java.security.AccessController.doPrivileged(Native Method) 

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:185) 

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) 

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263) 

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) 

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584) 

at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) 

at java.lang.Thread.run(Thread.java:619) 

Моя программа должна соединиться с другой веб-сайт с помощью java.net пакет и показать соответствующие данные я бегу этот код на Apache Tomcat пожалуйста, помогите мне.

+0

Является ли это abc.com:80 правильной машиной? Это существует? – kosa

+0

Я заменил другое имя сайта с помощью abc.com только в журнале – user1047873

+0

Исключение довольно ясное - 'access denied (java.net.SocketPermission www.abc.com:80 connect, resolve)'. Вы пытаетесь открыть сокет 80 на компьютере, на котором у вас нет привилегий. Вы говорите, что развертываете это приложение в Tomcat? Это уже работает, когда вы это сделали? Или вы пытаетесь открыть сокет в своей программе напрямую? – Perception

ответ

1

Tomcat на вашей локальной машине, вероятно, работает без включенной защиты. На самом деле это не тот случай, и менеджер безопасности активен. Можно предоставить необходимые SocketPermission привилегии для приложения, например, путем ввода следующих в файл политики безопасности Tomcat:

grant codeBase "file:${catalina.base}/webapps/your_app_root/-" { 
    permission java.net.SocketPermission "www.abc.com:80", "connect"; 
}; 

Это должно идти в файл политики, который обычно под conf/catalina.policy но ваша установка может отличаться , Вы должны заменить URI file: на правильную для вашего случая.

Просьба также ознакомиться с подробной документацией по менеджеру безопасности Tomcat: http://tomcat.apache.org/tomcat-6.0-doc/security-manager-howto.html.

+0

спасибо, что он отлично работает – user1047873

Смежные вопросы