JBoss 5.x 的类路径检查非常严格,尤其是一些类库如Hibernate,xerces解析器在加载的时候,一旦有重复包存在,程序就会发生怪事,具体何种怪事则依情况而定,总之原则是你的程序一定跑不起来。
手头有个项目,构建原型的时候图方便,就暂时使用tomcat6做服务器,因为采用的是比较基本的ajax + servlet/jsp + javaBean 的架构,所以tomcat用起来还是相当顺手的。最近由于一些很无奈的原因,项目匆匆进入生产部署阶段,需要跟公司的产品集成并一齐部署在JBoss 5.1GA 上,麻烦开始接踵而至。
刚把JBoss注册进IDE(NetBeans6.5.1) 就立刻感到了一些不爽,首先是servlet-api和jasper库文件在JBoss的/common/lib 下面,NetBeans找不到(经过测试,即使是6.7的NB也不行),所以servlet的源文件开始时都无法编译,并且jsp在编辑的时候都不能即时编译,也就无法报错和代码提示,相当烦人。别无他法,只好手动从common/lib里把这几个缺席的哥们补上,当然,这些手动添加的库文件是JBoss里已经有了的,所以要在该新添库的右边把“package”的勾选去掉,负责项目加载的时候又将出现一个重复包引发的血案。
项目的DAO层使用Hibernate3.2实现,这里必须要注意的是,JBoss是自带Hibernate的绝大多数库文件的,所以IDE引入的Hibernate相关库绝对不能随着项目打包,做法同上,把“package”的勾选去掉即可。我曾被这个问题困扰,因为将Hibernate打进war包的结果就是JBoss将在程序运行的时候报出下面的错误信息:
org.jboss.resource.adapter.jdbc.WrapperDataSource cannot be cast to javax.sql.DataSource
这个错误信息很能迷惑人,因为它似乎跟你说数据库的驱动有问题,事实上在很多情况下这个错误就是源自驱动包重复,有一些人在部署项目的时候把数据库驱动也打包了,而JBoss服务器已经存在了一个同样的包。可是Hibernate的存在怎么也能出现这样的问题呢,请注意,产生以上错误信息的代码只是一段极为简单的纯JDBC代码:
InitialContext initialContext = new InitialContext();
DataSource ds = (DataSource) envContext.lookup("java:jdbc/MySqlDS");
Connection conn = ds.getConnection();
......
这段代码跟Hibernate毫无关系,居然是背后的罪魁祸首。要知道,同样的代码在JBoss4.23中部署绝无问题,JBoss5确实太严格了。
最后一个小问题,在配置数据源的时候,假如在mysql-ds.xml里定义的jndi是“jdbc/MySqlDS",那么默认情况下数据源的jndi会被注册成“java:jdbc/MySqlDS”,这在控制台里观察JBoss启动信息的时候可以观察到,但是如果你在配置时多写一行:
<local-tx-datasource>
......
<use-java-context>false</use-java-context>
......
</local-tx-datasource>
那么lookup的时候只需要"jdbc/MySqlDS"就行了。
分享到:
相关推荐
JBOSS 是一个基于 Java 的开源应用服务器,可以运行在 Windows、Linux、Unix 等多种操作系统平台上。为了在 Windows 下安装和配置 JBOSS,我们需要按照以下步骤进行操作。 安装 JAVA 环境 首先,我们需要安装 JAVA...
JBoss 5.1 是一个基于 Java 的应用服务器,提供了高度可扩展性和高可用性,支持集群部署。集群操作能够使多个 JBoss 实例协同工作,以提高应用程序的性能和容错能力。Apache 2.2.4 是一个常用的开源 Web 服务器,它...
3. 创建数据源步骤:配置JBoss服务器以使用Mysql5.1数据源包括以下步骤: - 配置JBoss的数据源JNDI名称。 - 在JBoss配置文件中添加数据库连接驱动信息。 - 设置数据库连接信息,包括URL、用户名和密码。 - 配置...
除了加入jboss-web.xml,删除xerces-2.6.2.jar和xml-apis.jar之外, <!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web ...原因是旧版本的slf4j-api不包含以上方法,附件解压后覆盖jboss5.1GA/common/lib下的同名文件即可
在IT行业中,服务器和应用服务器的配置是至关重要的,尤其是...提供的压缩包文件"jboss4.0 配置.txt"和"tomcat5.5配置Oracle数据源.txt"应该包含了详细的步骤和可能遇到的问题,读者可以通过这些文件深入学习和实践。
【JBoss 5.1】是一个基于Java EE 5规范的开源应用服务器,它为EJB提供了运行环境。EJB可以在JBoss中部署并运行,实现业务逻辑,与数据库交互,以及其他企业级服务。JBoss 5.1版本支持EJB 3.0规范,该规范简化了EJB的...
jboss配置数据源是指在jboss服务器上配置oracle数据库的数据源,以便在jboss应用程序中使用oracle数据库。下面是jboss配置数据源的详细步骤: 首先,需要将oracle的JDBC驱动程序复制到ClassPath下,通常是将其复制...
总结,JBoss作为一款强大的Java应用服务器,提供了丰富的J2EE服务和高级特性,其安装、配置和部署过程相对简单,适合开发和部署各种企业级应用。通过理解和掌握这些基础知识,开发者能够更有效地利用JBoss来构建和...
本文将详细介绍如何在 JBoss 中配置 Oracle 数据源,包括复制配置文件、编辑配置文件、设置数据源参数等步骤。 一、复制配置文件 首先,我们需要将 %JBOSS_HOME%\docs\examples\jca\oracle-ds.xml 复制到 %JBOSS_...
在JBoss中配置多个数据库和数据源是非常复杂的,因为JBoss是一款非常强大的J2EE应用程序服务器。配置多个数据库和数据源需要了解JBoss的配置选项和数据源的配置信息。 首先,需要了解JBoss的配置选项。JBoss的默认...
本文将详细介绍如何解决JBoss 5.0.1 GA中的端口配置问题,避免与Oracle和Java EE应用的端口冲突。 #### 二、端口冲突的原因及影响 端口冲突通常发生在多服务共存的环境中,当两个或多个服务尝试绑定到同一个端口时...
4. **数据库连接**:如果应用需要数据库支持,你需要配置JDBC驱动和数据源。这通常涉及在`server/default/conf/jboss-service.xml`或`jboss-web.xml`中添加相关配置。 ### 开发EJB 1. **EJB基础**:EJB...
在EJB 3.0规范中,数据源的配置是必不可少的一部分,尤其是在像JBOSS这样的应用服务器中。本文将深入探讨如何在JBOSS中配置EJB 3.0的数据源。 首先,我们需要理解JBOSS的数据源概念。数据源是JNDI(Java Naming and...
在JBoss中配置MySQL数据源是开发Java EE应用程序时的重要步骤,这允许应用与数据库进行交互。下面将详细介绍如何在JBoss 7.1.1中配置MySQL数据源。 首先,我们需要准备MySQL数据库的相关信息,包括数据库URL、...
总的来说,"jboss-web-2.1.0.GA.zip"是一个便于开发和部署Java EE应用的Web容器,它为开发者提供了可靠的平台来构建、测试和运行基于Servlet和JSP的应用程序。虽然这个版本相对较老,但对于学习和理解Web服务器的...
配置JBoss应用服务器配置JBoss应用服务器配置JBoss应用服务器配置JBoss应用服务器配置JBoss应用服务器配置JBoss应用服务器配置JBoss应用服务器配置JBoss应用服务器配置JBoss应用服务器配置JBoss应用服务器配置JBoss...
`WEB-INF`是一个特殊目录,包含了Web应用的配置文件、类文件以及库文件等,JBoss服务器在部署应用时会读取这些文件。 3. **部署应用**:将整个WEB应用(包括`WEB-INF`目录和`jboss-web.xml`)打包成WAR文件,然后将...