Я хочу получить дополнительный ответ решения nacho-soriano ...
Недавно я искал решение для проблемы, когда написано приложение Java (задание Talend ELT вфакт) хотите подключиться к базе данных Oracle (11g и более), затем случайно произойдет сбой.Операционная система RedHat Enterprise и CentOS.Задание выполняется очень быстро во времени (не более полминуты) и выполняется очень часто (приблизительно один запуск каждые 5 минут).
Иногда, в ночное время в качестве рабочего времени, во время интенсивной работы с базой данныхиспользование в качестве ленивого использования работы, одним словом случайно, соединение обрывается с этим сообщением:
Exception in component tOracleConnection_1
java.sql.SQLRecoverableException: Io exception: Connection reset
at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:101)
at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:173)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:229)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:458)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:411)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:490)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:202)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:33)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:465)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:208)
and StackTrace follow ...
Объяснение проблемы:
Как подробно здесь
Для соединения Oracle требуются случайные числа, чтобы обеспечить хороший уровень безопасности.Генератор случайных чисел в Linux генерирует некоторые числа, основанные на активности клавиатуры и мыши (среди прочих), и помещает их в стек.Вы дадите мне, на сервере, нет большого количества такой деятельности.Таким образом, может случиться так, что программы используют больше случайных чисел, чем может произвести генератор.
Когда пул пуст, чтение из / dev / random будет блокироваться, пока не будет собран дополнительный шум окружающей среды.Время ожидания соединения Oracle падает (по умолчанию 60 секунд).
Решение 1 - Специально для одного приложения
Решение состоит в том, чтобы добавить два параметра, заданные JVM при запуске:
-Djava.security.egd=file:/dev/./urandom
-Dsecurerandom.source=file:/dev/./urandom
Примечание: «/ ./» важно, не бросайте его!
Таким образом, командная строка запуска может быть:
java -Djava.security.egd=file:/dev/./urandom -Dsecurerandom.source=file:/dev/./urandom -cp <classpath directives> appMainClass <app options and parameters>
Один недостаток этого решения состоит в том, что сгенерированные числа немного менее безопасны из-за случайности.Если вы не работаете в военной или секретной отрасли, это решение может быть вашим.
Решение 2 - Общее решение Java JVM
Как объяснено здесь
Обе директивы, приведенные в решении 1, можно поместить в файл настроек безопасности Java.
Взгляните на $JAVA_HOME/jre/lib/security/java.security
Измените строку
securerandom.source=file:/dev/random
на
securerandom.source=file:/dev/urandom
Изменение вступает в силу немедленно для новых работающих приложений.
Что касается решения № 1, одним из недостатков этого решения является то, что сгенерированные числа немного менее безопасны как случайность влияет.На этот раз это глобальное влияние JVM.Что касается решения № 1, если вы не работаете в военной или секретной отрасли, это решение может быть вашим.
В идеале мы должны использовать «file: / dev /./ urandom» после Java 5, как и в предыдущемпуть снова будет указывать на /dev/random.
Сообщение об ошибке: https://bugs.openjdk.java.net/browse/JDK-6202721
Решение 3 - Аппаратное решение
Отказ от ответственности: I'mне связан ни с одним из поставщиков оборудования или продукта ...
Если вам нужно достичь высокого уровня случайности, вы можете заменить программное обеспечение генератора случайных чисел в Linux на часть оборудования.
Некоторая информация доступна здесь .
С уважением
Томас