2017-06-27 176 views
0

我正面臨Payara服務器4.1.1.164的問題。Java,Glassfish,連接已關閉

在日誌中,我發現錯誤首先連接重置,然後所有的連接變得不可用的錯誤連接關閉。

我需要重新啓動我的應用程序才能恢復一切,如果我不這樣做,連接將不會重建。

以下是調用堆棧,抱歉,我必須隱藏查詢。

我該如何重播此錯誤或如何避免相同?

domain.xml中

<jdbc-connection-pool match-connections="true" validate-atmost-once-period-in-seconds="60" connection-creation-retry-attempts="15" statement-leak-reclaim="true" validation-table-name="dbo.UBConnectionTest" res-type="javax.sql.ConnectionPoolDataSource" connection-creation-retry-interval-in-seconds="6" max-pool-size="30" max-wait-time-in-millis="30000" datasource-classname="com.microsoft.sqlserver.jdbc.SQLServerXADataSource" idle-timeout-in-seconds="1500" name="xxxxxPool" is-connection-validation-required="true" init-sql="select 1 from UBConnectionTest"> 
    <property name="serverName" value="xxxxx.xxxxx.xxxx.xxx"></property> 
    <property name="portNumber" value="1433"></property> 
    <property name="databaseName" value="xxxx"></property> 
    <property name="user" value="xxxx"></property> 
    <property name="password" value="xxxxxxxx"></property> 
    <property name="encrypt" value="true"></property> 
    <property name="url" value="jdbc:sqlserver://xxxx.xxxxx.xxxx.xxxx:1433;database=xxxxx;user=xxxxx;password=xxxxxxxx;encrypt=true;hostNameInCertificate=*.xxx.xxxx.xxxx;loginTimeout=30;trustServerCertificate=true;"></property> 
</jdbc-connection-pool> 


[#|2017-06-06T05:40:53.597+0000|INFO|Payara 4.1|org.eclipse.persistence.session./file:/opt/payara41/glassfish/domains/domain1/applications/HEMPlatform-ear/HEMPlatform-ejb_jar/_HEMPlatformFNDPU.query|_ThreadID=25;_ThreadName=http-thread-pool(1);_TimeMillis=1496727653597;_LevelValue=800;| 
    Communication failure detected when attempting to perform read query outside of a transaction. Attempting to retry query. Error was: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.3.qualifier): org.eclipse.persistence.exceptions.DatabaseException 
Internal Exception: com.microsoft.sqlserver.jdbc.SQLServerException: Connection reset 


[#|2017-06-06T05:40:53.597+0000|INFO|Payara 4.1|org.eclipse.persistence.session./file:/opt/payara41/glassfish/domains/domain1/applications/HEMPlatform-ear/HEMPlatform-ejb_jar/_HEMPlatformFNDPU.query|_ThreadID=25;_ThreadName=http-thread-pool(1);_TimeMillis=1496727653597;_LevelValue=800;| 
    Communication failure detected when attempting to perform read query outside of a transaction. Attempting to retry query. Error was: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.3.qualifier): org.eclipse.persistence.exceptions.DatabaseException 
Internal Exception: com.microsoft.sqlserver.jdbc.SQLServerException: Connection reset 
Error Code: 0 
Call: SELECT xxxxxx)) 
    bind => [2 parameters bound] 
Query: ReadAllQuery(name="xxxxx))").|#] 

[#|2017-06-06T05:40:53.598+0000|INFO|Payara 4.1|org.eclipse.persistence.session./file:/opt/payara41/glassfish/domains/domain1/applications/HEMPlatform-ear/HEMPlatform-ejb_jar/_HEMPlatformFNDPU.query|_ThreadID=25;_ThreadName=http-thread-pool(1);_TimeMillis=1496727653598;_LevelValue=800;| 
    Communication failure detected when attempting to perform read query outside of a transaction. Attempting to retry query. Error was: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.3.qualifier): org.eclipse.persistence.exceptions.DatabaseException 
Internal Exception: com.microsoft.sqlserver.jdbc.SQLServerException: The connection is closed. 
Error Code: 0 
Call: xxxxxx)) 
    bind => [2 parameters bound] 
Query: ReadAllQuery(name="xxxxxxxxxx)").|#] 

