首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >环境变量在servlet.xml中不会在JBoss下扩展

环境变量在servlet.xml中不会在JBoss下扩展
EN

Stack Overflow用户
提问于 2013-09-03 18:23:18
回答 1查看 1.2K关注 0票数 1

问题:当我在上下文XML中嵌入环境变量时,它们是在本地运行时展开的。但是当我在OpenShift上部署时,它们就没有了。他们决心要空。

配置: web.xml:

代码语言:javascript
复制
<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/springapp.xml</param-value>
</context-param>

springapp.xml:

代码语言:javascript
复制
<bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://#{systemProperties['OPENSHIFT_MYSQL_DB_HOST']}:#{systemProperties['OPENSHIFT_MYSQL_DB_PORT']}/prepare?characterEncoding=UTF-8"/>
        <property name="username"  value="AAA"/>
        <property name="password" value="BBB"/>
</bean>

pom.xml:

  • 春季版本3.2.0

地方发展环境:

  • Intellij (配置中设置的环境变量)
  • Tomcat7

OpenShift环境:

  • Tomcat 7 (JBoss EWS 2.0)
  • 由OpenShift设置的环境变量。我用'env‘命令确认了值。 OPENSHIFT_MYSQL_DB_PORT=3306 OPENSHIFT_MYSQL_DB_HOST=127.3.xxx.yyy

OpenShift上的消息(注意服务器和端口为null):

'jdbc:mysql://:/prepare?characterEncoding=UTF-8‘:无法为连接URL org.apache.commons.dbcp.SQLNestedException创建类com.mysql.jdbc.Driver的JDBC驱动程序

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-04 15:11:07

我为本地开发和OpenShift JBoss配置的解决方案。

我终于放弃了扩展env变量的尝试。与直猫一起工作很好,但与JBoss完全没有关系。所以我改用了南的方法。

正如Nam所说,OpenShift在context.xml中创建了正确的jdbc。所以我在本地的机器上也需要同样的东西。我在/usr/local/Cellar/tomcat/7.0.39/libexec/conf/context.xml:中复制了这个

代码语言:javascript
复制
<Resource name="jdbc/MysqlDS"
              url="jdbc:mysql://localhost:3306/prepare?characterEncoding=UTF-8"
              driverClassName="com.mysql.jdbc.Driver"
              username="AAA"
              password="BBB"
              auth="Container"
              type="javax.sql.DataSource"
              maxActive="20"
              maxIdle="5"
              maxWait="10000"
              />

然后我将<bean id=datasource...从springapp.xml中删除。

最后,我将sessionFactory的sessionFactory属性更改为:

代码语言:javascript
复制
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="dataSource">
        <bean class="org.springframework.jndi.JndiObjectFactoryBean">
            <property name="jndiName" value="jdbc/MysqlDS"/>
            <property name="resourceRef" value="true"/>
        </bean>
    </property>
    <property name="packagesToScan" value="com.xxx.yyy.zzz"/>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect"> org.hibernate.dialect.MySQLMyISAMDialect</prop>
            <prop key="hibernate.show_sql">false</prop>
        </props>
    </property>
</bean>

现在,tomcat的context.xml负责本地配置。spring定义具有适当的信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18599025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档