gpt4 book ai didi

java - 亚马逊 aws ubuntu java mysql 网络服务 "Error calling Driver#connect"

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:47:20 24 4
gpt4 key购买 nike

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

Mar 25, 2014 9:59:52 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure WARN: HHH000402: Using Hibernate built-in connection pool (not for production use!) Mar 25, 2014 9:59:52 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO: HHH000401: using driver [com.mysql.jdbc.Driver] at URL [jdbc:mysql://ec2-54-197-214-209.compute-1.amazonaws.com:3306/ChronoMetriq] Mar 25, 2014 9:59:52 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO: HHH000046: Connection properties: {user=root, password=**} Mar 25, 2014 9:59:52 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO: HHH000006: Autocommit mode: false Mar 25, 2014 9:59:52 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure INFO: HHH000115: Hibernate connection pool size: 10 (min=1) Error Creating SessionFactory: **Error calling Driver#connect null Mar 25, 2014 9:59:52 PM com.sun.jersey.spi.container.ContainerResponse mapMappableContainerException SEVERE: The RuntimeException could not be mapped to a response, re-throwing to the HTTP container java.lang.NullPointerException at ca.chronometriq.webterm.restapi.Process.getQueueName(Process.java:132) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185) at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288) at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1469) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1400) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339) at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416) at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537) at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:699) at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1024) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1686) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at 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>

这是我们的 session 工厂代码:

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);
}
}
}

知道为什么会这样吗?

最佳答案

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

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

您可以通过调用:

授予 上的所有权限。 给 'root'@'x.x.x.x' 通过授予选项的 'the_password' 标识;

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

最后,您的 MySQL 数据库中的授权用户应该是主机的“root”用户:127.0.0.1/localhost/::1/您的 EC2 私有(private) IP/您的 EC2 私有(private) DNS(以及其他外部 IP,如果您计划从本地主机外部调用它)。

希望对您有所帮助。最大

关于java - 亚马逊 aws ubuntu java mysql 网络服务 "Error calling Driver#connect",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22647598/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com