我正在尝试使用Hibernate从tomcat Web应用程序连接到本地主机上的MySql(= MariaDB)(以下称它为A),但一直保持通信链接失败(下面附有完整的异常跟踪)。
我在另一台机器上有另一个数据库副本(称为B),并且还使用第三台计算机进行开发(称为C)。
1)从C连接到两个DB(A&B)都没有问题。2)在“ A”上,我在本地连接到数据库没有问题(运行“ mysql -u”命令)。在端口3306上对A或B进行telnet时,我也没有问题。因此,我假设两个DB都已启动并正在运行并且可用于连接。
唯一的问题是当我尝试从生产tomcat(在A上运行)连接到A或B数据库时。我得到错误:
com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
从该错误的类似情况中,我看到大多数错误是由于无效的用户/通过凭据或非法IP引起的。我还尝试将IP更改为localhost,127.0.0.1和10.90.41.155(这是计算机的实际IP)。没有任何帮助,并且请记住,连接仅会因A上特定的tomcat安装而失败。
我还尝试了以下操作:1)在catalina启动中添加了“ -Djava.net.preferIPv4Stack = true” 2)试图连接到非法地址/端口-这(按预期方式)将最终错误从“权限被拒绝”更改为“否”路由到主机”。3)在我的连接字符串中添加了以下内容:“ autoReconnect = true&useUnicode = true&createDatabaseIfNotExist = true&characterEncoding = utf-8”-导致相同的错误(“尝试重新连接3次。放弃。” +“权限被拒绝(连接失败)”) 4)尝试了两个数据库URL。对于使用本地主机,127.0.0.1和实际IP尝试的本地数据库。尝试在连接字符串中是否包含“:3306”
随附的是hibernate.cfg文件+异常的完整服务器跟踪:
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration SYSTEM "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </property> <property name="hibernate.connection.driver_class"> com.mysql.jdbc.Driver </property> <!-- Assume test is the database name --> <property name="hibernate.connection.url"> jdbc:mysql://10.90.41.151/boonder </property> <property name="hibernate.connection.username"> root </property> <property name="hibernate.connection.password"> XXXXXXXXXX </property> <!-- List of XML mapping files --> <mapping resource="User.hbm.xml"/> <mapping resource="Issue.hbm.xml"/> <mapping resource="TraderIssue.hbm.xml"/> </session-factory> </hibernate-configuration>
例外是:
type Exception report message Handler dispatch failed; nested exception is java.lang.ExceptionInInitializerError description The server encountered an internal error that prevented it from fulfilling this request. exception org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.ExceptionInInitializerError org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) javax.servlet.http.HttpServlet.service(HttpServlet.java:650) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) javax.servlet.http.HttpServlet.service(HttpServlet.java:731) com.aldondy.boonder.web.controllers.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:27) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) root cause java.lang.ExceptionInInitializerError com.aldondy.boonder.bl.DataSingleton.<init>(DataSingleton.java:54) com.aldondy.boonder.bl.DataSingleton.instance(DataSingleton.java:74) com.aldondy.boonder.web.controllers.LoginCtrl.loginInner(LoginCtrl.java:62) com.aldondy.boonder.web.controllers.LoginCtrl.login(LoginCtrl.java:41) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:180) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:440) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:428) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) javax.servlet.http.HttpServlet.service(HttpServlet.java:650) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) javax.servlet.http.HttpServlet.service(HttpServlet.java:731) com.aldondy.boonder.web.controllers.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:27) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) root cause org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:271) org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:233) org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210) org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:51) org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:94) org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:242) org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210) org.hibernate.boot.model.process.spi.MetadataBuildingProcess.handleTypes(MetadataBuildingProcess.java:352) org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:111) org.hibernate.boot.model.process.spi.MetadataBuildingProcess.build(MetadataBuildingProcess.java:83) org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:418) org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:87) org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:691) org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:726) com.aldondy.boonder.bl.DataSingleton.<init>(DataSingleton.java:48) com.aldondy.boonder.bl.DataSingleton.instance(DataSingleton.java:74) com.aldondy.boonder.web.controllers.LoginCtrl.loginInner(LoginCtrl.java:62) com.aldondy.boonder.web.controllers.LoginCtrl.login(LoginCtrl.java:41) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:180) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:440) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:428) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) javax.servlet.http.HttpServlet.service(HttpServlet.java:650) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) javax.servlet.http.HttpServlet.service(HttpServlet.java:731) com.aldondy.boonder.web.controllers.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:27) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) root cause org.hibernate.exception.JDBCConnectionException: Error calling Driver#connect org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:115) org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator$1$1.convert(BasicConnectionCreator.java:101) org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.convertSqlException(BasicConnectionCreator.java:123) org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.java:41) org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.createConnection(BasicConnectionCreator.java:58) org.hibernate.engine.jdbc.connections.internal.PooledConnections.addConnections(PooledConnections.java:123) org.hibernate.engine.jdbc.connections.internal.PooledConnections.<init>(PooledConnections.java:42) org.hibernate.engine.jdbc.connections.internal.PooledConnections.<init>(PooledConnections.java:20) org.hibernate.engine.jdbc.connections.internal.PooledConnections$Builder.build(PooledConnections.java:161) ... org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:691) org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:726) com.aldondy.boonder.bl.DataSingleton.<init>(DataSingleton.java:48) com.aldondy.boonder.bl.DataSingleton.instance(DataSingleton.java:74) com.aldondy.boonder.web.controllers.LoginCtrl.loginInner(LoginCtrl.java:62) com.aldondy.boonder.web.controllers.LoginCtrl.login(LoginCtrl.java:41) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:180) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:440) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:428) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) javax.servlet.http.HttpServlet.service(HttpServlet.java:650) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) javax.servlet.http.HttpServlet.service(HttpServlet.java:731) com.aldondy.boonder.web.controllers.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:27) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) root cause com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:166) com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:58) com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:853) com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:440) com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:241) com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:221) org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.java:38) org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.createConnection(BasicConnectionCreator.java:58) ... org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210) org.hibernate.boot.model.process.spi.MetadataBuildingProcess.handleTypes(MetadataBuildingProcess.java:352) org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:111) org.hibernate.boot.model.process.spi.MetadataBuildingProcess.build(MetadataBuildingProcess.java:83) org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:418) org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:87) org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:691) org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:726) com.aldondy.boonder.bl.DataSingleton.<init>(DataSingleton.java:48) com.aldondy.boonder.bl.DataSingleton.instance(DataSingleton.java:74) com.aldondy.boonder.web.controllers.LoginCtrl.loginInner(LoginCtrl.java:62) com.aldondy.boonder.web.controllers.LoginCtrl.login(LoginCtrl.java:41) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:180) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:440) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:428) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) javax.servlet.http.HttpServlet.service(HttpServlet.java:650) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) javax.servlet.http.HttpServlet.service(HttpServlet.java:731) com.aldondy.boonder.web.controllers.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:27) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) root cause com.mysql.cj.core.exceptions.CJCommunicationsException: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) java.lang.reflect.Constructor.newInstance(Constructor.java:423) com.mysql.cj.core.exceptions.ExceptionFactory.createException(ExceptionFactory.java:54) com.mysql.cj.core.exceptions.ExceptionFactory.createException(ExceptionFactory.java:93) com.mysql.cj.core.exceptions.ExceptionFactory.createException(ExceptionFactory.java:133) com.mysql.cj.core.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:149) com.mysql.cj.mysqla.io.MysqlaSocketConnection.connect(MysqlaSocketConnection.java:83) com.mysql.cj.mysqla.MysqlaSession.connect(MysqlaSession.java:204) com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:975) com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:843) com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:440) com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:241) com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:221) org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.java:38) org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.createConnection(BasicConnectionCreator.java:58) org.hibernate.engine.jdbc.connections.internal.PooledConnections.addConnections(PooledConnections.java:123) org.hibernate.engine.jdbc.connections.internal.PooledConnections.<init>(PooledConnections.java:42) org.hibernate.engine.jdbc.connections.internal.PooledConnections.<init>(PooledConnections.java:20) org.hibernate.engine.jdbc.connections.internal.PooledConnections$Builder.build(PooledConnections.java:161) org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.buildPool(DriverManagerConnectionProviderImpl.java:109) org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:72) org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:94) org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:242) org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:51) org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:94) org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:242) org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210) org.hibernate.boot.model.process.spi.MetadataBuildingProcess.handleTypes(MetadataBuildingProcess.java:352) org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:111) org.hibernate.boot.model.process.spi.MetadataBuildingProcess.build(MetadataBuildingProcess.java:83) org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:418) org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:87) org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:691) org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:726) com.aldondy.boonder.bl.DataSingleton.<init>(DataSingleton.java:48) com.aldondy.boonder.bl.DataSingleton.instance(DataSingleton.java:74) com.aldondy.boonder.web.controllers.LoginCtrl.loginInner(LoginCtrl.java:62) com.aldondy.boonder.web.controllers.LoginCtrl.login(LoginCtrl.java:41) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:180) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:440) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:428) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) javax.servlet.http.HttpServlet.service(HttpServlet.java:650) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) javax.servlet.http.HttpServlet.service(HttpServlet.java:731) com.aldondy.boonder.web.controllers.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:27) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) root cause java.net.SocketException: Permission denied (connect failed) java.net.PlainSocketImpl.socketConnect(Native Method) java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) java.net.Socket.connect(Socket.java:589) com.mysql.cj.core.io.StandardSocketFactory.connect(StandardSocketFactory.java:202) com.mysql.cj.mysqla.io.MysqlaSocketConnection.connect(MysqlaSocketConnection.java:57) com.mysql.cj.mysqla.MysqlaSession.connect(MysqlaSession.java:204) com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:975) com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:843) com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:440) com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:241) com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:221) org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.java:38) org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.createConnection(BasicConnectionCreator.java:58) org.hibernate.engine.jdbc.connections.internal.PooledConnections.addConnections(PooledConnections.java:123) org.hibernate.engine.jdbc.connections.internal.PooledConnections.<init>(PooledConnections.java:42) org.hibernate.engine.jdbc.connections.internal.PooledConnections.<init>(PooledConnections.java:20) org.hibernate.engine.jdbc.connections.internal.PooledConnections$Builder.build(PooledConnections.java:161) org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.buildPool(DriverManagerConnectionProviderImpl.java:109) org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:72) org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:94) org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:242) org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210) org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.buildJdbcConnectionAccess(JdbcEnvironmentInitiator.java:145) org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:66) org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35) org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:88) org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:259) org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:233) org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210) ... org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:87) org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:691) org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:726) com.aldondy.boonder.bl.DataSingleton.<init>(DataSingleton.java:48) com.aldondy.boonder.bl.DataSingleton.instance(DataSingleton.java:74) com.aldondy.boonder.web.controllers.LoginCtrl.loginInner(LoginCtrl.java:62) com.aldondy.boonder.web.controllers.LoginCtrl.login(LoginCtrl.java:41) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:428) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) javax.servlet.http.HttpServlet.service(HttpServlet.java:650) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) javax.servlet.http.HttpServlet.service(HttpServlet.java:731) com.aldondy.boonder.web.controllers.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:27) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) note The full stack trace of the root cause is available in the Apache Tomcat/7.0.76 logs.
我也只是追踪了这个问题。我的症状与您的症状完全相同,甚至尝试了您尝试过的确切方法。总而言之,我的问题仅出现是因为我在SELinux上的centos上使用了tomcat。
有些人使用以下命令帮助我诊断,以查看安全事件以及不允许执行某些操作的原因:
sudo ausearch -m avc sudo grep "tcp_socket" /var/log/audit/audit.log | audit2why // translates log into some human readable reasons why the audit record was generated
我看到像这样的条目:
类型= AVC消息=审核(1507861264.561:64750):AVC:拒绝{name_connect} for pid = 1326 comm =“ java” dest = 3306 scontext = system_u:system_r:tomcat_t:s0 tcontext = system_u:object_r:mysqld_port_t:s0 tclass = tcp_socket 原因:缺少类型强制(TE)允许规则。 您可以使用audit2allow生成可加载模块以允许此访问。
类型= AVC消息=审核(1507861264.561:64750):AVC:拒绝{name_connect} for pid = 1326 comm =“ java” dest = 3306 scontext = system_u:system_r:tomcat_t:s0 tcontext = system_u:object_r:mysqld_port_t:s0 tclass = tcp_socket
原因:缺少类型强制(TE)允许规则。
您可以使用audit2allow生成可加载模块以允许此访问。
然后找到有关tomcat和SELinux的文章https://noobient.com/post/165972214381/selinux-woes- with-tomcat-on-centos-74
您可以运行以下命令以查看tomcat是否在tomcat_t安全上下文中运行。
$ps auxZ | grep tomcat
为了真正确定我的错误是否是SELinux,我禁用了SELinux
$ sestatus // shows: SELinux status: enabled $ sudo vim /etc/selinux/config // set "SELINUX=disabled" $ sudo shutdown -r now $ sestatus // shows: SELinux status: disabled
重新启动我的机器,发现tomcat现在正在建立出站连接。
太好了,现在我至少知道为什么会这样。当然,如果您需要SELinux,则禁用它不是解决方案。另一个可能不是解决方案的解决方法是不通过yum安装tomcat。Yum将使用安全上下文安装tomcat。
我认为现在的行动方针是修改安全性上下文或用于管理tomcat的规则集,以使其建立传出连接。