当ManagedBean是JAR中的包并由EAR提供时,JSF @PostConstruct不会触发

时间:2018-05-14 20:48:27

标签: jsf weblogic

我知道这个问题已在this thread 中得到解答,但就我而言,JAR(拥有ManagedBean)和WAR(通过将视图解析为JAR内部的资源来调用ManagedBean)被打包在EAR中。

我正在使用: Weblogic 12c版 JSF jsf_2.0.0.0_2-1-20.jar(weblogic提供)

JAR将faces-config.xml放在正确的位置,如下所示:

     0 Mon May 14 12:20:08 CST 2018 META-INF/
   125 Mon May 14 12:20:06 CST 2018 META-INF/MANIFEST.MF
     0 Mon May 14 12:20:06 CST 2018 META-INF/resources/
     0 Mon May 14 12:20:06 CST 2018 gt/
     0 Mon May 14 12:20:06 CST 2018 gt/com/
     0 Mon May 14 12:20:06 CST 2018 gt/com/leta/
     0 Mon May 14 12:20:06 CST 2018 gt/com/leta/security/
     0 Mon May 14 12:20:06 CST 2018 gt/com/leta/security/errorhandlers/
     0 Mon May 14 12:20:06 CST 2018 gt/com/leta/security/pojos/
     0 Mon May 14 12:20:06 CST 2018 gt/com/leta/security/utilities/
  4460 Mon May 14 12:20:06 CST 2018 META-INF/resources/menu.xhtml
  4403 Mon May 14 12:20:06 CST 2018 META-INF/resources/login.xhtml
   338 Mon May 14 12:20:06 CST 2018 META-INF/faces-config.xml
   922 Mon May 14 12:20:06 CST 2018 gt/com/leta/security/errorhandlers/CustomExceptionHandlerFactorySisleta.class
  4381 Mon May 14 12:20:06 CST 2018 gt/com/leta/security/errorhandlers/CustomExceptionHandlerSisLeta.class
 15480 Mon May 14 12:20:06 CST 2018 gt/com/leta/security/utilities/FunctionsSecurity.class
  1146 Mon May 14 12:20:06 CST 2018 gt/com/leta/security/utilities/FaceletsResourceResolver.class
 13435 Mon May 14 12:20:06 CST 2018 gt/com/leta/security/utilities/Menu.class
  4158 Mon May 14 12:20:06 CST 2018 gt/com/leta/security/utilities/FilterApp.class
  2746 Mon May 14 12:20:06 CST 2018 gt/com/leta/security/utilities/SessionListener.class
     0 Mon May 14 12:20:08 CST 2018 META-INF/maven/
     0 Mon May 14 12:20:08 CST 2018 META-INF/maven/gt.com.leta/
     0 Mon May 14 12:20:08 CST 2018 META-INF/maven/gt.com.leta/Security/
  5030 Mon May 14 10:57:24 CST 2018 META-INF/maven/gt.com.leta/Security/pom.xml                                                       
   105 Mon May 14 12:20:08 CST 2018 META-INF/maven/gt.com.leta/Security/pom.properties

ManagedBean是这样的:

    /*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package gt.com.late.security.;

import java.io.IOException;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import org.primefaces.context.RequestContext;
import org.primefaces.model.menu.DefaultMenuItem;
import org.primefaces.model.menu.DefaultMenuModel;
import org.primefaces.model.menu.DefaultSubMenu;

/**
 *
 * @author 
 */
@ManagedBean(name="menu", eager = true)
@SessionScoped
public class Menu {
    private String ...
    private String ....


    /**
     * Creates a new instance of Menu
     */
    public Menu() {
    }

    @PostConstruct
    public void init(){

    /*
         This does'nt trigger
    */
    }

}

WAR使用FaceletsResourceResolver从同一个JAR获取视图,这非常有效!

<context-param>
    <param-name>facelets.RESOURCE_RESOLVER</param-name>
    <param-value>com.example.FaceletsResourceResolver</param-value>
</context-param>

如果我想在EAR中使用此模式,是否存在差异?

0 个答案:

没有答案
相关问题