怎么在jboss下配置classloader?我的一个jar和jboss自带的jar冲突了,我不想用它的,可每次系统总是先找到它

04-04-27 一线阳光
就是castor.jar,主要是我把它的源码扩展为我所需要的,因为有些它不太符合我的要求

我的castor.jar和app在一个ear目录下。我试着在ear的meta-inf目录下添加jboss-app.xml文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE jboss-app PUBLIC "-//JBoss//DTD J2EE Application 1.3V2//EN" "http://www.jboss.org/j2ee/dtd/jboss-app_3_2.dtd">

<jboss-app>

<loader-repository>ItsSoapServer:loader=ItsSoapServer.ear</loader-repository>

<module>

<service>itscastor.jar</service>

</module>

</jboss-app>

ItsSoapServer.ear是我的app,itscastor.jar就是我更改castor后重新打的jar

可是发布出错了

org.jboss.deployment.DeploymentException: - nested throwable: (java.lang.ClassCastException)

希望得到大家指点!非常感谢!

廉价劳力
2004-04-29 08:34
你可以把自己的文件覆盖jboss的,这样比较危险。

其他办法没有,jboss永远是parent ClassLoader first;不像websphere可以设置parent first或者parent last。

huzhigang
2004-04-29 09:03
jboss提供了.sar的部署形式,好像可以在.sar里面设置

一线阳光
2004-04-29 10:51
改好了。用了最笨的办法,就是把自己更改的itscastor.jar改得更彻底了,把包名哗啦哗啦全部都改了,这样jboss就不会找他自带castor.jar,而找我的itscastor.jar了^_^

但更改过程其实也满艰辛得:( 先是在jboss3.2.3下运行,但老是会报refect错误,认真得检查了一下打的包结构:我把itscastor.jar放在跟引用它的wsr包放在同一层,但wsr的么meta-info文件的class-path也指定了itscastor.jar,似乎是没错,但运行起来总会报那个错。绝望之下,换到jboss3.3.2版本下,奇迹发生了,没问题!唉,不知道是我的错还是jboss3.2.3在loader方面和3.2.2又有很大差别?

根据我查的一些相关资料,好像是sar可以更改loader顺序,但我的是ear包,怎么放在sar下呢。我曾经做过试验,建立一个sar,把itscastor.jar放到里面,然后在jboss-app.xml里指定改sar,但报错说找不到该sar,就不知道咋整了,时间关系也就不在深究了

猜你喜欢