0

Spring (3.1.1.RELEASE) Managed Hibernate Session into Seam (2.3.0.Final) を使用しようとしている最近のプロジェクト。

JBoss Seam Documentationでは、Spring で Seam Managed Hibernate Session を使用する方法について説明しています。しかし、私たちの要件はドキュメントよりも逆です。

Spring PlatformTransactionManagement を使用して別のソリューションを得ましたが、私の要件は Seam で Spring Managed Hibernate Session を使用することです。Seam manage Hibernate Session/Hibernate Entity Manager/Transaction を使用したくありません。@InSeam manage 依存性注入を使用して、Spring ではなくseam を介して Seam manage Bean に Spring Bean を注入したいだけです@Autowire

誰かがそのようなタイプの課題に直面している場合は、Seam components.xml& Springの設定を手伝うかapplicationContext.xml、これを克服するためのガイドラインを提供してください。

4

1 に答える 1

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}"/>

Spring(3.1.1.RELEASE)とSeam(2.3.0.Final)の相互作用は非常に簡単ですがweb.xml、seamの構成を忘れることはありません。

<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>

ファセットの場合、変数リゾルバをに追加する必要がありますfaces-config.xml

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

Seam-2.3.0.Finalをダウンロードすることをお勧めします。それをUzipしexamples\spring\ます。フォルダ内に希望の構成が表示されます

于 2013-01-27T11:12:26.180 に答える