powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring+Hibernate+JSP
3 сообщений из 3, страница 1 из 1
Spring+Hibernate+JSP
    #38090179
Goffman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе утро, помогите разобраться с Hibernate.
Ситуация, вроде бы стандартная, но решения не могу найти.

Есть класс контроллера, который достает объект отчета из БД через хибернейт, и передает этот отчет в jsp-страницу.
Проблема в том, что когда обращаюсь к отчету из jsp, получаю ошибку

Код: plaintext
org.apache.jasper.JasperException: org.hibernate.LazyInitializationException: could not initialize proxy - no Session

код контроллера
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
@Controller
public class TekInspectService {

    @Autowired
    private SessionFactory sessionFactory;

    @RequestMapping(value = "/tek/inspect/{reportId}/{resultCode}/{dbtarget}/viewreport.do")
    public String viewReport(@PathVariable int reportId,
                             @PathVariable int resultCode,
                             @PathVariable String dbtarget,
                             Model model
                             )
    {


        Session session = SessionFactoryUtils.openSession(sessionFactory);
        try {

            TekInspectReport report = (TekInspectReport) session.get(TekInspectReport.class, reportId);
            model.addAttribute("report", report);
            return "tek_insp_rep";
        } finally {
            session.close();
        }

    }
}



конфигурация session-factory
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
    <bean id="dataSourceFinProd" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName" value="java:/FinProductDS"/>
    </bean>

    <bean id="finProdSessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSourceFinProd"/>
        <property name="packagesToScan" value="ru.vsmpo.srsp.tek.ispect"/>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
                <prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate4.SpringSessionContext</prop>
                <prop key="show_sql">true</prop>
            </props>
        </property>
    </bean>



страница jsp
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<div id="header">
    <div>ПРОТОКОЛ ПРОВЕРКИ ОФОРМЛЕНИЯ</div>
    <div>${report.tek.docName}</div>
</div>

<div id="tek_inspection_area">

    <c:forEach var="rec" items="${report.tekInspectList}">
        <div>${rec.message}</div>
    </c:forEach>
</div>



Понятно, что проблема кроется в том, что я закрываю сессию в finally,
но если я не буду этого делать, то Datasource не возвращается обратно в пул.
Как быть?
...
Рейтинг: 0 / 0
Spring+Hibernate+JSP
    #38090312
pavel_nv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гугли по словам OpenSessionInView. В принципе все хорошо расписано.
...
Рейтинг: 0 / 0
Spring+Hibernate+JSP
    #38090547
Goffman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо, вроде бы разобрался

может кому то пригодиться

web.xml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
		  http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
           version="3.0">

    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

    <filter>
        <filter-name>hibernateFilter</filter-name>
        <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>
        <init-param>
            <param-name>sessionFactoryBeanName</param-name>
            <param-value>finProdSessionFactory</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>hibernateFilter</filter-name>
        <url-pattern>*</url-pattern>
    </filter-mapping>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

</web-app>




контроллер
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
@Controller
public class TekInspectService {

    @Autowired
    private SessionFactory sessionFactory;

    @RequestMapping(value = "/tek/inspect/{reportId}/{resultCode}/{dbtarget}/viewreport.do")
    public String viewReport(@PathVariable int reportId,
                             @PathVariable int resultCode,
                             @PathVariable String dbtarget,
                             Model model
                             )
    {

        Session session = sessionFactory.getCurrentSession();
        TekInspectReport report = (TekInspectReport) session.get(TekInspectReport.class, reportId);
        model.addAttribute("report", report);
        return "tek_insp_rep";


    }
}



...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring+Hibernate+JSP
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]