【发布时间】:2012-04-04 17:47:30
【问题描述】:
我确定我的应用程序一直运行到昨天,当我收到此错误时:
上下文启动失败 com.google.apphosting.utils.jetty.RuntimeAppEngineWebAppContext@1079ff{/,/ 基础/数据/主页/应用程序/s~trewnewmedia/1.357617962256387950} org.springframework.beans.factory.BeanCreationException:错误 创建名为“scadenziarioController”的bean:注入 自动装配依赖失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:不能 自动装配方法:公共无效 it.trew.prove.web.controllers.ScadenziarioController.setScadenzaService(it. trew.prove.services.ScadenzaService);嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为“scadenzaService”的bean:注入自动装配 依赖失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:不能 自动装配方法:公共无效 it.trew.prove.services.ScadenzaService.setSocietaService(it.trew.prove.serv ices.SocietaService);嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为“societaService”的bean:注入自动装配 依赖失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:不能 自动装配方法:公共无效 it.trew.prove.services.SocietaService.setSocietaDao(it.trew.prove.model.dao .道);嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为“dao”的bean:注入资源依赖项 失败的;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为“mySessionFactory”的bean:后处理 FactoryBean 的对象失败;嵌套异常是 java.lang.SecurityException:无法获取类的成员 org.hibernate.impl.SessionFactoryImpl
我将 Hibernate 与 Google Cloud SQL 结合使用,它始终有效。
在我的本地机器上,使用本地 MySQL,它仍然可以工作!
我认为这不是 Cloud SQL 问题,因为删除了一些自动装配(测试)它仍然可以连接等等。这是我的 xml:
<bean id="mySessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="myDataSource" />
<property name="annotatedClasses">
<list>
<value>it.trew.prove.model.beans.Scadenza</value>
<value>it.trew.prove.model.beans.Fornitore</value>
<value>it.trew.prove.model.beans.Societa</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">create</prop>
<!-- <prop key="hibernate.hbm2ddl.import_files">/setup.sql</prop> -->
</props>
</property>
</bean>
我的 DAO 的一部分:
@Component
public class Dao {
@Resource(name = "mySessionFactory")
private SessionFactory sessionFactory;
...
还有我的服务:
@Service
@Transactional
public class SocietaService {
private Dao societaDao;
@Autowired
public void setSocietaDao(Dao societaDao) {
this.societaDao = societaDao;
}
...
我找不到 GAE 和我的本地 (mvn gae:run) 之间的不同之处。 以及为什么上周效果很好。
请 GAE 团队支持我!我在这个问题上疯了
(我可能会开始赏金,太紧急了)
编辑我的 pom.xml 休眠部分:
<!-- Hibernate framework -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>3.3.2.GA</version>
<type>pom</type>
<!--hibernate-dependencies is a pom, not needed for hibernate-core-->
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
<version>3.4.0.GA</version>
</dependency>
<dependency>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.12.1.GA</version>
</dependency>
【问题讨论】:
-
核心问题是:
Unable to get members for class org.hibernate.impl.SessionFactoryImpl你更新了你的Hibernate模块还是什么的? -
在出现此错误之前您所做的最后一次修改是什么?如果它以前有效,你一定做过。
-
无修改!我认为 GAE 有问题。我部署到另一台服务器,它工作。它根本无法实例化我的会话工厂 bean。我不明白为什么。
标签: spring hibernate google-app-engine autowired