Java 如何从JBossSeam2.3动作bean中注入Spring3.0注释bean

Java 如何从JBossSeam2.3动作bean中注入Spring3.0注释bean,java,jsf-2,richfaces,spring-3,jboss-seam,Java,Jsf 2,Richfaces,Spring 3,Jboss Seam,我想使用以下环境开发一个简单的应用程序 JBoss 7.1.1 JBossSeam 2.3 JSF2.0 里法塞斯4.0 春季3.0 JPA2.0 使用JBoss工具3.2的Eclipse IDE 大多数配置都能正常工作。但是我不能从Seam Action Bean中注入Spring Bean。加载页面时没有错误和异常。我的数据表是 在web.xml中 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http

我想使用以下环境开发一个简单的应用程序

  • JBoss 7.1.1
  • JBossSeam 2.3
  • JSF2.0
  • 里法塞斯4.0
  • 春季3.0
  • JPA2.0
  • 使用JBoss工具3.2的Eclipse IDE
  • 大多数配置都能正常工作。但是我不能从Seam Action Bean中注入Spring Bean。加载页面时没有错误和异常。我的数据表是

    在web.xml中

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
      <display-name>jsf-seam</display-name>
      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
      </welcome-file-list>
      <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>*.seam</url-pattern>
      </servlet-mapping>
      <context-param>
        <param-name>org.richfaces.skin</param-name>
        <param-value>blueSky</param-value>
      </context-param>
      <listener>
        <listener-class>org.jboss.seam.servlet.SeamListener</listener-class>
      </listener>
      <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>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>/seam/resource/*</url-pattern>
      </servlet-mapping>
      <context-param>
        <param-name>facelets.DEVELOPMENT</param-name>
        <param-value>true</param-value>
      </context-param>
      <context-param>
        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
        <param-value>.xhtml</param-value>
      </context-param>
      <security-constraint>
        <display-name>Restrict raw XHTML Documents</display-name>
        <web-resource-collection>
          <web-resource-name>XHTML</web-resource-name>
          <url-pattern>*.xhtml</url-pattern>
        </web-resource-collection>
        <auth-constraint/>
      </security-constraint>
    </web-app>  
    
    
    jsf煤层
    index.html
    Facesservlet
    javax.faces.webapp.FacesServlet
    1.
    Facesservlet
    *.接缝
    org.richfaces.skin
    蓝调的
    org.jboss.seam.servlet.SeamListener
    接缝过滤器
    org.jboss.seam.servlet.SeamFilter
    接缝过滤器
    /*
    Seam资源Servlet
    org.jboss.seam.servlet.SeamResourceServlet
    Seam资源Servlet
    /煤层/资源/*
    facelets.DEVELOPMENT
    真的
    javax.faces.DEFAULT_后缀
    .xhtml
    限制原始XHTML文档
    XHTML
    *.xhtml
    
    在faces-config.xml中

    <?xml version="1.0" encoding="UTF-8"?>
    <faces-config
        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-facesconfig_2_0.xsd"
        version="2.0">
        <application>
            <locale-config>
                <default-locale>en</default-locale>
            </locale-config>
        </application>
    </faces-config>
    
    <application>
        <variable-resolver>org.springframework.web.jsf.DelegatingVariableResolver</variable-resolver>   
    </application>
    
    
    EN
    
    在component.xml中

    <?xml version="1.0" encoding="UTF-8"?>
    <components xmlns="http://jboss.org/schema/seam/components"
                xmlns:core="http://jboss.org/schema/seam/core"
                xmlns:persistence="http://jboss.org/schema/seam/persistence"
                xmlns:drools="http://jboss.org/schema/seam/drools"
                xmlns:bpm="http://jboss.org/schema/seam/bpm"
                xmlns:security="http://jboss.org/schema/seam/security"
                xmlns:mail="http://jboss.org/schema/seam/mail"
                xmlns:web="http://jboss.org/schema/seam/web"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xmlns:spring="http://jboss.com/products/seam/spring"
                xsi:schemaLocation=
                    "http://jboss.org/schema/seam/core http://jboss.org/schema/seam/core-2.3.xsd
                     http://jboss.org/schema/seam/persistence http://jboss.org/schema/seam/persistence-2.3.xsd
                     http://jboss.org/schema/seam/drools http://jboss.org/schema/seam/drools-2.3.xsd
                     http://jboss.org/schema/seam/bpm http://jboss.org/schema/seam/bpm-2.3.xsd
                     http://jboss.org/schema/seam/security http://jboss.org/schema/seam/security-2.3.xsd
                     http://jboss.org/schema/seam/mail http://jboss.org/schema/seam/mail-2.3.xsd
                     http://jboss.org/schema/seam/web http://jboss.org/schema/seam/web-2.3.xsd
                     http://jboss.org/schema/seam/components http://jboss.org/schema/seam/components-2.3.xsd">
    
       <core:init debug="true" jndi-pattern="@jndiPattern@"/>
       <spring:context-loader config-locations="classpath:spring-bean.xml"/>
       <core:manager concurrent-request-timeout="500"
                     conversation-timeout="120000"
                     conversation-id-parameter="cid"
                     parent-conversation-id-parameter="pid"/>
    
       <!-- Make sure this URL pattern is the same as that used by the Faces Servlet -->
       <web:hot-deploy-filter url-pattern="*.seam"/>
    
       <!-- If you are still using JBoss 4, uncomment this to have your PU started -->
    <!--   <persistence:entity-manager-factory name="entityManagerFactory"-->
    <!--                      persistence-unit-name="jsf-seam"/>-->
       <!-- If you are still using JBoss 4, uncomment this to have the entityManagerFactory ysed -->
    <!--   <persistence:managed-persistence-context name="entityManager" auto-create="true"-->
    <!--                          entity-manager-factory="#{entityManagerFactory}"/>-->
    
       <persistence:managed-persistence-context name="entityManager" auto-create="true"
                               persistence-unit-jndi-name="java:/jsf-seamEntityManagerFactory"/>
    
       <drools:rule-base name="securityRules">
          <drools:rule-files><value>/security.drl</value></drools:rule-files>
       </drools:rule-base>
    
       <security:rule-based-permission-resolver security-rules="#{securityRules}"/>
    
       <security:identity authenticate-method="#{authenticator.authenticate}" remember-me="true"/>
    
       <event type="org.jboss.seam.security.notLoggedIn">
          <action execute="#{redirect.captureCurrentView}"/>
       </event>
       <event type="org.jboss.seam.security.loginSuccessful">
          <action execute="#{redirect.returnToCapturedView}"/>
       </event>
    
       <mail:mail-session host="localhost" port="25"/>
    
       <!-- For use with jBPM pageflow or process management -->
       <!--
       <bpm:jbpm>
          <bpm:process-definitions></bpm:process-definitions>
          <bpm:pageflow-definitions></bpm:pageflow-definitions>
       </bpm:jbpm>
       -->
    
    </components>
    
    
    /安全性
    
    在我的行动豆

    @Scope(CONVERSATION)
    @Name("ManageDepartmentBean")
    public class ManageDepartmentBean implements Serializable {
        private static final long serialVersionUID = -4373053763864526454L;
    
        @Out(value = "departmentList")
        public List<Department> departmentList;
    
            public List<Department> getDepartmentList() {
                return departmentList;
            }   
    
        @In("#{DepartmentService}")
        private IDepartmentService departmentService;
    
        @Begin
        public String begin() {
            departmentList = departmentService.findAllDepartments();
            return "success";
        }
    
    
        public String increment() {
            return "success";
        }
    
    
        @End
        public String end() {
            return "home";
        }
    }
    
    @Scope(对话)
    @名称(“ManageDepartmentBean”)
    公共类ManageDepartmentBean实现可序列化{
    私有静态最终长serialVersionUID=-4373053763864526454L;
    @Out(value=“部门列表”)
    公开名单部门名单;
    公共列表getDepartmentList(){
    返回部门列表;
    }   
    @在(“#{DepartmentService}”)中
    私人创意部门服务部门服务;
    @开始
    公共字符串begin(){
    departmentList=departmentService.findAllDepartments();
    返回“成功”;
    }
    公共字符串增量(){
    返回“成功”;
    }
    @结束
    公共字符串结束(){
    返回“家”;
    }
    }
    
    在我的春豆里

    @Service(value = "DepartmentService")
    public class DepartmentService implements IDepartmentService{
        @Resource(name = "DepartmentDAO")
        private IDepartmentDAO departmentDAO;
    
        @Transactional(propagation = Propagation.REQUIRED)
        public List<Department> findAllDepartments() {
            return departmentDAO.findAll();
        }
    }
    
    @Service(value=“DepartmentService”)
    公共类DepartmentService实现IDepartmentService{
    @资源(name=“DepartmentDAO”)
    私人部门;
    @事务性(传播=传播。必需)
    公共列表findAllDepartments(){
    return departmentDAO.findAll();
    }
    }
    
    我也尝试在web.xml中使用如下内容,但它不起作用

      <context-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>classpath:spring-beans.xml</param-value>
      </context-param>
      <listener>
          <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener>
    
    
    上下文配置位置
    类路径:spring-beans.xml
    org.springframework.web.context.ContextLoaderListener
    
    在我的页面

        <rich:dataTable value="#{ManageDepartmentBean.departmentList}" var="dep" id="departmentTable">
            <rich:column sortBy="#{dep.id}">
                <f:facet name="header">
                    <h:outputText value="Department ID"/>
                </f:facet>
                <h:outputText value="#{dep.id}" />
            </rich:column>
            <rich:column sortBy="#{dep.name}">
                <f:facet name="header">
                    <h:outputText value="Name"/>
                </f:facet>
                <h:outputText value="#{dep.name}" />
            </rich:column>
            <rich:column sortBy="#{dep.description}">
                <f:facet name="header">
                    <h:outputText value="Description"/>
                </f:facet>
                <h:outputText value="#{dep.description}}" />
            </rich:column>
        </rich:dataTable>
    

    我可以使用@In注释从seam操作bean注入Springbean。无需将seam组件配置为spring-bean.xml或applicationContext.xml

    在web.xml中

     <context-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>classpath:spring-beans.xml</param-value>
      </context-param>
      <listener>
          <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener>
    
    
    上下文配置位置
    类路径:spring-beans.xml
    org.springframework.web.context.ContextLoaderListener
    
    在faces-config.xml中

    <?xml version="1.0" encoding="UTF-8"?>
    <faces-config
        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-facesconfig_2_0.xsd"
        version="2.0">
        <application>
            <locale-config>
                <default-locale>en</default-locale>
            </locale-config>
        </application>
    </faces-config>
    
    <application>
        <variable-resolver>org.springframework.web.jsf.DelegatingVariableResolver</variable-resolver>   
    </application>
    
    
    org.springframework.web.jsf.DelegatingVariableResolver