Не удалось инициализировать класс com.sample.PMF (движок приложений Google)

Я получаю эту ошибку при попытке сохранить что-то в Datastore. Я пытался поискать, но ничего не получил. Это код, который я сохраняю в хранилище данных:

    Student temp = null;
    PersistenceManager pm = PMF.get().getPersistenceManager();
    try {
        Student stu = new Student(name);
        temp = pm.makePersistent(stu);
    } finally {
        pm.close();
    }
    return temp;

Любая информация по этому поводу приветствуется!

РЕДАКТИРОВАТЬ: добавление трассировки стека:

Трассировка стека не очень помогла, но одна из причин отказа от инициализации PersistenceManagerFactory заключается в том, что ей не удалось найти единицу сохранения состояния, которую вы указали в методе

    Student temp = null;
    PersistenceManager pm = PMF.get().getPersistenceManager();
    try {
        Student stu = new Student(name);
        temp = pm.makePersistent(stu);
    } finally {
        pm.close();
    }
    return temp;
.


person RubyDubee    schedule 29.07.2010    source источник
comment
Добавлено ... у класса DBManager есть этот статический метод saveStudent ... это первая строка в моем jsp, и я получаю эту ошибку.   -  person naikus    schedule 29.07.2010
comment
Есть ли jdoconfig.xml в вашем пути к классам?   -  person RubyDubee    schedule 29.07.2010


Ответы (2)


например Если ваш метод PMF get() выглядит так:

Затем у вас должен быть jdoconfig.xml в пути к классам (например, WEB-INF / classes), который определяет блок сохранения состояния следующим образом: (с тем же именем, которое вы использовали в getPersistenceManagerFactory). В этом случае "транзакции-необязательные"

public static synchronized PersistenceManagerFactory get() {
    if(pmfInstance == null)  {
        pmfInstance = JDOHelper.getPersistenceManagerFactory(
              "transactions-optional");
    }
    return pmfInstance;
}

Решено: я вызывал приведенный выше код из статического метода, теперь я сделал его методом экземпляра, и он сработал. но все еще запутались?

    <persistence-manager-factory name="transactions-optional">
        <property name="javax.jdo.PersistenceManagerFactoryClass" value="org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory"/>
        <property name="javax.jdo.option.ConnectionURL" value="appengine"/>
        <property name="javax.jdo.option.NontransactionalRead" value="true"/>
        <property name="javax.jdo.option.NontransactionalWrite" value="false"/>
    </persistence-manager-factory>
person naikus    schedule 29.07.2010
comment
Я попробовал пример приветствия из Google, и он сработал! но мой проект выдает эту ошибку ... один быстрый вопрос: мой метод saveStudent (name) статичен: имеет ли это значение? - person naikus; 30.07.2010
comment
в com.sample.dbops.DBManager.saveStudent (DBManager.java:18) в org.apache.jsp.index_jsp._jspService (index_jsp.java:64) в org.apache.jasper.runtime.HttpJspBase.service (HttpJspBase : 94) на javax.servlet.http.HttpServlet.service (HttpServlet.java:806) на org.apache.jasper.servlet.JspServletWrapper.service (JspServletWrapper.java:324) на org.apache.jasspervlet.jasper.servlet. serviceJspFile (JspServlet.java:292) в org.apache.jasper.servlet.JspServlet.service (JspServlet.java:236) в com.google.appengine.tools.development.PrivilegedJspServlet.access $ 101 (Privileged.jspava:23) com.google.appengine.tools.development.PrivilegedJspServlet $ 2.run (PrivilegedJspServlet.java:59) в java.security.AccessController.doPrivileged (собственный метод) в com.google.appengine.tools.development.PrivilegedJspServlet.JspServlet.Java. java: 57) на javax.servlet.http.HttpServlet.service (HttpServlet.java:806) на org.mortbay.jetty.servlet.ServletHold er.handle (ServletHolder.java:487) в org.mortbay.jetty.servlet.ServletHandler.handle (ServletHandler.java:362) в org.mortbay.jetty.security.SecurityHandler.handle (SecurityHandler.java:216) в org .mortbay.jetty.servlet.SessionHandler.handle (SessionHandler.java:181) в org.mortbay.jetty.handler.ContextHandler.handle (ContextHandler.java:712) в org.mortbay.jetty.webapp.WebAppContext.handle (WebAppContext.handle (WebAppContext.handle) .java: 405) на com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle (DevAppEngineWebAppContext.java:54) на org.mortbay.jetty.servlet.Dispatcher.forward (Dispatcher.java:268) на org.mortbay. jetty.servlet.Dispatcher.forward (Dispatcher.java:126) на com.google.appengine.tools.development.StaticFileUtils.serveWelcomeFileAsForward (StaticFileUtils.java:80) на com.google.appengine.tools.development.LocalResourceFileServlet ( LocalResourceFileServlet.java:251) в com.google.appengine.tools.development.LocalResourceFileServlet. .doGet (LocalResourceFileServlet.java:117) в javax.servlet.http.HttpServlet.service (HttpServlet.java:693) в javax.servlet.http.HttpServlet.service (HttpServlet.java.Mortbase. servlet.ServletHolder.handle (ServletHolder.java:487) по адресу org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter (ServletHandler.java:1093) по адресу com.google.apphosting.utils.servlet.TransactionCleanup. java: 43) на org.mortbay.jetty.servlet. ServletHandler $ CachedChain.doFilter (ServletHandler.java:1084) в com.google.appengine.tools.development.StaticFileFilter.doFilter (StaticFileFilter.java:124) в org.mortbay.jetty.servlet.ServletChaler. java: 1084) в org.mortbay.jetty.servlet.ServletHandler.handle (ServletHandler.java:360) в org.mortbay.jetty.security.SecurityHandler.handle (SecurityHandler.java:216) в org.mortbay.jetty.servlet .SessionHandler.handle (SessionHandler.java:181) в org.mortbay.jetty.handler.ContextHandler.handle (ContextHandler.java:712) в org.mortbay.jetty.webapp.WebAppContext.handle (WebAppContext.java:405) в com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle (DevAppEngineWebAppContext.java:54) по адресу org.mortbay.jetty.handler.HandlerWrapper.handle (HandlerWrapper.java:139) по адресу com.google.appengine.tools.development. JettyContainerService $ ApiProxyHandler.handle (JettyContainerService.java:313) в org.mortbay.jetty.handler .HandlerWrapper.handle (HandlerWrapper.java:139) в org.mortbay.jetty.Server.handle (Server.java:313) в org.mortbay.jetty.HttpConnection.handleRequest (HttpConnection.java:506) в org.mortbay. jetty.HttpConnection $ RequestHandler.headerComplete (HttpConnection.java:830) в org.mortbay.jetty.HttpParser.parseNext (HttpParser.java:514) в org.mortbay.jetty.HttpParser2.parseA .mortbay.jetty.HttpConnection.handle (HttpConnection.java:381) на org.mortbay.io.nio.SelectChannelEndPoint.run (SelectChannelEndPoint.java:396) на org.mortbay.thread.BoundedThreadPool (Pool.java). : 442) - person RubyDubee; 30.07.2010

Трассировка стека была бы полезна

person RubyDubee    schedule 05.08.2010