amazon aws ubuntu java mysql webservice“调用 Driver#connect 时出错”

2024-04-20

我们有一些 Web 服务运行在 tomcat 7 / java7 / hibernate / mysql5 上。 一切都在我的电脑上的 localhost tomcat 服务器上完美运行,但是当我们在 AWS Ubuntu 服务器上部署应用程序时,我们收到以下错误消息:

2014 年 3 月 25 日 9:59:52 下午 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl 配置警告:HHH000402:使用 Hibernate 内置连接池 (不适用于生产用途!)2014 年 3 月 25 日 9:59:52 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator信息:HHH000401:使用驱动程序[com.mysql.jdbc.Driver] 网址 [jdbc:mysql://ec2-54-197-214-209.compute-1.amazonaws.com:3306/ChronoMetriq] 2014 年 3 月 25 日 晚上 9:59:52 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator 信息:HHH000046:连接属性:{user=root, 密码=**} 2014 年 3 月 25 日晚上 9:59:52 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator 信息:HHH000006:自动提交模式:错误 2014 年 3 月 25 日 晚上 9:59:52 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl 配置信息:HHH000115:Hibernate 连接池大小:10(最小值=1) 创建 SessionFactory 时出错:**调用 Driver#connect 时出错空 三月 2014 年 25 月 9:59:52 下午 com.sun.jersey.spi.container.ContainerResponse mapMappableContainerException 严重:RuntimeException 无法 映射到响应,重新抛出到 HTTP 容器java.lang.NullPointerException在 ca.chronometriq.webterm.restapi.Process.getQueueName(Process.java:132) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:606) 在 com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) 在 com.sun.jersey.server.impl.model.method.dispatch.Abs​​tractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185) 在 com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) 在 com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288) 在 com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) 在 com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) 在 com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) 在 com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) 在 com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1469) 在 com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1400) 在 com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349) 在 com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339) 在 com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416) 在com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537) 在com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:699) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 在org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 在org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1024) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 在 org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1686) 在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:744)

这是我的 hibernate.cfg.xml 文件内容:

    <?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd" >
<hibernate-configuration>
     <session-factory>

        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://myaddress.compute-1.amazonaws.com:3306/ChronoMetriq</property>
        <property name="hibernate.connection.release_mode">auto</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">********</property>
        <property name="hibernate.connection.pool_size">10</property>
        <property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
        <property name="show_sql">true</property>

        <mapping class="ca.chronometriq.webterm.model.Clinic" />
        ...

    </session-factory>
</hibernate-configuration>

这是我们的会话工厂代码:

public class DataObjectFactory {
    @SuppressWarnings({ "rawtypes" })
    private static final ThreadLocal threadLocal = new ThreadLocal();

    private static ServiceRegistry serviceRegistry;
    private static SessionFactory sessionFactory;

    private static Configuration configuration;


    private static final Logger logger = Logger.getLogger(DataAccessInterface.class.getName());


    static {
        try {
            configuration = new Configuration().addResource("hibernate.cfg.xml");
            configuration.configure();

            serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
            sessionFactory = configuration.buildSessionFactory(serviceRegistry);


        } catch (Exception e) {
            System.err.println("Failed to create sessionFactory object." + e);
        }
    }

    private DataObjectFactory(){
    }

    @SuppressWarnings("unchecked")
    public static Session getSession() throws HibernateException {

        Session session = (Session) threadLocal.get();

        if (session == null || !session.isOpen()) {
            if (sessionFactory == null) {
                rebuildSessionFactory();
            }
            session = (sessionFactory != null) ? sessionFactory.openSession() : null;

            threadLocal.set(session);
        }
        return session;
    }

public static void rebuildSessionFactory() {
    try {
        configuration = new Configuration().addResource("hibernate.cfg.xml");
        configuration.configure();

        serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
        sessionFactory = configuration.buildSessionFactory(serviceRegistry);

    } catch (HibernateException e) {
        System.err.println("Error Creating SessionFactory: " + e.getMessage());
    }
}

@SuppressWarnings("unchecked")
public static void closeSession() throws HibernateException {
    Session session = (Session) threadLocal.get();
    threadLocal.set(null);
    if (session != null) {
        session.flush();
        session.close();
    }
}

public static SessionFactory getSessionFactory() {
    configuration = new Configuration().addResource("hibernate.cfg.xml");
    configuration.configure();

    serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
    sessionFactory = configuration.buildSessionFactory(serviceRegistry);

    return sessionFactory;
}

public static Configuration getConfiguration() {
    return configuration;
}


    public static void closeRegistry() throws Exception{
        if(serviceRegistry!= null) {
            StandardServiceRegistryBuilder.destroy(serviceRegistry);
        }
    }
}

知道为什么会发生这种情况吗?


'调用 Driver#connect 时出错' 通常是当 Tomcat 无法访问您的数据库时出现的错误。这可能是因为您提供了错误的用户名/密码组合,或者因为您的数据库(或在这种情况下为 Amazon)可能阻止来自源 IP 的连接。

我建议你找到发出请求的源IP和端口并将其添加到mysql中的用户权限中。为具有该 IP 的“root”用户授予所有权限。

您可以通过致电:

授予所有权限.TO 'root'@'x.x.x.x' 由 'the_password' 识别并带有授予选项;

其中 x.x.x.x 是源 IP(如果 mysql 和 tomcat 位于同一服务器上,并且它是 Amazon EC2 实例,请确保使用 EC2 实例的私有 IP 以及私有 DNS 执行该查询,例如 ip-x-x-x-x。 ec2.内部)。

最后,MySQL 数据库中的授予用户应该是来自主机的“root”:127.0.0.1 / localhost / ::1 / 你的 EC2 私有 IP / 你的 EC2 私有 DNS(以及其他外部 IP,如果你打算从以下位置调用它)在本地主机之外)。

希望能帮助到你。 最大限度

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

amazon aws ubuntu java mysql webservice“调用 Driver#connect 时出错” 的相关文章

随机推荐