0

Spring Maven プロジェクトを分離しました。myapp.web には JSP と静的ファイルのみが含まれ、myapp.coreにはアプリ コンテキスト XML とコントローラーが含まれています。

myapp.core

-- src/main/resources/context.xml

-- src/main/resources/mvc-context.xml

myapp.web

-- src/main/webapp/WEB-INF/web.xml

web.xml には、ルート コンテキスト構成とサーブレット構成が含まれています。

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:/context.xml</param-value>
</context-param>
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
    ...

<servlet>
    <servlet-name>servlet0</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:/mvc-context.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>servlet0</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

私もOpenSessionInViewFilter設定しました

<filter>
    <filter-name>hibernateFilter</filter-name>
    <filter-class>
        org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
    </filter-class>
    <init-param>
        <param-name>flushMode</param-name>
        <param-value>AUTO</param-value>
    </init-param>

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

これで、 myapp.webから war を生成し、Tomcat に手動でドロップすることが正常に機能します。しかし、「Run On Server」を介してEclipseから実行すると、context.xmlで構成されているものがOpenSessionInViewFilterわかりませんsessionFactoryプロジェクトのビルドパスを修正しようとしましたが、実行されません。

org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'sessionFactory' is defined
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:529)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1094)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:276)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:196)
    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1079)
    at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.lookupSessionFactory(OpenSessionInViewFilter.java:242)
    at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.lookupSessionFactory(OpenSessionInViewFilter.java:227)
    at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:171)

これはEclipse/m2e-wtp構成の問題であることがわかりました。これは、手動で展開することで機能しているためです。ただし、修正できませんでした。通常提案されているように、プロジェクトのビルド パスを使用しましたが、成功しませんでした。

ありがとう

4

2 に答える 2

0

解決しました。問題はこれでした:コンテキストは自動リロードでした(理由はわかりません)!myapp.coreは、以前はエントリ ポイント (Web アプリ) でした。分割後、Utility Projectと呼ばれるProject Facetsにチェックマークがなく、Maven Integration for Eclipse はこのプロジェクトを jar としてデプロイしていませんでした!

于 2014-06-13T11:44:55.253 に答える