[#|2017-06-06T05:40:56.320+0000|INFO|Payara 4.1|com.hand.glassfish.security.oauth2.OAuth2AuthModule|_ThreadID=27;_ThreadName=http-thread-pool(3);_TimeMillis=1496727656320;_LevelValue=800;| 
    token is Bearer 2fb378a7-2a33-3986-a288-35c97d358bac,userPrincipal is :null,remoteName is null|#] 

[#|2017-06-06T05:40:56.321+0000|INFO|Payara 4.1|com.hand.glassfish.security.oauth2.OAuth2AuthModule|_ThreadID=27;_ThreadName=http-thread-pool(3);_TimeMillis=1496727656321;_LevelValue=800;| 
    token is Bearer 2fb378a7-2a33-3986-a288-35c97d358bac|#] 

[#|2017-06-06T05:40:56.321+0000|INFO|Payara 4.1|com.hand.glassfish.security.oauth2.OAuth2AuthModule|_ThreadID=27;_ThreadName=http-thread-pool(3);_TimeMillis=1496727656321;_LevelValue=800;| 
    requestToke is 2fb378a7-2a33-3986-a288-35c97d358bac,sessionToken is 2fb378a7-2a33-3986-a288-35c97d358bac|#] 

[#|2017-06-06T05:40:56.321+0000|INFO|Payara 4.1|com.hand.glassfish.security.oauth2.OAuth2AuthModule|_ThreadID=27;_ThreadName=http-thread-pool(3);_TimeMillis=1496727656321;_LevelValue=800;| 
    requestToken is same from the sessionToke|#] 

[#|2017-06-06T05:40:56.321+0000|INFO|Payara 4.1|com.hand.glassfish.security.oauth2.OAuth2AuthModule|_ThreadID=27;_ThreadName=http-thread-pool(3);_TimeMillis=1496727656321;_LevelValue=800;| 
    after deal the defaultGroup length is 3|#] 

[#|2017-06-06T05:40:56.321+0000|INFO|Payara 4.1|com.hand.glassfish.security.oauth2.OAuth2AuthModule|_ThreadID=27;_ThreadName=http-thread-pool(3);_TimeMillis=1496727656321;_LevelValue=800;| 
    after deal the defaultGroup token is 2fb378a7-2a33-3986-a288-35c97d358bac|#] 

[#|2017-06-06T05:40:56.322+0000|INFO|Payara 4.1|org.eclipse.persistence.session./file:/opt/payara41/glassfish/domains/domain1/applications/HEMPlatform-ear/HEMPlatform-ejb_jar/_HEMPlatformFNDPU.query|_ThreadID=27;_ThreadName=http-thread-pool(3);_TimeMillis=1496727656322;_LevelValue=800;| 
    Communication failure detected when attempting to perform read query outside of a transaction. Attempting to retry query. Error was: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.3.qualifier): org.eclipse.persistence.exceptions.DatabaseException 
Internal Exception: com.microsoft.sqlserver.jdbc.SQLServerException: The connection is closed. 
Error Code: 0 
Call: xxxxxxxxx) 
    bind => [2 parameters bound] 
Query: ReadAllQuery(name=xxxxxxx").|#] 

[#|2017-06-06T05:40:56.323+0000|INFO|Payara 4.1|org.eclipse.persistence.session./file:/opt/payara41/glassfish/domains/domain1/applications/HEMPlatform-ear/HEMPlatform-ejb_jar/_HEMPlatformFNDPU.query|_ThreadID=27;_ThreadName=http-thread-pool(3);_TimeMillis=1496727656323;_LevelValue=800;| 
    Communication failure detected when attempting to perform read query outside of a transaction. Attempting to retry query. Error was: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.3.qualifier): org.eclipse.persistence.exceptions.DatabaseException 
Internal Exception: com.microsoft.sqlserver.jdbc.SQLServerException: The connection is closed. 
Error Code: 0 
Call:xxxxxxx)) 
    bind => [2 parameters bound] 
Query: ReadAllQuery(name="xxxxxxxxxxxx)").|#] 

[#|2017-06-06T05:40:58.596+0000|INFO|Payara 4.1|org.eclipse.persistence.session./file:/opt/payara41/glassfish/domains/domain1/applications/HEMPlatform-ear/HEMPlatform-ejb_jar/_HEMPlatformFNDPU.query|_ThreadID=25;_ThreadName=http-thread-pool(1);_TimeMillis=1496727658596;_LevelValue=800;| 
    Communication failure detected when attempting to perform read query outside of a transaction. Attempting to retry query. Error was: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.3.qualifier): org.eclipse.persistence.exceptions.DatabaseException 
Internal Exception: com.microsoft.sqlserver.jdbc.SQLServerException: The connection is closed. 

回答

0

該消息被造成的,因爲有錯誤在數據層(JDBC)套接字連接。如果應用程序服務器中有可用連接的數量可控,請查看連接池,並檢查應用程序服務器和數據庫服務器中是否使用SSL。

0

爲避免在GlassFish中遇到JDBC連接失敗,首先要做的是,可以增加連接池超時。我認爲您的數據庫非常繁忙,無法在特定時間內響應GlassFish請求,因此無法正確處理您的連接。確保你的數據庫服務器正在運行,並且你有足夠的資源(RAM,CPU,連接)。其次,您可以在使用連接池之前驗證連接池,並且可以在連接池中配置該連接池。

在Resources> JDBC> Connection Pools> PoolName下的Admin Console中設置JDBC連接池屬性。

超時設置 有兩個超時設置: - 最長等待時間。 - 空閒超時。

連接驗證設置 如果爲真,池驗證連接(檢查,以瞭解他們是否是可用)將它們提供給應用程序之前。然而,缺點是,需要連接驗證迫使服務器在每次池返回連接時應用驗證算法,這會增加getConnection()的延遲開銷()

相關問題