Din rodårsag, PoolingException: javax.resource.spi.LocalTransactionException: Communications link failure
er relateret til denne Glassfish-fejl , som forklarer (i kommentarfanen nederst), at du muligvis skal opdatere dine ugyldige forbindelser.
Fejlkommentaren af Jagadish siger for at kontrollere din forbindelsesvalideringstype. Hvis den er indstillet til "autocommit" (standard), kan JDBC-driverne cache de tidligere forbindelsesvalideringsdata, og der vil ikke ske nogen egentlig databaseinteraktion under fremtidige forbindelsesvalideringer.
For at løse problemet skal du indstille connection-validation-method="table"
og validation-table-name="any_table_you_know_exists"
(erstat any_table_you_know_exists
med navnet på en eksisterende tabel). Gør du dette tvinger forbindelserne til at tale til databasen i stedet for cachen; hvis forbindelsen er ugyldig, vil den blive afbrudt og genskabt. Du skal muligvis også angive is-connection-validation-required="true"
.
Artikler til hjælp med yderligere konfiguration:
- Denne artikel forklarer også problemet i detaljer.
- Jagadishs Oracle-blogartikel om dette emne har flere oplysninger.
- Artikel der forklarer Glassfish JDBC Connection Validation i detaljer.
Tekst fra Jagadishs blog:
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
Bemærk, at prøvekoden refererer til sys.systables
, som er en MS SQL-tabel, der med garanti eksisterer. For Oracle, se den garanterede tabel dual
. For MySQL skal du oprette en 1-kolonne tabel udelukkende til valideringsformål; spil det sikkert, og udfyld tabellen på forhånd ved at indsætte en række data.