如何解决Websphere中wsjar的问题
2010-09-27 08:17:32 来源:WEB开发网将该代码片断放在websphere某个应用的某个jsp文件中,执行该页面时就会报如下的错误:
[06-4-18 14:31:03:500 CST] 73068638 Digester E org.apache.commons.digester.Digester Begin event threw exception
[06-4-18 14:31:03:516 CST] 73068638 Digester E org.apache.commons.digester.Digester TRAS0014I: 下列异常已记录
org.apache.commons.configuration.ConfigurationException: java.lang.NullPointerException
at org.apache.commons.configuration.AbstractFileConfiguration.load(AbstractFileConfiguration.java:283)
我们在出错之前,如果将此时的url打印出来,结果URL是以wsjar:开头的一个形式。我们此时只需做如下简单的转换,就可以让代码正常工作:
URL url = PropertyGetter.class.getClassLoader().getResource("myconfig.xml");//你将myconfig.xml打在某个jar包中
//加入url转化代码
String urlStr=url.toString();
if(urlStr.startsWith("wsjar:"){
urlStr=urlString.substring(2);
url=new URL(urlStr);
}
//转转换结束
factory.setConfigurationURL(url);
现在你应该明白了,为什么会在websphere中报wsjar有关的错误了吧。也许你会说,只要我们自己写代码时将wsjar的情况考虑进去不就可以避免了吗?是的,如果我们自己的应用考虑到了wsjar的情况,那么只能说我们自己的代码在websphere运行不会出现类似的问题,但是在许多情况下,我们所使用的开源技术的在很多情况下也会使用 XXXClass.class.getClassLoader().getResource("xxx.properties")的形式,那么如果他们自己没有考虑wsjar的情况,那么他们内部就会报出wsjar相关的错误,这样整个应用也往往因此而启动失败。
编缉推荐阅读以下文章
- 使用 WebSphere Process Server 修复流程
- 设置并置 WebSphere Application Server 负载均衡器和内容主机
- 利用 WebSphere Application Server 6.1 构建 SIP 集群应用环境及其性能调优
- WebSphere Process Server V6.0.2 集群,第 1 部分:了解拓扑
- 如何实现WebSphere Application Server 6集群环境下的定时服务
- 迁移集群环境中的 WebSphere Commerce
- WebSphere Process Server V6.0.2 集群,第 2 部分:安装和配置 WebSphere Process Server 集群
- Websphere MQ v6集群的负载均衡新功能
- 将 JUnit 插件集成到 WebSphere Studio 中
- 使用 IBM WebSphere MQ JMS 提供程序
更多精彩
赞助商链接