`
cosmo2097
  • 浏览: 20383 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

解决Jboss4.2.2 JNDI 资源无法找到的问题

阅读更多

由于最近网站一直出现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
&amp;password=pwd&amp;characterEncoding=UTF-8
&amp;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访问了。

希望对网上有同样问题的朋友有所帮助。

 

2
0
分享到:
评论

相关推荐

    JBOSS 4.2.2GA 使用指南

    **JBOSS 4.2.2GA 使用指南** JBOSS是一款开源的企业级Java应用服务器,基于Java 2企业版(J2EE)规范。JBOSS 4.2.2GA是其一个特定的稳定版本,发布于2007年,提供了一个全面的平台来部署和管理各种Java应用程序和...

    jboss-4.2.2

    【JBoss 4.2.2】是Java企业版服务器(Java Enterprise Edition,简称JEE)的一个重要版本,由Red Hat公司开发。这个版本在2007年发布,为...在实际操作中,还可能遇到更多具体问题,需要查阅官方文档或社区资源来解决。

    jboss配置MySql的JNDI

    本文将深入解析如何在JBoss中配置MySQL的JNDI数据源,确保应用程序能够高效、稳定地访问数据库资源。 ### JBoss与JNDI的关联 JBoss作为一个高性能的Java应用服务器,提供了丰富的功能支持企业级应用开发。JNDI作为...

    jboss-4.2.3

    10. **社区支持**:JBoss是由开源社区驱动的,这意味着有大量的在线资源、论坛讨论和社区支持,用户可以快速解决问题和获取最新资讯。 在文件名“jbos-4.2.3.GA”中,GA表示“General Availability”,意味着这个...

    在jboss上部署web应用

    安装JBoss非常简单,只需将下载的压缩包解压到指定的目录,例如F:\java\test\jboss-4.2.2.GA。解压后,你会看到JBoss的目录结构,包括以下几个关键部分: - bin目录:包含了启动和关闭服务器的脚本,如run.jar和...

    JBOSS安装配置

    本篇文档将详细讲解在CentOS 5.4系统上安装和配置JBoss 4.2.2.GA版本的过程,以及一些基本的操作和配置调整。 首先,确保系统满足必要的软件需求,即CentOS 5.4操作系统、Java Development Kit (JDK) 6.0版本。在...

    JBOSS使用指南

    为了运行JBoss 4.2.2GA,开发者需要安装Java 5虚拟机,并确认`JAVA_HOME`环境变量已经正确设置。 - **下载**: 用户可以从JBoss官方网站(http://www.jboss.org/jbossas/downloads/)免费下载JBoss应用服务器。提供的...

    JBOSS_Operating_Guide.doc

    - 对于JBoss 4.2.2 GA,必须配备Java 5 虚拟机。 - 需要正确设置JAVA_HOME环境变量。 **下载来源:** - 官方网站:[http://www.jboss.org/jbossas/downloads/](http://www.jboss.org/jbossas/downloads/) - 可下载...

    openacs的部署与使用(详细图文教程)

    JBOSS_HOME=/opt/jboss-4.2.2.GA export PATH JAVA_HOME CLASS_PATH JBOSS_HOME 知识点二:环境变量的设置 设置环境变量后,需要使用source /etc/bash.bashrc命令来更新环境变量,然后使用java -version命令来查看...

    ubuntu环境下搭建OpenACS手册.docx

    在本文中,我们将详细介绍如何在Ubuntu环境中搭建OpenACS服务器,这是一种基于TR069协议管理CPE(Customer Premises Equipment)的轻量级ACS(Auto Configuration Server)解决方案。OpenACS是开源且免费的,适用于...

    揭开J2EE集群的面纱 pdf

    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.其他的...

    openacs的搭建方法

    下载JBoss 4.2.2.GA并设置环境变量JBOSS_HOME指向安装目录。 - **MySQL数据库**:OpenACS需要MySQL作为其数据存储。下载适合Windows的MySQL安装包,并根据提示进行安装。如果遇到问题,记得清理遗留的配置文件夹。 ...

    java EJB3实现三种Bean设计文档.doc

    - **配置数据库JNDI**:JNDI(Java Naming and Directory Interface)用于查找和绑定资源。在这个例子中,配置了一个名为`EricDs`的数据源,连接到本地MySQL数据库`j2ee`,并设置了相应的数据库连接信息。 - **JMS...

    EntityBean配置过程.txt

    1. **拷贝配置文件**: 将位于`jboss-4.2.2.GA\docs\examples\jca\oracle-ds.xml`的数据源配置文件`oracle-ds.xml`复制到`jboss-4.2.2.GA\server\all\deploy`目录下。 - **配置内容**: - `&lt;jndi-name&gt;`: 数据源的...

    J2EE集群.pdf

    - **4.2.4 WebLogic, WebSphere, JBoss的方案:结对服务器(Paired servers)复制**:通过结对服务器之间的复制来实现会话数据的共享。 - **4.2.5 IBM的方案:集中状态服务器**:使用一台专门的服务器来存储和管理...

Global site tag (gtag.js) - Google Analytics