JBoss 5.1 GA 配置Web应用包括数据源在内的一系列问题

本文分享了在JBoss5.x环境下部署应用遇到的问题及解决方法,包括类路径冲突、servlet-api和jasper库文件缺失等问题。还介绍了如何正确配置数据源避免常见错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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"就行了。
资源下载链接为: https://pan.quark.cn/s/1bfadf00ae14 “STC单片机电压测量”是一个以STC系列单片机为基础的电压检测应用案例,它涵盖了硬件电路设计、软件编程以及数据处理等核心知识点。STC单片机凭借其低功耗、高性价比和丰富的I/O接口,在电子工程领域得到了广泛应用。 STC是Specialized Technology Corporation的缩写,该公司的单片机基于8051内核,具备内部振荡器、高速运算能力、ISP(在系统编程)和IAP(在应用编程)功能,非常适合用于各种嵌入式控制系统。 在源代码方面,“浅雪”风格的代码通常简洁易懂,非常适合初学者学习。其中,“main.c”文件是程序的入口,包含了电压测量的核心逻辑;“STARTUP.A51”是启动代码,负责初始化单片机的硬件环境;“电压测量_uvopt.bak”和“电压测量_uvproj.bak”可能是Keil编译器的配置文件备份,用于设置编译选项和项目配置。 对于3S锂电池电压测量,3S锂电池由三节锂离子电池串联而成,标称电压为11.1V。测量时需要考虑电池的串联特性,通过分压电路将高电压转换为单片机可接受的范围,并实时监控,防止过充或过放,以确保电池的安全和寿命。 在电压测量电路设计中,“电压测量.lnp”文件可能包含电路布局信息,而“.hex”文件是编译后的机器码,用于烧录到单片机中。电路中通常会使用ADC(模拟数字转换器)将模拟电压信号转换为数字信号供单片机处理。 在软件编程方面,“StringData.h”文件可能包含程序中使用的字符串常量和数据结构定义。处理电压数据时,可能涉及浮点数运算,需要了解STC单片机对浮点数的支持情况,以及如何高效地存储和显示电压值。 用户界面方面,“电压测量.uvgui.kidd”可能是用户界面的配置文件,用于显示测量结果。在嵌入式系统中,用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值