【问题标题】:Not working enviromental variable OPENSHIFT_MYSQL_DB_HOST in a JDBC connection to MySQL在与 MySQL 的 JDBC 连接中环境变量 OPENSHIFT MYSQL DB_HOST 不起作用
【发布时间】:2014-01-22 12:19:24
【问题描述】:

我正在尝试建立与 MySQL 的基本 JDBC 连接。我在 openshift 服务器(tomcat7、mysql)上部署了应用程序,但我无法连接到我的数据库(我使用 phpmyadmin 创建数据库和表)。我正在使用 Spring 3.1 MVC、JSF 和 Primefaces。

前段时间我部署了一个简单的 java web 应用程序,我使用了一个类连接

String driver = "com.mysql.jdbc.Driver";
        String host = System.getenv("OPENSHIFT_MYSQL_DB_HOST");
        String port = System.getenv("OPENSHIFT_MYSQL_DB_PORT");
        String url = "jdbc:mysql://"+host+":"+port+"/demo01";
        String user = "adminujFVYBF";
        String password = "EIyNRbHNBxN_";

这次我想在 Spring MVC 中使用 jdbc.properties 文件来管理值

jdbc.driverClassName=com.mysql.jdbc.Driver                                                 
jdbc:mysql://${OPENSHIFT_MYSQL_DB_HOST}:${OPENSHIFT_MYSQL_DB_PORT)}/libreriaapp
jdbc.username=adminCnH8p6r
jdbc.password=EhBHSvIqHFAz

所以我试图弄清楚如何在 jdbc url 中使用环境变量以使我的数据库正常工作,但没有成功。

这是我的应用程序上下文

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:p="http://www.springframework.org/schema/p"
   xmlns:aop="http://www.springframework.org/schema/aop"
   xmlns:context="http://www.springframework.org/schema/context"
   xmlns:tx="http://www.springframework.org/schema/tx"
   xsi:schemaLocation="http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
   http://www.springframework.org/schema/aop 
   http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
   http://www.springframework.org/schema/tx 
   http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
   http://www.springframework.org/schema/context
   http://www.springframework.org/schema/context/spring-context-3.1.xsd">

   <bean id="propertyConfigurer"
      class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
      p:location="/WEB-INF/jdbc.properties" />

   <bean id="dataSource"
      class="org.springframework.jdbc.datasource.DriverManagerDataSource"
      p:driverClassName="${jdbc.driverClassName}"         
      p:url="${jdbc.url}"
      p:username="${jdbc.username}"
      p:password="${jdbc.password}" />              

   <context:component-scan base-package="pe.egcc.eureka.app.layer.controller"/>

  </beans>

[项目存储库] https://github.com/cachuan07/libreriaapp1

如果有人能指出我正确的方向,那就太好了。很抱歉这篇文章很大,它需要一些解释才能使其连贯。希望这是有道理的。谢谢。

【问题讨论】:

  • 您的上下文文件和您的错误之间存在不准确之处。是${env.OPENSHIFT_MYSQL_DB_HOST} 还是$OPENSHIFT_MYSQL_DB_HOST
  • 当你echo $OPENSHIFT_MYSQL_DB_PORT时会发生什么?
  • 我更新了问题以使其更清晰
  • 你真的在设置名为OPENSHIFT_MYSQL_DB_HOST的环境属性吗?
  • 我只是关注示例,第一次工作没有设置它,我有类似的问题link

标签: java mysql spring jsf openshift


【解决方案1】:

您好,您可以简单地编写这样的代码..

try{Class.forName("com.mysql.jdbc.Driver").newInstance();
username=asfksjfjs;

password=sflkaskfjhsjk; 
url="jdbc:mysql://178.360.01:3306/demo01";  
con = (Connection) DriverManager.getConnection(url,username,password);} 

只需从您的 phpmyadmin 中复制这些端口号和主机名...

它会很有效。

【讨论】:

    【解决方案2】:

    我认为您不能在 jdbc.properties 文件中使用环境变量,我认为它们不会被解析(如在此处回答 Regarding application.properties file and environment variable)。如果该 xml 文件被替代它们的东西正确解析(就像它对standalone.xml 或 context.xml 文件所做的那样),您可能能够在您的 xml 文件中使用环境变量

    【讨论】:

      【解决方案3】:

      激活phpmyadmin,打开它你会在header中找到ip,取它并在OPENSHIFT_MYSQL_DB_HOST变量中替换它,端口是默认mysql:3306。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-07
        • 2018-10-22
        • 1970-01-01
        • 2018-02-24
        • 1970-01-01
        • 2016-01-17
        • 2021-09-18
        • 2017-06-12
        相关资源
        最近更新 更多