2013-01-13 7 views
0

가장 최근 프로젝트 나는 Spring (3.1.1.RELEASE) Managed Hibernate Session을 Seam (2.3.0.Final)으로 사용하려고 노력하고있다.Seam에서 Spring Managed Hibernate Session을 사용하는 방법?

JBoss Seam 문서에서 설명하는 내용은 How to use Seam Managed Hibernate Session in Spring입니다. 그러나 우리의 요구 사항은 문서보다 반전되어 있습니다.

다른 해결책이 있는데, 내 요구 사항은 Seam에서 Spring Managed Hibernate Session을 사용하는 것이다. 나는 Seam이 Hibernate Session/Hibernate Entity Manager/Transaction을 관리하고 싶지 않다. Seam 관리 종속성 삽입을 사용하여 Spring bean을 Seam 관리 bean에 @In이 아닌 Spring @Autowire이 아닌 bean을 삽입하려는 경우에만 사용하십시오.

아무도 이러한 유형의 도전에 직면하면& 스프링 applicationContext.xml을 구성하거나이 문제를 해결하기 위해 가이드 라인을 제공하십시오.

답변

0

먼저 구성 applicationContext.xml이 같은 일반적 구성 :

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
    <!-- hibernate Properties Here -->      
</bean> 
<bean id="transactionManager" 
    class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="sessionFactory" /> 
</bean> 
<tx:annotation-driven/> 

그런 다음 다음과 같은 components.xml을 구성

<core:init debug="true" transaction-management-enabled="true" /> 
<spring:context-loader config-locations="classpath*:/META-INF/spring/applicationContext.xml"/> 
<core:manager concurrent-request-timeout="500" conversation-timeout="120000" conversation-id-parameter="cid" parent-conversation-id-parameter="pid" /> 
<persistence:managed-hibernate-session name="hibernateSession" auto-create="true" session-factory="#{sessionFactory}"/> 
<spring:spring-transaction platform-transaction-manager="#{transactionManager}"/> 

그것의 매우 쉬운 심과 봄 (3.1.1.RELEASE을) 상호 작용하는 (2.3 .0. 최종). 이음새를 web.xml으로 설정하는 것을 잊지 마십시오. Seam-2.3.0.Final를 다운로드

<listener> 
    <listener-class>org.jboss.seam.servlet.SeamListener</listener-class> 
</listener> 

<listener> 
    <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> 
</listener> 

<servlet> 
    <servlet-name>Seam Resource Servlet</servlet-name> 
    <servlet-class>org.jboss.seam.servlet.SeamResourceServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>Seam Resource Servlet</servlet-name> 
    <url-pattern>/resource/*</url-pattern> 
</servlet-mapping> 

<filter> 
    <filter-name>Seam Filter</filter-name> 
    <filter-class>org.jboss.seam.servlet.SeamFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>Seam Filter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

<servlet> 
    <servlet-name>Faces Servlet</servlet-name> 
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>*.xhtml</url-pattern> 
</servlet-mapping> 

<login-config> 
    <auth-method>BASIC</auth-method> 
</login-config> 

<session-config> 
    <session-timeout>10</session-timeout> 
</session-config> 

<welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
</welcome-file-list> 

는 Facelets를 들어 당신은 faces-config.xml

<application> 
    <variable-resolver>org.springframework.web.jsf.DelegatingVariableResolver</variable-resolver> 
</application> 

더 나은에서 변수 리졸버를 추가해야합니다. Uzip 그것 examples\spring\ 폴더 안에 원하는 구성을 얻을 것입니다