【问题标题】:How to get Spring 3.1.1 works with App Engine datastore如何让 Spring 3.1.1 与 App Engine 数据存储一起使用
【发布时间】:2012-05-08 22:29:19
【问题描述】:

能否请大家给我看一个关于如何让 Spring 3.1.1 在 Google App Engine 上运行的教程?

我已经学习了几个教程,并设法让简单的 HelloWorld 示例在 App Engine 上运行。然而,当我走得更远时,我停留在 Spring 和 Datastore 之间的持久化过程中。我也查看了这个线程Configuring JDO in Spring 3.1?,但是它可以在本地主机上运行,​​但是由于 javax.naming.NamingException,当我部署到应用程序引擎时它不起作用。

因此,我正在寻找一个不太简单的教程,它涵盖了实际应用程序的基本方面,例如视图、模型和数据库。

【问题讨论】:

  • 你能发布异常和导致它的代码吗?
  • 我有:java.lang.NoClassDefFoundError: javax/naming/NamingException 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:480) 在 org.springframework。 beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) at java.security.AccessController.doPrivileged(Native Method) 但是我上面提到的例子的作者已经修复了,所以暂时还可以。跨度>

标签: spring google-app-engine google-cloud-datastore


【解决方案1】:

Jappstart 是查看使用 Spring 和 Datastore(通过 JPA)的 GAE 工作示例的好地方,也是构建基本 GAE/J 应用程序的良好起点。

【讨论】:

  • 谢谢,我去看看,看起来很有希望!
【解决方案2】:

花了大约一天的时间尝试完成这项工作,我想我应该在这里添加一些额外的有用信息。先看看这个项目https://github.com/hleinone/spring-gae-jdo和这个问题:http://code.google.com/p/googleappengine/issues/detail?id=1240——评论24是有用的。

如果有人想使用注释驱动的配置来实现这一点,我就是这样做的:

package com.domain.yourcode.configuration;

import javax.jdo.JDOHelper;
import javax.jdo.PersistenceManagerFactory;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.orm.jdo.GAETransactionAwarePersistenceManagerFactoryProxy;
import org.springframework.orm.jdo.JdoTransactionManager;
//import org.springframework.orm.jdo.TransactionAwarePersistenceManagerFactoryProxy;

@Configuration
public class JDOConfiguration {

    private static final PersistenceManagerFactory pmf =     JDOHelper.getPersistenceManagerFactory("transactions-optional");

    @Bean
    public GAETransactionAwarePersistenceManagerFactoryProxy proxyPmf() {
        GAETransactionAwarePersistenceManagerFactoryProxy proxy = 
                new GAETransactionAwarePersistenceManagerFactoryProxy();
        proxy.setTargetPersistenceManagerFactory(pmf);
        proxy.setAllowCreate(false);
        return proxy;
    }

    @Bean
    public JdoTransactionManager transactionManager() {
        JdoTransactionManager mgr = new JdoTransactionManager();
        mgr.setPersistenceManagerFactory(pmf);
        return mgr;
    }

}

你仍然需要 <tx:annotation-driven/> 在你的 applicationContext.xml 中

【讨论】:

    猜你喜欢
    • 2015-07-26
    • 2014-05-31
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    • 2015-03-24
    • 2013-10-27
    • 1970-01-01
    • 2010-11-12
    相关资源
    最近更新 更多