从 GAE-JAVA-SDK-1.5.5 更新到 1.6.0 和 1.6.1 后,我的应用程序停止正常运行。它开始在 RPC 服务上给出错误。
Exception while dispatching incoming RPC call com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public abstract void com.skip.school.client.service.AdminService.addStudent(com.skip.school.shared.Student)' threw an unexpected exception: java.lang.NoClassDefFoundError: Could not initialize class com.skip.school.server.PmfSingleton
Caused by: java.lang.NoClassDefFoundError: Could not initialize class com.skip.school.server.PmfSingleton
整个日志可以在这里找到pastebin。
我有一个单例,当用户从那里开始第一次 rpc 调用时应该初始化它。我使用的单例应该是正确的,在 stackeroverflow 和网络上的任何地方都可以找到很多示例。
public final class PmfSingleton {
private final static PersistenceManagerFactory pmfInstance = JDOHelper.getPersistenceManagerFactory("transactions-optional");
private PmfSingleton() { }
public static PersistenceManagerFactory get() {
return pmfInstance;
}
}
我在我的所有服务器实现中都像这样调用该类。
PersistenceManager pm = PmfSingleton.get().getPersistenceManager();
这适用于 sdk 1.5.5 及更低版本,但不适用于 sdk 1.6.0 及更高版本,有谁知道我做错了什么,如果我想使用 sdk 1.6.0 及更高版本,我应该改变什么?