Spring Hibernate 的 Google Appengine Cloud SQL 问题 [英] Google Appengine Cloud SQL issue with Spring Hibernate

查看:20
本文介绍了Spring Hibernate 的 Google Appengine Cloud SQL 问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个使用 MySQL 在 Amazon EC2 上运行的有效 Spring Hibernate 应用程序.我正在考虑将我的应用程序移植到 Google App Engine,因为 Google 现在通过 Google Can SQL 支持 MySQL.

I have a working Spring Hibernate Application running on Amazon EC2 with MySQL. I am thinking of porting my application to Google App Engine as Google now support MySQL with Google Could SQL.

因此将我现有的应用程序配置为 Google App Engine Web 应用程序,然后编译没有任何错误的代码.我没有对我现有的应用程序进行任何更改,它编译并创建了所需的表,服务器成功启动.

So configure my existing application to Google App Engine Web Application, then compile the code without any error. I have not changed anything to my existing application and it compiled and also created the required tables and the server started successfully.

但是,当运行通过休眠访问数据库的应用程序时,我收到以下错误.

However, when running application that access the database via hibernate, I am getting the following error.

org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.JDBCConnectionException: Cannot open connection
at org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:596)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371)
at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:335)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at $Proxy30.findById(Unknown Source)
at com.openentry.catgen.services.impl.WebsiteServiceImpl.getMasterDomain(WebsiteServiceImpl.java:99)

我正在为我的实体类使用注释.

I am using annotations for my entity classes.

我需要为此更改什么吗?

Is there anything I need changing for this?

下面是我的 applicationContext.xml

below is my applicationContext.xml

<bean id="dataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource"
    p:driverClassName="${jdbc.driverClassName}" p:url="${jdbc.url}"
    p:username="${jdbc.username}" p:password="${jdbc.password}" />

<bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
    p:dataSource-ref="dataSource" p:configurationClass="org.hibernate.cfg.AnnotationConfiguration"
    p:packagesToScan="com.package.app.entities">
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">${hibernate.dialect}</prop>
            <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
            <prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
            <prop key="hibernate.generate_statistics">${hibernate.generate_statistics}</prop>
            <prop key="hibernate.connection.useUnicode">${hibernate.connection.useUnicode}</prop>
            <prop key="hibernate.connection.characterEncoding">${hibernate.connection.characterEncoding}</prop>
            <prop key="hibernate.connection.charSet">${hibernate.connection.charSet}</prop>
            <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
        </props>
    </property>

</bean>

<tx:annotation-driven />

<bean id="transactionManager"
    class="org.springframework.orm.hibernate3.HibernateTransactionManager"
    p:sessionFactory-ref="sessionFactory" />

<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
    <constructor-arg>
        <ref bean="sessionFactory" />
    </constructor-arg>
</bean>

推荐答案

要在 Eclipse localhost 和 appengine 实例上运行 Google Cloud SQL,您必须核对以下几点.

To run Google Cloud SQL on Eclipse localhost and on appengine instance, you must checklist the following points.

  1. 使用创建 Cloud SQL 实例的同一 google 帐户登录您的 eclipse.
  2. 右键单击项目属性转到 Google>Appengine 检查启用 Google Cloud SQL 实例
  3. 为本地主机选择 MySQL 实例并配置其值.

  1. Login to your eclipse with the same google account on which your Cloud SQL instance is created.
  2. Right Click on project properties go to Google>Appengine check the Enable Google Cloud SQL instance
  3. Choose MySQL instance for localhost and configure its values.

Hostname : localhost
Database Name : yourdatabasename
Port No : 3306
Username : yourMySQLUserName
Password : yourPassword
Path to MySQL JDBC Jar : Path where your mysql-connector-java-x.x.xx.jar   // I usually put this jar on the WEB-INF/lib

  • 同时配置 Google Cloud SQL 实例:

  • Configure the Google Cloud SQL Instance as well:

    Instance Name : something:something     // This you will get under Google Cloud SQL tab under Google API Console
    Database Name : yourdatabasename
    Username : yourMySQLUserName
    Password : yourPassword
    

  • 只需复制您的 mysql-connector-java-x.x.xx.jar 文件并将其粘贴到 Eclipse 中 Appengine SDK 的这个位置

  • Just copy your mysql-connector-java-x.x.xx.jar file and paste it under this location of your Appengine SDK in Eclipse

    // This path is shown for Eclipse
    
    D:MyEclipsepluginscom.google.appengine.eclipse.sdkbundle_1.7.2.1appengine-java-sdk-1.7.2.1libimpl
    

  • 驱动程序类名和数据库访问 URL 应更改为以下值.

  • The Driver ClassName and Database Access URL should be changed to following values.

    AppengineDriver Class Name : com.google.appengine.api.rdbms.AppEngineDriver
    Database Access URL : jdbc:google:rdbms://instance_name/database_name
    e.g. jdbc:google:rdbms://XXXXXX:xxxxx/XXX_databasename
    user : username   // Your Database User by default its root
    password : password  // Your Database Password by default its blank in GAE Cloud SQL
    

  • 按照所有内容,您可以在 Eclipse 中轻松配置 Google Cloud SQL.

  • By following all the things you can easily configure Google Cloud SQL in Eclipse.

    这篇关于Spring Hibernate 的 Google Appengine Cloud SQL 问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

  • 查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