由于最近网站一直出现Connection cannot open的问题,所以决定更换默认的Hibernate数据源。
方式有很多,可以考虑Hibernate推荐的连接池c3p0或者proxool,虽然dbcp也比较有名,但由hiberater已不对其进行支持所以也没有考虑,据说是因为Bug太多,具体也没去验证。
首先尝试了proxool,配置好后Connection cannot open的问题的确解决,但是proxool对spring的支持貌似存在一些问题,一些int型的参数不能在spring中注入。
配置文件如下:
<bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="driverUrl" value="jdbc:mysql://localhost:3306/test?user=msyql
&password=pwd&characterEncoding=UTF-8
&zeroDateTimeBehavior=convertToNull" />
<property name="user" value="mysql" />
<property name="password" value="pwd" />
<property name="alias" value="test" />
<property name="houseKeepingTestSql" value="select CURRENT_DATE" />
</bean>
如果设置了maxConnection这些int型的参数spring会报类型转换错误,为了通过检测所以都删掉了,但这样的配置不会有很好的效果。
经过一些考虑,用第三方的数据源,不如使用jboss自带的连接池,所以开始配置jndi:
配置步骤如下:
1、拷贝$JBOSS_HOME/docs/examples/jca/mysql-ds.xml到$JBOSS_HOME/server/default/deploy/mysql-ds.xml
由于我是用的是mysql数据库,所以拷贝了mysql-ds.xml,其他数据库拷贝对应的文件。
2、拷贝好文件后对mysql-ds.xml进行配置,方法比较简单,这里就不贴代码了。
但配置中加了几个元素
<min-pool-size>5</min-pool-size> 最小连接数
<max-pool-size>100</max-pool-size> 最大连接数
3、拷贝mysql驱动到jboss的lib下,否则启动加载时会报错
4、修改spring配置文件
由于spring提供了对jndi的支持,所以配置比较简单,但是实现的类要写对。代码如下:
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:/MySqlDS"/>
<property name="lookupOnStartup" value="true"/>
</bean>
这里的jndiName要和mysql-ds.xml中配置的jndiName对应,但是名字前要加上java:/
到这里配置基本结束了,启动jboss看是否运行正常。
如果命令行中输出了:
Bound ConnectionManager 'jboss.jca:service=DataSourceBinding,name=MySqlDS' to JNDI name 'java:MySqlDS'
则说明jboss已经找到了这个jndi,但是意外的是spring在bind这个jndi的时候却抛出了MySqlDS没有找到的异常。
尝试按照完善的方法尝试了多个jndi的别名都无效,如MySqlDS 、java:MySqlDS 、java:comp/env/MySqlDS。
最后,只能先尝试在mysql-ds.xml中加入
<use-java-context>false</use-java-context> 这个参数默认为true,设置为false后可以使用MySqlDS直接访问 JNDI,所以再修改spring配置文件为
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="MySqlDS"/>
<property name="lookupOnStartup" value="true"/>
</bean
这种方法的确可行。
但还是没有找到为什么不能用java:/MySqlDS的原因,而且<use-java-context>false</use-java-context>存在着一定的安全隐患。所以我们来看看为什么使用java:/MySqlDS无法绑定。
经过了一系列的折腾,最后发现竟然是一个jboss-archive-browsing.jar的包造成的,所以删掉lib中的这个包后就能正常用java:/MySqlDS访问了。
希望对网上有同样问题的朋友有所帮助。
分享到:
相关推荐
**JBOSS 4.2.2GA 使用指南** JBOSS是一款开源的企业级Java应用服务器,基于Java 2企业版(J2EE)规范。JBOSS 4.2.2GA是其一个特定的稳定版本,发布于2007年,提供了一个全面的平台来部署和管理各种Java应用程序和...
【JBoss 4.2.2】是Java企业版服务器(Java Enterprise Edition,简称JEE)的一个重要版本,由Red Hat公司开发。这个版本在2007年发布,为...在实际操作中,还可能遇到更多具体问题,需要查阅官方文档或社区资源来解决。
本文将深入解析如何在JBoss中配置MySQL的JNDI数据源,确保应用程序能够高效、稳定地访问数据库资源。 ### JBoss与JNDI的关联 JBoss作为一个高性能的Java应用服务器,提供了丰富的功能支持企业级应用开发。JNDI作为...
10. **社区支持**:JBoss是由开源社区驱动的,这意味着有大量的在线资源、论坛讨论和社区支持,用户可以快速解决问题和获取最新资讯。 在文件名“jbos-4.2.3.GA”中,GA表示“General Availability”,意味着这个...
安装JBoss非常简单,只需将下载的压缩包解压到指定的目录,例如F:\java\test\jboss-4.2.2.GA。解压后,你会看到JBoss的目录结构,包括以下几个关键部分: - bin目录:包含了启动和关闭服务器的脚本,如run.jar和...
本篇文档将详细讲解在CentOS 5.4系统上安装和配置JBoss 4.2.2.GA版本的过程,以及一些基本的操作和配置调整。 首先,确保系统满足必要的软件需求,即CentOS 5.4操作系统、Java Development Kit (JDK) 6.0版本。在...
为了运行JBoss 4.2.2GA,开发者需要安装Java 5虚拟机,并确认`JAVA_HOME`环境变量已经正确设置。 - **下载**: 用户可以从JBoss官方网站(http://www.jboss.org/jbossas/downloads/)免费下载JBoss应用服务器。提供的...
JBOSS_HOME=/opt/jboss-4.2.2.GA export PATH JAVA_HOME CLASS_PATH JBOSS_HOME 知识点二:环境变量的设置 设置环境变量后,需要使用source /etc/bash.bashrc命令来更新环境变量,然后使用java -version命令来查看...
在本文中,我们将详细介绍如何在Ubuntu环境中搭建OpenACS服务器,这是一种基于TR069协议管理CPE(Customer Premises Equipment)的轻量级ACS(Auto Configuration Server)解决方案。OpenACS是开源且免费的,适用于...
4.2.4.WebLogic, WebSphere, JBoss的方案:结对服务器(Paired servers)复制 4.2.5.IBM的方案:集中状态服务器 4.2.6.Sun的方案:专用服务器 4.2.7.性能问题 4.2.7.1.何时备份会话 4.2.7.2.备份颗粒度 4.2.8.其他的...
下载JBoss 4.2.2.GA并设置环境变量JBOSS_HOME指向安装目录。 - **MySQL数据库**:OpenACS需要MySQL作为其数据存储。下载适合Windows的MySQL安装包,并根据提示进行安装。如果遇到问题,记得清理遗留的配置文件夹。 ...
- **配置数据库JNDI**:JNDI(Java Naming and Directory Interface)用于查找和绑定资源。在这个例子中,配置了一个名为`EricDs`的数据源,连接到本地MySQL数据库`j2ee`,并设置了相应的数据库连接信息。 - **JMS...
1. **拷贝配置文件**: 将位于`jboss-4.2.2.GA\docs\examples\jca\oracle-ds.xml`的数据源配置文件`oracle-ds.xml`复制到`jboss-4.2.2.GA\server\all\deploy`目录下。 - **配置内容**: - `<jndi-name>`: 数据源的...
- **4.2.4 WebLogic, WebSphere, JBoss的方案:结对服务器(Paired servers)复制**:通过结对服务器之间的复制来实现会话数据的共享。 - **4.2.5 IBM的方案:集中状态服务器**:使用一台专门的服务器来存储和管理...