2013-08-27 2 views
1

Я знаю, что настройка OSIVF является общей точкой боли. Я прочитал все страницы, которые мог найти за последние пару дней, но мне кажется, что это не проблема. Мне удалось запутаться, тo. Я пытаюсь сделать эту конфигурацию очень простой, поскольку веб-приложение довольно простое. Ну, вот ошибка:OpenSessionInViewFilter не может найти WebApplicationContext

java.lang.IllegalStateException: No WebApplicationContext found: no ContextLoaderListener registered? 
org.springframework.web.context.support.WebApplicationContextUtils.getRequiredWebApplicationContext(WebApplicationContextUtils.java:90) 
org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.lookupSessionFactory(OpenSessionInViewFilter.java:190) 

Вот web.xml:

<web-app version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 

    <display-name>Test MVC Application</display-name> 

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

    <servlet-mapping> 
     <servlet-name>onepic</servlet-name> 
     <url-pattern>/</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>sessionFactory</param-value> 
     </init-param> 
    </filter> 

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



    <filter> 
     <filter-name>CharacterEncodingFilter</filter-name> 
     <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
     <init-param> 
      <param-name>encoding</param-name> 
      <param-value>UTF-8</param-value> 
     </init-param> 
     <init-param> 
      <param-name>forceEncoding</param-name> 
      <param-value>true</param-value> 
     </init-param> 
    </filter> 
    <filter-mapping> 
     <filter-name>CharacterEncodingFilter</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping> 


</web-app> 

Наконец, вот некоторые биты из onepic-servlet.xml:

<bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/> 
    <property name="url" value="jdbc:mysql://localhost:3306/onePic?characterEncoding=UTF-8"/> 
    <property name="username" value="onePic"/> 
    <property name="password" value="onePic"/> 
</bean> 

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
    <property name="dataSource" ref="datasource" /> 
    <property name="packagesToScan" value="com.sandofamily.onePic"/> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect"> org.hibernate.dialect.H2Dialect</prop> 
      <prop key="hibernate.show_sql">true</prop> 
     </props> 
    </property> 
</bean> 

<tx:annotation-driven/> 

<bean id="transactionManager" 
     class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="sessionFactory"></property> 
</bean> 

Опять же, я извините за повторение такой общей проблемы, но я должен упустить немного знаний, которые связывают это все вместе.

+0

Я думаю, что лучше начать другой вопрос об этой другой проблеме, потому что это будет путать для тех, кто пытается найти то же самое решение. –

+0

Да, спасибо. Я как-то поднял этот вопрос. Характер ситуации изменился. Я создам новый. В нижней части [ссылка] (http://stackoverflow.com/questions/6451377/loading-context-in-spring-using-web-xml) исправлена ​​часть. –

+0

ОК, если мой ответ помог вам в вашей первоначальной проблеме, вы можете проверить ответ как правильный. –

ответ

1

Вы не настроили свой контекст в своем web.xml, поэтому, когда Spring пытается найти его Контекст, вы получите эту ошибку.

This показывает, как настроить Spring с помощью xml-файла, но вы также можете сделать это, используя конфигурацию Java. Вы можете найти что-то here.

+0

Thx! - добавлен контекст и системы, но, как ни странно, фильтр не работает. (сообщение во время свободного маркера: «невозможно инициализировать прокси - нет сеанса») Единственный намек, который у меня есть, - это предупреждение о спящем режиме. Перед добавлением «Контекста» сообщение WARN HHH000431 появилось один раз при развертывании, теперь это дважды. Красная сельдь? –

+0

Вы можете изменить свой вопрос с помощью вашего кода фильтра? Также проверьте это и посмотрите, помогает это или нет: https://community.jboss.org/wiki/OpenSessioninView –

+0

Если бы вы могли добавить новую ошибку, это поможет. –

Смежные вопросы