1

データストアに何かを保存しようとすると、このエラーが発生します。検索しようとしましたが、何も得られませんでした。これは私がデータストアに保存しているコードです:

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

これに関するどんな種類の情報もありがたいです!

編集:スタックトレースの追加:

com.sample.dbops.DBManager.saveStudent(DBManager.java:18)at org.apache.jsp.index_jsp._jspService(index_jsp.java:64)at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java :94)javax.servlet.http.HttpServlet.service(HttpServlet.java:806)at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)atorg.apache.jasper.servlet.JspServlet。 serviceJspFile(JspServlet.java:292)at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)at com.google.appengine.tools.development.PrivilegedJspServlet.access $ 101(PrivilegedJspServlet.java:23)at com.google.appengine.tools.development.PrivilegedJspServlet $ 2.run(PrivilegedJspServlet.java:59)at java.security.AccessController.doPrivileged(Native Method)atcom.google.appengine.tools.development.PrivilegedJspServlet。service(PrivilegedJspServlet.java:57)at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)at org.mortbay.jetty .servlet.ServletHandler.handle(ServletHandler.java:362)at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181 )org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)atcom.google.apphosting.utils.jetty。 DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:54)at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:268)at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126)at com 。グーグル。appengine.tools.development.StaticFileUtils.serveWelcomeFileAsForward(StaticFileUtils.java:80)at com.google.appengine.tools.development.LocalResourceFileServlet.maybeServeWelcomeFile(LocalResourceFileServlet.java:251)atcom.google.appengine.tools.development.LocalResourceFileServlet。 doGet(LocalResourceFileServlet.java:117)at javax.servlet.http.HttpServlet.service(HttpServlet.java:693)at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)at org.mortbay.jetty.servlet .ServletHolder.handle(ServletHolder.java:487)at org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1093)at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java :43)org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1084)com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:124)at org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1084)at org.mortbay.jetty .servlet.ServletHandler.handle(ServletHandler.java:360)at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181 )org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)atcom.google.apphosting.utils.jetty。 org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)のDevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:54)(com.google.appengine.tools.development)。JettyContainerService $ ApiProxyHandler.handle(JettyContainerService.java:313)at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)at org.mortbay.jetty.Server.handle(Server.java:313)at org .mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:506)at org.mortbay.jetty.HttpConnection $ RequestHandler.headerComplete(HttpConnection.java:830)at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514 )org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint。 java:396)org.mortbay.thread.BoundedThreadPool $ PoolThread.run(BoundedThreadPool.java:442)HandlerWrapper.handle(HandlerWrapper.java:139)at org.mortbay.jetty.Server.handle(Server.java:313)at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:506)at org.mortbay.jetty .HttpConnection $ RequestHandler.headerComplete(HttpConnection.java:830)at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)atorg。 mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396)at org.mortbay.thread.BoundedThreadPool $ PoolThread.run(BoundedThreadPool.java: 442)HandlerWrapper.handle(HandlerWrapper.java:139)at org.mortbay.jetty.Server.handle(Server.java:313)at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:506)at org.mortbay.jetty .HttpConnection $ RequestHandler.headerComplete(HttpConnection.java:830)at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)atorg。 mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396)at org.mortbay.thread.BoundedThreadPool $ PoolThread.run(BoundedThreadPool.java: 442)HttpConnection $ RequestHandler.headerComplete(HttpConnection.java:830)at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)at org.mortbay .jetty.HttpConnection.handle(HttpConnection.java:381)at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396)at org.mortbay.thread.BoundedThreadPool $ PoolThread.run(BoundedThreadPool.java:442 )。HttpConnection $ RequestHandler.headerComplete(HttpConnection.java:830)at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)at org.mortbay .jetty.HttpConnection.handle(HttpConnection.java:381)at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396)at org.mortbay.thread.BoundedThreadPool $ PoolThread.run(BoundedThreadPool.java:442 )。BoundedThreadPool $ PoolThread.run(BoundedThreadPool.java:442)BoundedThreadPool $ PoolThread.run(BoundedThreadPool.java:442)

4

2 に答える 2

1

スタック トレースはあまり役に立ちませんでしたが、PersistenceManagerFactory を初期化しなかった理由の 1 つは、メソッドで指定した持続性ユニットが見つからなかったことですJDOHelper.getPersistenceManagerFactory(String)

たとえば、PMF のget()メソッドが次のようになっている場合:

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

次に、次のように持続性ユニットを定義するクラスパス (WEB-INF/classes など) に jdoconfig.xml が必要です (getPersistenceManagerFactory で使用したのと同じ名前)。この場合、「transactions-optional」

    <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>
于 2010-07-29T16:07:24.630 に答える
0

解決済み: 上記のコードを静的メソッドから呼び出していましたが、インスタンス メソッドにすると動作しました。しかし、まだ混乱していますか?

于 2010-08-05T20:43:25.043 に答える