我将几个应用程序从 JBoss 4 迁移到 GlassFish 3.1.x。 每一个应用程序都使用相同的 API, 提供每个应用程序所使用的共同分类和界面。 请将其称为 < code> CoreAPI.jar 。
CoreAPI.jar
被放入 GlassFish 的 目录,并由普通类装载器装入。
现在让我们来说明,每个应用程序都从核心API (Version
) 中延伸一个类(不是抽象的) :
public class Version {
public String getVersion() { return null; }
}
getVersion ()
方法在几个地方的 API 内部调用,使用 API 的每个应用程序都负责扩展该类并提供类似版本:
public class MyAppVersion extends Version {
private static final String VERSION = "1.0";
@Override
public String getVersion() { return VERSION; }
}
当我在GlassFish, 被捆绑在战争或EAR中部署应用程序时,每当API调用父类getVersion ()
时, 我就会得到一个 java.lang.NullPointerException
- 它似乎找不到子类 。
如果 CoreAPI.jar
与 WAR捆绑, 从 目录中删除, 则该子类会是正确的, 但我无法这样做, 因为许多应用程序要求它作为共享库 。
我能让一个共享图书馆 在部署的应用程序里看到一个子类吗?
谢谢!
<强度 > 澄清: 强度 > 我无法更改核心API