产生原因:在docker下,安装keycloak,使用mysql数据,出现异常问题如下:
08:30:45,919 ERROR [stderr] (ServerService Thread Pool -- 69) Tue Nov 19 08:30:4
5 GMT 2019 WARN: Establishing SSL connection without server's identity verificat
ion is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requireme
nts SSL connection must be established by default if explicit option isn't set.
For compliance with existing applications not using SSL the verifyServerCertific
ate property is set to 'false'. You need either to explicitly disable SSL by set
ting useSSL=false, or set useSSL=true and provide truststore for server certific
ate verification.
06:47:54,815 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 60
) MSC000001: Failed to start service jboss.deployment.unit."keycloak-server.war"
.undertow-deployment: org.jboss.msc.service.StartException in service jboss.depl
oyment.unit."keycloak-server.war".undertow-deployment: java.lang.RuntimeExceptio
n: RESTEASY003325: Failed to construct public org.keycloak.services.resources.Ke
ycloakApplication()
at org.wildfly.extension.undertow@18.0.0.Final//org.wildfly.extension.un
dertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java
:81)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executo
rs.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at org.jboss.threads@2.3.3.Final//org.jboss.threads.ContextClassLoaderSa
vingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at org.jboss.threads@2.3.3.Final//org.jboss.threads.EnhancedQueueExecuto
r.safeRun(EnhancedQueueExecutor.java:1982)
at org.jboss.threads@2.3.3.Final//org.jboss.threads.EnhancedQueueExecuto
r$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
at org.jboss.threads@2.3.3.Final//org.jboss.threads.EnhancedQueueExecuto
r$ThreadBody.run(EnhancedQueueExecutor.java:1377)
at java.base/java.lang.Thread.run(Thread.java:834)
at org.jboss.threads@2.3.3.Final//org.jboss.threads.JBossThread.run(JBos
sThread.java:485)
Caused by: java.lang.RuntimeException: RESTEASY003325: Failed to construct publi
c org.keycloak.services.resources.KeycloakApplication()
at org.jboss.resteasy.resteasy-jaxrs@3.9.0.Final//org.jboss.resteasy.cor
e.ConstructorInjectorImpl.construct(ConstructorInjectorImpl.java:164)
at org.jboss.resteasy.resteasy-jaxrs@3.9.0.Final//org.jboss.resteasy.spi
.ResteasyProviderFactory.createProviderInstance(ResteasyProviderFactory.java:278
4)
at org.jboss.resteasy.resteasy-jaxrs@3.9.0.Final//org.jboss.resteasy.spi
.ResteasyDeployment.createApplication(ResteasyDeployment.java:364)
at org.jboss.resteasy.resteasy-jaxrs@3.9.0.Final//org.jboss.resteasy.spi
.ResteasyDeployment.startInternal(ResteasyDeployment.java:277)
at org.jboss.resteasy.resteasy-jaxrs@3.9.0.Final//org.jboss.resteasy.spi
.ResteasyDeployment.start(ResteasyDeployment.java:89)
at org.jboss.resteasy.resteasy-jaxrs@3.9.0.Final//org.jboss.resteasy.plu
gins.server.servlet.ServletContainerDispatcher.init(ServletContainerDispatcher.j
ava:119)
at org.jboss.resteasy.resteasy-jaxrs@3.9.0.Final//org.jboss.resteasy.plu
gins.server.servlet.HttpServletDispatcher.init(HttpServletDispatcher.java:36)
at io.undertow.servlet@2.0.26.Final//io.undertow.servlet.core.LifecyleIn
terceptorInvocation.proceed(LifecyleInterceptorInvocation.java:117)
at org.wildfly.extension.undertow@18.0.0.Final//org.wildfly.extension.un
dertow.security.RunAsLifecycleInterceptor.init(RunAsLifecycleInterceptor.java:78
)
at io.undertow.servlet@2.0.26.Final//io.undertow.servlet.core.LifecyleIn
terceptorInvocation.proceed(LifecyleInterceptorInvocation.java:103)
at io.undertow.servlet@2.0.26.Final//io.undertow.servlet.core.ManagedSer
vlet$DefaultInstanceStrategy.start(ManagedServlet.java:305)
at io.undertow.servlet@2.0.26.Final//io.undertow.servlet.core.ManagedSer
vlet.createServlet(ManagedServlet.java:145)
at io.undertow.servlet@2.0.26.Final//io.undertow.servlet.core.Deployment
ManagerImpl$2.call(DeploymentManagerImpl.java:585)
at io.undertow.servlet@2.0.26.Final//io.undertow.servlet.core.Deployment
ManagerImpl$2.call(DeploymentManagerImpl.java:556)
at io.undertow.servlet@2.0.26.Final//io.undertow.servlet.core.ServletReq
uestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:
42)
at io.undertow.servlet@2.0.26.Final//io.undertow.servlet.core.ContextCla
ssLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
at org.wildfly.extension.undertow@18.0.0.Final//org.wildfly.extension.un
dertow.security.SecurityContextThreadSetupAction.lambda$create$0(SecurityContext
ThreadSetupAction.java:105)
at org.wildfly.extension.undertow@18.0.0.Final//org.wildfly.extension.un
dertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda
$create$0(UndertowDeploymentInfoService.java:1504)
at org.wildfly.extension.undertow@18.0.0.Final//org.wildfly.extension.un
dertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda
$create$0(UndertowDeploymentInfoService.java:1504)
at org.wildfly.extension.undertow@18.0.0.Final//org.wildfly.extension.un
dertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda
$create$0(UndertowDeploymentInfoService.java:1504)
at org.wildfly.extension.undertow@18.0.0.Final//org.wildfly.extension.un
dertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda
$create$0(UndertowDeploymentInfoService.java:1504)
at io.undertow.servlet@2.0.26.Final//io.undertow.servlet.core.Deployment
ManagerImpl.start(DeploymentManagerImpl.java:598)
at org.wildfly.extension.undertow@18.0.0.Final//org.wildfly.extension.un
dertow.deployment.UndertowDeploymentService.startContext(UndertowDeploymentServi
ce.java:97)
at org.wildfly.extension.undertow@18.0.0.Final//org.wildfly.extension.un
dertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java
:78)
... 8 more
Caused by: java.lang.RuntimeException: Failed to connect to database
at org.keycloak.keycloak-model-jpa@8.0.0//org.keycloak.connections.jpa.D
efaultJpaConnectionProviderFactory.getConnection(DefaultJpaConnectionProviderFac
tory.java:372)
at org.keycloak.keycloak-model-jpa@8.0.0//org.keycloak.connections.jpa.u
pdater.liquibase.lock.LiquibaseDBLockProvider.lazyInit(LiquibaseDBLockProvider.j
ava:65)
at org.keycloak.keycloak-model-jpa@8.0.0//org.keycloak.connections.jpa.u
pdater.liquibase.lock.LiquibaseDBLockProvider.lambda$waitForLock$2(LiquibaseDBLo
ckProvider.java:96)
at org.keycloak.keycloak-server-spi-private@8.0.0//org.keycloak.models.u
tils.KeycloakModelUtils.suspendJtaTransaction(KeycloakModelUtils.java:682)
at org.keycloak.keycloak-model-jpa@8.0.0//org.keycloak.connections.jpa.u
pdater.liquibase.lock.LiquibaseDBLockProvider.waitForLock(LiquibaseDBLockProvide
r.java:94)
at org.keycloak.keycloak-services@8.0.0//org.keycloak.services.resources
.KeycloakApplication$1.run(KeycloakApplication.java:178)
at org.keycloak.keycloak-server-spi-private@8.0.0//org.keycloak.models.u
tils.KeycloakModelUtils.runJobInTransaction(KeycloakModelUtils.java:227)
at org.keycloak.keycloak-services@8.0.0//org.keycloak.services.resources
.KeycloakApplication.startup(KeycloakApplication.java:171)
at org.keycloak.keycloak-services@8.0.0//org.keycloak.services.resources
.KeycloakApplication.init(KeycloakApplication.java:162)
at org.keycloak.keycloak-services@8.0.0//org.keycloak.services.resources
.KeycloakApplication.<init>(KeycloakApplication.java:143)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInsta
nce0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInsta
nce(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newI
nstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:
490)
at org.jboss.resteasy.resteasy-jaxrs@3.9.0.Final//org.jboss.resteasy.cor
e.ConstructorInjectorImpl.construct(ConstructorInjectorImpl.java:152)
... 31 more
Caused by: java.sql.SQLException: javax.resource.ResourceException: IJ000453: Unable to get managed connection for java:jboss/datasources/KeycloakDS
at org.jboss.ironjacamar.jdbcadapters@1.4.17.Final//org.jboss.jca.adapte
rs.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:159)
at org.jboss.as.connector@18.0.0.Final//org.jboss.as.connector.subsystem
s.datasources.WildFlyDataSource.getConnection(WildFlyDataSource.java:64)
at org.keycloak.keycloak-model-jpa@8.0.0//org.keycloak.connections.jpa.D
efaultJpaConnectionProviderFactory.getConnection(DefaultJpaConnectionProviderFac
tory.java:366)
... 45 more
Caused by: javax.resource.ResourceException: IJ000453: Unable to get managed con
nection for java:jboss/datasources/KeycloakDS
at org.jboss.ironjacamar.impl@1.4.17.Final//org.jboss.jca.core.connectio
nmanager.AbstractConnectionManager.getManagedConnection(AbstractConnectionManage
r.java:690)
at org.jboss.ironjacamar.impl@1.4.17.Final//org.jboss.jca.core.connectio
nmanager.tx.TxConnectionManagerImpl.getManagedConnection(TxConnectionManagerImpl
.java:440)
at org.jboss.ironjacamar.impl@1.4.17.Final//org.jboss.jca.core.connectio
nmanager.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.
java:789)
at org.jboss.ironjacamar.jdbcadapters@1.4.17.Final//org.jboss.jca.adapte
rs.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:151)
... 47 more
Caused by: javax.resource.ResourceException: IJ031084: Unable to create connecti
on
at org.jboss.ironjacamar.jdbcadapters@1.4.17.Final//org.jboss.jca.adapte
rs.jdbc.local.LocalManagedConnectionFactory.createLocalManagedConnection(LocalMa
nagedConnectionFactory.java:345)
at org.jboss.ironjacamar.jdbcadapters@1.4.17.Final//org.jboss.jca.adapte
rs.jdbc.local.LocalManagedConnectionFactory.getLocalManagedConnection(LocalManag
edConnectionFactory.java:352)
at org.jboss.ironjacamar.jdbcadapters@1.4.17.Final//org.jboss.jca.adapte
rs.jdbc.local.LocalManagedConnectionFactory.createManagedConnection(LocalManaged
ConnectionFactory.java:287)
at org.jboss.ironjacamar.impl@1.4.17.Final//org.jboss.jca.core.connectio
nmanager.pool.mcp.SemaphoreConcurrentLinkedDequeManagedConnectionPool.createConn
ectionEventListener(SemaphoreConcurrentLinkedDequeManagedConnectionPool.java:132
8)
at org.jboss.ironjacamar.impl@1.4.17.Final//org.jboss.jca.core.connectio
nmanager.pool.mcp.SemaphoreConcurrentLinkedDequeManagedConnectionPool.getConnect
ion(SemaphoreConcurrentLinkedDequeManagedConnectionPool.java:499)
at org.jboss.ironjacamar.impl@1.4.17.Final//org.jboss.jca.core.connectio
nmanager.pool.AbstractPool.getSimpleConnection(AbstractPool.java:632)
at org.jboss.ironjacamar.impl@1.4.17.Final//org.jboss.jca.core.connectio
nmanager.pool.AbstractPool.getConnection(AbstractPool.java:604)
at org.jboss.ironjacamar.impl@1.4.17.Final//org.jboss.jca.core.connectio
nmanager.AbstractConnectionManager.getManagedConnection(AbstractConnectionManage
r.java:624)
... 50 more
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driv
er has not received any packets from the server.
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInsta
nce0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInsta
nce(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newI
nstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:
490)
at com.mysql.jdbc@5.1.46//com.mysql.jdbc.Util.handleNewInstance(Util.jav
a:425)
at com.mysql.jdbc@5.1.46//com.mysql.jdbc.SQLError.createCommunicationsEx
ception(SQLError.java:990)
at com.mysql.jdbc@5.1.46//com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:342
)
at com.mysql.jdbc@5.1.46//com.mysql.jdbc.ConnectionImpl.coreConnect(Conn
ectionImpl.java:2188)
at com.mysql.jdbc@5.1.46//com.mysql.jdbc.ConnectionImpl.connectOneTryOnl
y(ConnectionImpl.java:2221)
at com.mysql.jdbc@5.1.46//com.mysql.jdbc.ConnectionImpl.createNewIO(Conn
ectionImpl.java:2016)
at com.mysql.jdbc@5.1.46//com.mysql.jdbc.ConnectionImpl.<init>(Connectio
nImpl.java:776)
at com.mysql.jdbc@5.1.46//com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Con
nection.java:47)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInsta
nce0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInsta
nce(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newI
nstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:
490)
at com.mysql.jdbc@5.1.46//com.mysql.jdbc.Util.handleNewInstance(Util.jav
a:425)
at com.mysql.jdbc@5.1.46//com.mysql.jdbc.ConnectionImpl.getInstance(Conn
ectionImpl.java:386)
at com.mysql.jdbc@5.1.46//com.mysql.jdbc.NonRegisteringDriver.connect(No
nRegisteringDriver.java:330)
at org.jboss.ironjacamar.jdbcadapters@1.4.17.Final//org.jboss.jca.adapte
rs.jdbc.local.LocalManagedConnectionFactory.createLocalManagedConnection(LocalMa
nagedConnectionFactory.java:321)
... 57 more
Caused by: java.net.ConnectException: Connection refused (Connection refused)
at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSoc
ketImpl.java:399)
at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractP
lainSocketImpl.java:242)
at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocke
tImpl.java:224)
at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403)
at java.base/java.net.Socket.connect(Socket.java:609)
at com.mysql.jdbc@5.1.46//com.mysql.jdbc.StandardSocketFactory.connect(S
tandardSocketFactory.java:211)
at com.mysql.jdbc@5.1.46//com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:301
)
... 70 more
解决方法:
启动keycloak时,增加JDBC_PARAMS='useSSL=false'