我有一个运行在Glassfish 3.1.2.2上的EJB模块的EAR,它从SerializationUtils.clone
在EJB模块中包含的类上调用apache commons-lang
。 commons-lang打包在EAR文件的/lib
- 目录(<library-directory>
)中。我得到以下异常:
org.apache.commons.lang.SerializationException: java.lang.ClassNotFoundException :(要克隆的类)
如果我用自己的助手类模仿SerializationUtils.clone
并将该类放在/lib
下的jar中,也会发生同样的情况。如果我把我的助手类放在EJB模块中,一切都很好。
阅读Oracle GlassFish Server 3.1 Application Development Guide后说
Applib类加载器加载期间指定的库类 部署,用于特定的已启用模块或Java EE应用程序
这是否也包含EAR /lib
- 目录?如果是,它将解释上述CNF,或者是否有其他原因。问题what classloader loads the lib directory of an ear in websphere (or in general)?的答案似乎暗示在webspehere上,EJB模块和/ lib下的jar由同一个类加载器加载。