Ошибка внедрения зависимостей - переход в спящий режим с Struts2 с использованием плагина full-hibernate
Я пытаюсь использовать hibernate в примере struts2 с помощью полного плагина hibernate struts2 ( http://code.google.com/p/full-hibernate-plugin-for-struts2).
Я поместил все банки в мою папку lib:
antlr-2.7.6.jar
commons-collections-3.1.jar
commons-fileupload-1.2.1.jar
commons-io-1.3.2.jar
commons-lang-2.3.jar
commons-logging-1.0.4.jar
commons-logging-api-1.1.jar
dom4j-1.6.1.jar
freemarker-2.3.15.jar
hibernate3.jar
javassist-3.9.0.GA.jar
jta-1.1.jar
jtds-1.2.4.jar
log4j-1.2.15.jar
ognl-2.7.3.jar
slf4j-api-1.5.8.jar
slf4j-log4j12-1.5.8.jar
spring-beans-2.5.6.jar
spring-context-2.5.6.jar
spring-core-2.5.6.jar
spring-test-2.5.6.jar
spring-web-2.5.6.jar
struts2-core-2.1.8.jar
struts2-fullhibernatecore-plugin-1.5-GA.jar
struts2-spring-plugin-2.1.8.jar
xwork-core-2.1.6.jar
А вот код моего класса действий:
package sample;
import org.hibernate.Session;
import data.*;
import java.util.*;
public class Events {
org.hibernate.Session hibernateSession;
public void setHibernateSession(org.hibernate.Session hibernateSession) throws Exception {
this.hibernateSession = hibernateSession;
}
public void sethibernateSession(org.hibernate.Session hibernateSession) throws Exception {
this.hibernateSession = hibernateSession;
}
@SuppressWarnings("unchecked")
public String execute() {
List<Event> events = hibernateSession.createQuery("from Event").list();
for (Event theEvent : events) {
// blah blah...
}
return "success";
}
}
Предположительно, я настроил полный плагин hibernate для добавления сеанса hibernate в мой класс действий с помощью этой конфигурации в struts.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="hibernatePlugin.sessionTarget" value="hibernateSession" />
<constant name="hibernatePlugin.transactionTarget" value="hibernateTransaction" />
..etc..
</struts>
Но мой класс действия всегда падает, когда он пытается получить доступ к переменной hibernateSession, он всегда равен нулю. Таким образом, внедрение зависимости кажется неудачным.
Есть идеи почему? Пожалуйста, помогите, большое спасибо. Также спросите, нужно ли вам видеть какие-либо другие файлы конфигурации.
1 ответ
Решение
Хорошо, это был конгломерат проблем / решений:
- log4j.properties должен находиться в папке '\src' (корень пути к классам)
- Убраны все пружины связанных банок
- Добавлены ВСЕ банки из файла hibernate-annotations в папку lib
- Добавил setHibernateTransaction setter в мой класс действий для DI, чтобы внедрить в него.