powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Wildfly sockets
25 сообщений из 30, страница 1 из 2
Wildfly sockets
    #40023441
Als1973
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В WAR для Wildfly простая операция по закрытию TCP сокета (this.socket.close();) культурно, без ошибок кладет сам сервер. Может кто сталкивался?
...
Рейтинг: 0 / 0
Wildfly sockets
    #40023457
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Als1973,
Ниче не понял.
war это архив файлов. Где там операция?
...
Рейтинг: 0 / 0
Wildfly sockets
    #40023539
Als1973
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

Да, веб приложение, в котором нужно открыть сокет на внешнее устройство и закрыть. Открывается нормально, отрабатывает что надо, при закрытии шадаунится сам wildfly.
...
Рейтинг: 0 / 0
Wildfly sockets
    #40023548
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Als1973,
Минимальный код сюда.
Типо - новый проект, ставим две строки и тут упало.
Пошаговая отладка, логи, анализы))))
...
Рейтинг: 0 / 0
Wildfly sockets
    #40023554
Als1973
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

Все что после socket.close();

2020-12-01 09:50:22,158 INFO [org.jboss.as.server] (Thread-1) WFLYSRV0272: Suspending server
2020-12-01 09:50:22,178 INFO [org.jboss.as.ejb3] (Thread-1) WFLYEJB0493: EJB subsystem suspension complete
2020-12-01 09:50:22,184 INFO [org.jboss.as.server] (Thread-1) WFLYSRV0220: Server shutdown has been requested via an OS signal

Далее глушатся приложения.
Где-то проскакивало что сокеты нужно открывать в отдельном треде, но примера так и не нашел.
...
Рейтинг: 0 / 0
Wildfly sockets
    #40023559
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Als1973
Где-то проскакивало что сокеты нужно открывать в отдельном треде, но примера так и не нашел.

- по уму JavaEE приложение может открывать сокеты и прочие непотребства в JCA-адаптере (на GitHub таких проектов полно, вот например ), но даже если и не "по уму", то открытие/закрытие сетевого соединения не должно крашить WildFly. Возможно Вы закрываете что-то не то
...
Рейтинг: 0 / 0
Wildfly sockets
    #40023593
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Als1973
Все что после socket.close();
ну а остальное где?
...
Рейтинг: 0 / 0
Wildfly sockets
    #40023605
Als1973
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,
Что остальное?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
    public void connect() {
        log.debug("Opening socket for HSM");
        try {
            log.debug("HSM configured: " + HSMIP + ":" + HSMPort);
           this.socket = new Socket(HSMIP, HSMPort);
           socket.setTrafficClass(16);
           
        } catch (IOException e) {
            log.error("Unable to open socket: " + e.getMessage(), e);
            return;
        }
        sendEcho();
        log.debug("Socket opened");
    }

    public void disconnect() {
        log.debug("Closing socket");
       try {
           this.socket.close();
        } catch (IOException e) {
           log.error("Failed to close socket: " + e.getMessage(), e);
       }
    }



connect connect() - отрабатывать, sendEcho() - отрабатывает, disconnect() - даунит сервер
...
Рейтинг: 0 / 0
Wildfly sockets
    #40023621
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Als1973,
Код: java
1.
2.
3.
} catch (IOException e) {
    log.error("Failed to close socket: " + e.getMessage(), e);
}


- перехватывате не IOException, а Throwable. Поставьте на это место брекпойнт и в дебагере посмотрите что за исключение происходит (ну или e.printStackTrace() сделайте). Тогда понятней станет что там происходит и нам расскажете)
...
Рейтинг: 0 / 0
Wildfly sockets
    #40023622
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Als1973, ну и не плохо бы сказать что там в "HSMIP + ":" + HSMPort"
...
Рейтинг: 0 / 0
Wildfly sockets
    #40023625
Als1973
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov,
Так ексепшена нет вообще.
IP и порт, все прекрасно коннектится к ХСМ и отрабатывает, убивает close()
...
Рейтинг: 0 / 0
Wildfly sockets
    #40023634
Als1973
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все, вопрос снимается, я лох. Нашел ошибку, переношу чужое консольное приложение на cервер, а там exit(1)
...
Рейтинг: 0 / 0
Wildfly sockets
    #40023711
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Exit - это опасная штука. Особенно если она может быть вызывана косвенно из динамического кода.
Из скриптовых языков Java/Nashorn.

Кстати ее можно зобанить из Java Security Manager?
...
Рейтинг: 0 / 0
Wildfly sockets
    #40023718
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Кстати ее можно зобанить из Java Security Manager?

- да, но если начать банить все опасные штуки, то неожиданно окажется что половина популярных у Java-разработчиков фреймворков не работают
...
Рейтинг: 0 / 0
Wildfly sockets
    #40023719
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Им может внезапно понадобиться System.exit() ?
...
Рейтинг: 0 / 0
Wildfly sockets
    #40023729
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Им может внезапно понадобиться System.exit() ?

