使用restlet的gwt-rpc + appengine + persistence抛出异常

时间:2011-04-20 21:30:48

标签: gwt google-cloud-datastore gwt-rpc restlet

我正在尝试为GWT + GAE(http://wiki.restlet.org/docs_2.1/13-restlet/21-restlet/318-restlet/303-restlet.html)重建Restlet示例应用程序。 我改变了一点,因为我正在计划一些不同的东西,但我认为这将是一个良好的开端。

直到现在才好起来。 “Put”正在进入app引擎但是当我试图使用JPA持久化对象时,我得到以下例外:

Caused by: org.datanucleus.exceptions.ClassNotResolvedException: Class "de.fr1zle.shoplist.web.gae.client.ShoppingListRessourceProxy" was not found in the CLASSPATH. Please check your specification and your CLASSPATH.
    at org.datanucleus.JDOClassLoaderResolver.classForName(JDOClassLoaderResolver.java:250)
    at org.datanucleus.JDOClassLoaderResolver.classForName(JDOClassLoaderResolver.java:415)
    at org.datanucleus.metadata.MetaDataManager.loadPersistenceUnit(MetaDataManager.java:767)
    ... 79 more

正如您所看到的,当从persistence.xml加载信息时,datanucleus以某种方式尝试访问GWT Proxy类。 我在ServerRessource中使用以下内容:

@Put
public void putShoppingList(ShoppingList shoppingList) {
    ShoppingListDOA shoppingListDOA = new ShoppingListDOA(shoppingList);
    EntityManagerFactory emf = Persistence
            .createEntityManagerFactory("transactions-optional");
    try {
        EntityManager entityManager = emf.createEntityManager();
        EntityTransaction transaction = entityManager.getTransaction();
        transaction.begin();
        entityManager.persist(shoppingListDOA);
        entityManager.flush();
        transaction.commit();
        entityManager.close();
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        if (emf != null)
            emf.close();
    }
}

我不知何故感觉DataNucleus也增强了代理类,尽管我改变了它的特性而没有这样做。

使用:GAE 1.4.2(也试过1.4.3),GWT 2.2和Restlet 2.1m3

我在这里错过了一点吗?你的帮助是适当的: - )

提前致谢!

fr1zle

0 个答案:

没有答案