У меня была точно такая же проблема, когда jBoss зависал на driver.getConnection (). Однако я использовал jBoss EAP 5.1, java 1.6.0_37x64, Sql Server 2005 и jtds1.2.5 в качестве драйвера jdbc.
Обходной путь, который мне пришлось использовать, - это настройка jvm при запуске: -Djsse.enableCBCProtection = false, и это решило ее.
Я не считаю это исправлением, а скорее обходным решением на данный момент.
Я нашел ошибку: 7105007: Microsoft & amp; JTDS JDBC драйвер сломался после обновления до 1.6.0_29 , который был очень похож, но имел другую причину. Что было интересно, так это то, что он появился как на драйверах MS, так и на драйверах jtds.
Объявить bar
как final
, например:
private final Object bar;
Вы ищете ключевое слово final.
class foo
{
private final Object bar;
public foo(Object pBar)
{
//Error check so that pBar is not null
//If it's not, set bar to pBar
bar = pBar;
}
}
Теперь панель нельзя изменить
Оба предыдущих ответа верны, но для pBar все равно можно установить значение null:
new foo(null);
Итак, окончательный ответ - использовать ключевое слово final и убедиться, что pBar не равно null (как раньше):
public class Foo
{
private final Object bar;
public Foo(Object pBar)
{
if (pBar == null)
{
bar = new Object();
}else{
bar = pBar;
}
}
}
Вы хотите объявить поле как final, например
private final Object foo;
Это имеет дополнительное преимущество, заключающееся в том, что при параллельном выполнении поле гарантированно инициализируется после завершения работы конструктора.
Обратите внимание, что это предотвращает только замену объекта другим. Это не предотвращает модификации объекта методами объекта, например сеттерами, в отличие от const в C / C ++.