2012-11-02 23 views
0

我已經在這裏粘貼了整個堆棧跟蹤 - PastebinGoogle雲sql訪問被拒絕在本地的例外

Caused by: java.security.AccessControlException: access denied (java.net.SocketPermission localhost resolve) 
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:374) 
    at java.security.AccessController.checkPermission(AccessController.java:546) 
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:532) 
    at 

    com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkPermission(DevAppServerFactory.java:283) 
     at java.lang.SecurityManager.checkConnect(SecurityManager.java:1031) 
     at java.net.InetAddress.getAllByName0(InetAddress.java:1145) 
     at java.net.InetAddress.getAllByName(InetAddress.java:1083) 
     at java.net.InetAddress.getAllByName(InetAddress.java:1019) 
     at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:243) 
     at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:284) 
     at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2043) 
     ... 123 more 
    Caused by: 

    com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 

這裏是我的數據庫屬性

jdbc.driverClassName=com.google.appengine.api.rdbms.AppEngineDriver 
jdbc.url=jdbc:mysql://localhost:3306/tester 
jdbc.username=root 
jdbc.password=root 
hibernate.dialect = org.hibernate.dialect.MySQL5Dialect 
hibernate.hbm2ddl.auto=update 

而且ApplicationContext的 -

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="location"> 
     <value>/WEB-INF/classes/database.properties</value> 
    </property> 
    </bean> 

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

    <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
    <property name="dataSource"> 
     <ref local="dataSource"/> 
    </property> 

    <property name="hibernateProperties"> 
     <props> 
     <prop key="hibernate.dialect">${hibernate.dialect}</prop> 
     <prop key="hibernate.show_sql">false</prop> 
     <prop key="hibernate.cache.use_query_cache"> 
      false 
     </prop> 
     <prop key="hibernate.cache.use_second_level_cache"> 
      false 
     </prop> 
     <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop> 
     </props> 
    </property> 

這裏是我嘗試使用它 -

public class MainDao { 
    protected SessionFactory sessionFactory; 

    public SessionFactory getSessionFactory() { 
    return sessionFactory; 
    } 

    public void setSessionFactory(SessionFactory sessionFactory) { 
    this.sessionFactory = sessionFactory; 
    } 

    private Session openSession(){ 
    return this.sessionFactory.openSession(); 
    } 
} 

我得到的錯誤時,我打電話給openSession。需要幫助。我無法弄清楚問題所在。

+0

我認爲你需要使用Eclipselink而不是Hibernate。我嘗試使用Hibernate並得到相同的錯誤。我通過切換到Eclipselink解決了這個問題。閱讀示例並使用eclipselink。 –

回答

0

我通過更改數據庫屬性這些

jdbc.driverClassName=com.google.appengine.api.rdbms.AppEngineDriver 
jdbc.url=jdbc:google:rdbms://localhost/database 
jdbc.username=root 
jdbc.password=root 
hibernate.dialect = org.hibernate.dialect.MySQL5Dialect 
hibernate.hbm2ddl.auto=update 

然後用以下JVM ARGS運行dev_appserver.cmd命令解決了這個問題 -

-Drdbms.server=local 
-Drdbms.driver=com.mysql.jdbc.Driver 
-Drdbms.url=jdbc:mysql://localhost:3306/yourdatabase?user=username&password=password 

這爲我工作。命令提示符下的命令不起作用(顯示錯誤),但在我的IDE(intellij idea)中指定了上面的jvm參數後,它就起作用了。