2017-10-11 97 views
1

我正在嘗試使用Hibernate從tomcat webapp連接到本地主機上的MySql(= MariaDB)不斷收到通信鏈路故障(下面附有完整的異常追蹤)。Tomcat/Hibernate與MySql的連接失敗,出現「通信鏈接失敗」和「權限被拒絕」

我在另一臺機器上有另一個數據庫副本(可以稱之爲B),也可以使用第三臺計算機進行開發(讓我們稱之爲C)。

1)我沒有問題從C連接到任何一個DB(A & B)。 2)在「A」上我沒有任何問題連接到本地數據庫(運行'mysql -u'命令)。我也沒有問題做端口3306上的telnet到A或B,所以我假設兩個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)增加「-Djava.net.preferIPv4Stack = true」將卡特琳娜啓動 2)試圖連接到非法地址/端口 - 這改變了(如預期的)從「拒絕權限」到「無路由到主機」的最終錯誤。 3)添加以下內容到我的連接字符串中:「autoReconnect = true & useUnicode = true & createDatabaseIfNotExist = true & characterEncoding = utf-8」 - 導致相同的錯誤(「嘗試重新連接3次。放棄」+「權限被拒絕(連接失敗)「 4)試了兩個數據庫網址。爲本地數據庫嘗試localhost,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. 
+0

也有同樣的問題,在centos 7.4.1708和tmocat 7.0.76 – jbu

回答

1

我也只是跟蹤了這個問題。我的症狀與您的症狀完全相同,我甚至嘗試了您嘗試的確切事物。總之,我的問題只發生,因爲我在SELinux上使用了centos上的tomcat。

一些人幫我診斷使用下面的命令來看待安全事件,爲什麼一些動作沒有permittted:

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 

我見過這樣的條目:

type=AVC msg=audit(1507861264.561:64750): avc: denied { 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

Was caused by: Missing type enforcement (TE) allow rule.

You can use audit2allow to generate a loadable module to allow this access.

然後發現這篇文章關於tomcat和SELinux https://noobient.com/post/165972214381/selinux-woes-with-tomcat-on-centos-74

您可以運行以下命令來查看tomcat是否在tomcat_t security contex中運行噸。

$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的規則集,以允許它進行傳出連接。

+0

謝謝jbu!這對我來說非常合適。這麼長時間的這樣的解脫......我按照你的建議關閉了SELinux,現在SQL工作正常。現在,我將開始挖掘SELinux配置,瞭解如何在不完全禁用它的情況下獲得連接。如果您有任何更多提示或找到相關內容 - 請分享所需的額外步驟。 – Yoshi67

+0

你可以幫助我,並將我的答案標記爲正確 – jbu

+0

哎呀對不起 - 我只是做了... – Yoshi67

相關問題