Are you trying to reference PMF in your client side GWT code? This won't
work. It has to be in your server side code. This is what the stack trace
seems to indicate.

If not, I'd say look to make sure PMF is in your classpath.

Ikai Lan
Developer Programs Engineer, Google App Engine
Blog: http://googleappengine.blogspot.com
Twitter: http://twitter.com/app_engine
Reddit: http://www.reddit.com/r/appengine



On Tue, Mar 8, 2011 at 4:58 PM, Laci <laszlo.bor...@gmail.com> wrote:

> Hi!
>
> I am trying to use the persistancemanagerfactory, and always get the
> following error.
> I have searched over the internet for solutions, nothing helped so far. Any
> help is welcome. I am getting lost.
>
> When I try to use the instance, I get the error.
> PersistenceManager pm = PMF.get().getPersistenceManager();
> try {
>  pm.currentTransaction().begin();
> pm.makePersistent(c);
> pm.currentTransaction().commit();
>  } catch (Exception ex) {
> pm.currentTransaction().rollback();
> throw new RuntimeException(ex);
>  } finally {
> pm.close();
> }
>
> PMF implementation:
>
> import javax.jdo.JDOHelper;
> import javax.jdo.PersistenceManagerFactory;
>
> public final class PMF {
>     private static PersistenceManagerFactory pmfInstance =
>         JDOHelper.getPersistenceManagerFactory("transactions-optional");
>
>     private PMF() {}
>
>     public static synchronized PersistenceManagerFactory get() {
>         if(pmfInstance == null)  {
>             pmfInstance = JDOHelper.getPersistenceManagerFactory(
>                   "transactions-optional");
>         }
>         return pmfInstance;
>     }
> }
>
> jdconfig.xml:
>
> <?xml version="1.0" encoding="utf-8"?>
> <jdoconfig xmlns="http://java.sun.com/xml/ns/jdo/jdoconfig";
>    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>    xsi:noNamespaceSchemaLocation="http://java.sun.com/xml/ns/jdo/jdoconfig
> ">
>
>    <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="true"/>
>        <property name="javax.jdo.option.RetainValues" value="true"/>
>        <property name="datanucleus.appengine.autoCreateDatastoreTxns"
> value="true"/>
>    </persistence-manager-factory>
> </jdoconfig>
>
> Error:
>
> [ERROR] javax.servlet.ServletContext log: Exception while dispatching
> incoming RPC call
> com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public
> abstract void
> com.reference.client.GreetingService.addCompany(com.reference.shared.Company)'
> threw an unexpected exception: java.lang.NoClassDefFoundError: Could not
> initialize class com.reference.server.PMF
>  at
> com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:378)
> at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:581)
>  at
> com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:207)
> at
> com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:243)
>  at
> com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
>  at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
> at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
>  at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
> at
> com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:58)
>  at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
> at
> com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
>  at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
> at
> com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122)
>  at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
> at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
>  at
> org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
> at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
>  at
> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
> at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
>  at
> com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)
> at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
>  at
> com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:349)
> at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
>  at org.mortbay.jetty.Server.handle(Server.java:326)
> at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
>  at
> org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:938)
> at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755)
>  at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
> at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
>  at
> org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
> at
> org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
> Caused by: java.lang.NoClassDefFoundError: Could not initialize class
> com.reference.server.PMF
> at
> com.reference.server.ContactImplPersistent.addCompany(ContactImplPersistent.java:59)
>  at
> com.reference.server.GreetingServiceImpl.addCompany(GreetingServiceImpl.java:24)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>  at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>  at java.lang.reflect.Method.invoke(Unknown Source)
> at
> com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:100)
>  at
> com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:562)
> ... 30 more
>
> --
> You received this message because you are subscribed to the Google Groups
> "Google App Engine for Java" group.
> To post to this group, send email to
> google-appengine-java@googlegroups.com.
> To unsubscribe from this group, send email to
> google-appengine-java+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/google-appengine-java?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine for Java" group.
To post to this group, send email to google-appengine-java@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.

Reply via email to