Vaše hlavní příčina, PoolingException: javax.resource.spi.LocalTransactionException: Communications link failure
souvisí s touto chybou Glassfish , který vysvětluje (na kartě komentářů dole), že možná budete muset obnovit svá neplatná připojení.
Komentář k chybě od Jagadish říká, že je třeba zkontrolovat typ ověření připojení. Pokud je nastaveno na "autocommit" (výchozí nastavení), ovladače JDBC mohou ukládat data předchozího ověření připojení do mezipaměti a během budoucích ověření připojení nedojde k žádné skutečné interakci s databází.
Chcete-li problém vyřešit, nastavte connection-validation-method="table"
a validation-table-name="any_table_you_know_exists"
(nahraďte any_table_you_know_exists
s názvem jakékoli existující tabulky). Tím vynutíte připojení mluvit s databází namísto mezipaměti; pokud je připojení neplatné, bude zrušeno a znovu vytvořeno. Možná budete muset zadat také is-connection-validation-required="true"
.
Články, které vám pomohou s další konfigurací:
- Tento článek také podrobně vysvětluje problém.
- Článek na blogu Jagadish's Oracle na toto téma má více informací.
- Článek podrobně vysvětluje validaci připojení Glassfish JDBC.
Text z blogu Jagadish:
AS_INSTALL_ROOT/bin/asadmin set domain.resources.jdbc-connection-pool.DerbyPool.is-connection-validation-required=true
domain.resources.jdbc-connection-pool.DerbyPool.is-connection-validation-required = true
AS_INSTALL_ROOT/bin/asadmin set domain.resources.jdbc-connection-pool.DerbyPool.connection-validation-method=table
domain.resources.jdbc-connection-pool.DerbyPool.connection-validation-method = table
bin/asadmin set domain.resources.jdbc-connection-pool.DerbyPool.validation-table-name=sys.systables
domain.resources.jdbc-connection-pool.DerbyPool.validation-table-name = sys.systables
Všimněte si, že ukázkový kód odkazuje na sys.systables
, což je tabulka MS SQL, která zaručeně existuje. Pro Oracle viz garantovaná tabulka dual
. Pro MySQL vytvořte tabulku s jedním sloupcem pouze pro účely ověření; hrajte na jistotu a předvyplňte tabulku vložením jednoho řádku dat.