- нет, но необходимость доступа к System это не редкость: например System.getProperties() довольно популярен у разработчиков фреймворков
...
Рейтинг: 0 / 0
Wildfly sockets
    #40023732
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я-же не предлагаю зобанить класс System. Там для каждого system property есть отдельная привилегия.

Но конфигурить Security Manager через текстовые файлы в дефолтном варианте - это гиморр.
Я согласен. Он работает в режиме "Запрещено все что не разрешено" и пока приложение
не пройдет все цикломатические ветки и кейсы - невозможно гарантировать что serutity.properties
написан настолько деликатно чтоб не крашить приложение.

Вобщем я вижу решение в виде написание своего SecurityManager.
...
Рейтинг: 0 / 0
Wildfly sockets
    #40023756
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Я-же не предлагаю зобанить класс System. Там для каждого system property есть отдельная привилегия

- я реальный пример взял
Kachalov
System.getProperties()

- это через PropertyPermission не порешаешь

mayton
Вобщем я вижу решение в виде написание своего SecurityManager.

- вряд ли это будет проще чем уже существующий, разве что правила можно в какой-нибудь модный YAML запихнуть
...
Рейтинг: 0 / 0
Wildfly sockets
    #40023766
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov
- я реальный пример взял
Код: plaintext
1.
> findstr -v ^^# java.security|findstr -v ^^$|findstr System
policy.allowSystemProperty=true
Может ещё и на реальное состояние вещей обращать внимание?
...
Рейтинг: 0 / 0
Wildfly sockets
    #40023769
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov

policy.allowSystemProperty=true
Может ещё и на реальное состояние вещей обращать внимание?

- не понял что Вы хотели сказать, поясните. Если это про System.getProperties() , то там SecurityException - if a security manager exists and its checkPropertiesAccess method doesn't allow access to the system properties
...
Рейтинг: 0 / 0
Wildfly sockets
    #40023772
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю зачем вы ссылаетесь на восьмерку. Надо смотреть в перспективу.
Ну вот для транковой версии OpenJDK.

System.exit вызывает Runtime.exit:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
    76      /**
    77       * Terminates the currently running Java virtual machine by initiating its
    78       * shutdown sequence.  This method never returns normally.  The argument
    79       * serves as a status code; by convention, a nonzero status code indicates
    80       * abnormal termination.
    81       *
    82       * <p> All registered {@linkplain #addShutdownHook shutdown hooks}, if any,
    83       * are started in some unspecified order and allowed to run concurrently
    84       * until they finish.  Once this is done the virtual machine
    85       * {@linkplain #halt halts}.
    86       *
    87       * <p> If this method is invoked after all shutdown hooks have already
    88       * been run and the status is nonzero then this method halts the
    89       * virtual machine with the given status code. Otherwise, this method
    90       * blocks indefinitely.
    91       *
    92       * <p> The {@link System#exit(int) System.exit} method is the
    93       * conventional and convenient means of invoking this method.
    94       *
    95       * @param  status
    96       *         Termination status.  By convention, a nonzero status code
    97       *         indicates abnormal termination.
    98       *
    99       * @throws SecurityException
   100       *         If a security manager is present and its
   101       *         {@link SecurityManager#checkExit checkExit} method does not permit
   102       *         exiting with the specified status
   103       *
   104       * @see java.lang.SecurityException
   105       * @see java.lang.SecurityManager#checkExit(int)
   106       * @see #addShutdownHook
   107       * @see #removeShutdownHook
   108       * @see #halt(int)
   109       */
   110      public void exit(int status) {
   111          SecurityManager security = System.getSecurityManager();
   112          if (security != null) {
   113              security.checkExit(status);
   114          }
   115          Shutdown.exit(status);
   116      }



Формально проверка есть. Осталось ее активировать.
...
Рейтинг: 0 / 0
Wildfly sockets
    #40023773
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov

mayton
Вобщем я вижу решение в виде написание своего SecurityManager.

- вряд ли это будет проще чем уже существующий, разве что правила можно в какой-нибудь модный YAML запихнуть

При чем здесь Yaml?

Я вообеще это имел в виду. Я хотел "разрешить всё" но явно запретить одно конкретное действие.
Стандарным конфигуратором на основе .property это сделать сложно.
...
Рейтинг: 0 / 0
Wildfly sockets
    #40023779
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Не знаю зачем вы ссылаетесь на восьмерку

- я про getProperties говорил, а 8 просто под руку подвернулась
...
Рейтинг: 0 / 0
Wildfly sockets
    #40023781
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проехали про getProperties.
...
Рейтинг: 0 / 0
Wildfly sockets
    #40023835
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov
- не понял что Вы хотели сказать, поясните.
Я взял умалчиваемую политику Java 8 и, внезапно, "начал подозревать", что политика по умолчанию разрешает доступ к системным свойствам.
"Меня опять терзают смутные сомнения", что если активировать диспетчер безопасности, то System.getProperties() будет работать без всяких проблем: проверка обнаружит, что "это можно".
...
Рейтинг: 0 / 0
25 сообщений из 30, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Wildfly sockets
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]