我刚刚在OpenShift上创建了一个数据库,我试图使用Hibernate。 我的配置文件如下:
<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://用户名:pwd@127.11.10.2:3306 /
有什么不对吗?
答案 0 :(得分: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;
}