2016-09-19 1 views
2

Опять мне приходится сталкиваться с этой ошибкой.java.security.AccessControlException: доступ запрещен ("java.net.SocketPermission" "localhost: 1527" "listen, solve")

Fri Sep 16 17:17:29 CEST 2016 : access denied ("java.net.SocketPermission" "localhost:1527" "listen,resolve") 
java.security.AccessControlException: access denied ("java.net.SocketPermission" "localhost:1527" "listen,resolve") 
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472) 
    at java.security.AccessController.checkPermission(AccessController.java:884) 
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:549) 
    at java.lang.SecurityManager.checkListen(SecurityManager.java:1131) 
    at java.net.ServerSocket.bind(ServerSocket.java:374) 
    at java.net.ServerSocket.<init>(ServerSocket.java:237) 
    at javax.net.DefaultServerSocketFactory.createServerSocket(ServerSocketFactory.java:231) 
    at org.apache.derby.impl.drda.NetworkServerControlImpl.createServerSocket(Unknown Source) 
    at org.apache.derby.impl.drda.NetworkServerControlImpl.access$000(Unknown Source) 
    at org.apache.derby.impl.drda.NetworkServerControlImpl$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at org.apache.derby.impl.drda.NetworkServerControlImpl.blockingStart(Unknown Source) 
    at org.apache.derby.impl.drda.NetworkServerControlImpl.executeWork(Unknown Source) 
    at org.apache.derby.drda.NetworkServerControl.main(Unknown Source) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at com.sun.enterprise.admin.cli.optional.DerbyControl.invokeNetworkServerControl(DerbyControl.java:158) 
    at com.sun.enterprise.admin.cli.optional.DerbyControl.main(DerbyControl.java:245) 
java.security.AccessControlException: access denied ("java.net.SocketPermission" "localhost:1527" "listen,resolve") 
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472) 
    at java.security.AccessController.checkPermission(AccessController.java:884) 
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:549) 
    at java.lang.SecurityManager.checkListen(SecurityManager.java:1131) 
    at java.net.ServerSocket.bind(ServerSocket.java:374) 
    at java.net.ServerSocket.<init>(ServerSocket.java:237) 
    at javax.net.DefaultServerSocketFactory.createServerSocket(ServerSocketFactory.java:231) 
    at org.apache.derby.impl.drda.NetworkServerControlImpl.createServerSocket(Unknown Source) 
    at org.apache.derby.impl.drda.NetworkServerControlImpl.access$000(Unknown Source) 
    at org.apache.derby.impl.drda.NetworkServerControlImpl$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at org.apache.derby.impl.drda.NetworkServerControlImpl.blockingStart(Unknown Source) 
    at org.apache.derby.impl.drda.NetworkServerControlImpl.executeWork(Unknown Source) 
    at org.apache.derby.drda.NetworkServerControl.main(Unknown Source) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at com.sun.enterprise.admin.cli.optional.DerbyControl.invokeNetworkServerControl(DerbyControl.java:158) 
    at com.sun.enterprise.admin.cli.optional.DerbyControl.main(DerbyControl.java:245) 

На этот раз я не смог решить проблему редактирования файла java.policy.

Результат Java -версии:

openjdk version "1.8.0_91" 
OpenJDK Runtime Environment (build 1.8.0_91-8u91-b14-3ubuntu1~16.04.1-b14) 
OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode) 

Я нашел java.policy файлы в

/etc/java-8-openjdk/security 
/usr/java/jdk1.8.0_25/jre/lib/security 

оба с ряда:

permission java.net.SocketPermission "localhost:1527", "listen,resolve"; 

Моя машина Linux 16,04 .01, а сервер - Glassfish4

Есть ли другие возможные места, где можно редактировать файл java.policy? Существуют ли другие возможные причины?

ответ

5

Сначала запустите командный файл derby sysinfo.bat, чтобы определить, какой JDK/JRE используется для его запуска. Если вы не можете указать его, перейдите к переменным среды вашего компьютера и проверьте значение JAVA_HOME.

Затем перейдите к этому JDK/папку JRE в \jre\lib\security и добавить:

grant { 
    permission java.net.SocketPermission "localhost:1527", "listen"; 
}; 
+0

Я пробовал с файлами, которые я нашел в ~/glassfish4/glassifish/javadb /. Правильно ли это? Запуск sysinfo.bat (это не только для Windows-машины? У меня есть Linux-машина) Я получаю ошибки. Запуск sysinf Я получаю сообщение об ошибке: Не удалось найти или загрузить основной класс org.apache.derby.tools.sysinfo. Запуск «echo $ JAVA_HOME» Я ничего не получаю :-( – sthor69

+0

Предоставление разрешений ко всему коду, когда-либо выполняемому установкой JRE, вероятно, не отличная идея. –

+0

Правда. Но поскольку это прослушивание на данном порту - по умолчанию derby port - и если ваш компьютер находится за брандмауэром, это будет не слишком опасно, но я согласен с вашей точкой. – Sampada

1

От https://docs.oracle.com/cd/E18930_01/html/821-2418/beabx.html:

Каждый GlassFish домен сервера имеет свой собственный файл глобальной J2SE политики, расположенный в доменной дир/конфигурации , Файл называется server.policy.

+0

Спасибо, что указали. Я не знал, но моя проблема автономно решила просто перезапустить сервер. Трудно сказать, в чем причина – sthor69

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

  • Нет связанных вопросов^_^