2015-02-09 123 views
2

我刚刚在OpenShift上创建了一个数据库,我试图使用Hibernate。 我的配置文件如下:如何在OpenShift上使用Hibernate连接到MySQL数据库

<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
<property name="hibernate.connection.url">jdbc:mysql://$OPENSHIFT_MYSQL_DB_HOST:$OPENSHIFT_MYSQL_DB_PORT/mytomcatapp</property> 

<property name="hibernate.connection.username">username</property> 
<property name="hibernate.connection.password">pwd</property> 

但它不起作用。 当打印我的ENV变量,结果是:

OPENSHIFT_MYSQL_DB_HOST:127.11.10.2 OPENSHIFT_MYSQL_DB_PORT:3306 OPENSHIFT_MYSQL_DB_USERNAME:用户名OPENSHIFT_MYSQL_DB_PASSWORD:passwd中OPENSHIFT_MYSQL_DB_URL的:mysql://用户名:[email protected]:3306/

有什么不对的吗?

+0

你在你的应用程序中使用上面的配置得到什么错误? – 2015-02-09 21:15:55

+0

错误是:无法打开连接 – 2015-02-10 07:37:17

回答

2

这是错误的:应用程序使用配置文件作为文本,而不是代码。

要解决此问题,您可以使用Spring的动态Hibernate配置。

下面是一个示例如何操作:Script Security + Hibernate Anotation Example

在使用openshift你需要在文件AppConfig.java一些变化的情况下:

@Bean(name = "dataSource") 
public BasicDataSource dataSource() { 
    BasicDataSource ds = new BasicDataSource(); 
    ds.setDriverClassName("com.mysql.jdbc.Driver"); 
    String host = System.getenv("OPENSHIFT_MYSQL_DB_HOST"); 
    String port = System.getenv("OPENSHIFT_MYSQL_DB_PORT"); 
    String name = "mytomcatapp"; 
    String url = "jdbc:mysql://" + host + ":" + port + "/" + name; 
    ds.setUrl(url); 
    ds.setUsername("username"); 
    ds.setPassword("pwd"); 
    return ds; 
}