在EJB的war dep中引用类时的ClassNotFound

时间:2013-04-01 17:57:18

标签: websphere ejb-3.0

我在战争中上课......

SomeClass.java

这个类嵌入到一个嵌入耳中的战争中。此外,嵌入在耳中的是一个EJB类,它引用了战争中的一个类(而不是我的设计)。这个类显然存在,我可以在已部署的WS应用程序中看到它。 ear文件如下所示......

ear file
  META-INF
  war file <Where the .class is found>
  ejb jar file

但我仍然在SomeClass上得到一个ClassNotFound异常,任何人都可以想到我缺少的东西吗?这是非常古老的版本,所以我必须在ejb jar中的META-INF中设置类路径,即使jar是在爆炸的战争中吗?

由于

3 个答案:

答案 0 :(得分:0)

OMG这真的很乱。很高兴这不是你的设计。如您所知,EJB类永远不应该依赖于war文件中的库或类。如果你需要你的类“SomeClass.java”可用于war和ejb.jar包,那么你应该构建第三个带有类的standard.jar文件,并将它放在ear / lib文件夹下你的包裹。这应该使类可用于两个包,.war和.jar(ejb)文件。

答案 1 :(得分:0)

由于您使用的是WebSphere,因此您可能需要尝试将WAR类加载器策略设置为“Application”,如以下文档中所述:

http://pic.dhe.ibm.com/infocenter/wasinfo/v7r0/topic/com.ibm.websphere.express.doc/info/exp/ae/crun_classload.html

这将为整个应用程序创建单个类加载器,即EJB和WAR中的类将由同一个类加载器加载。这应该可以解决你的问题。

答案 2 :(得分:0)

在EAR文件结构下创建一个lib文件夹,并复制所有要用作WAR和EJB共用的jar文件。这应该可以解决问题。