Jsf 2 Weblogic 12c JSF don';t调用(忽略)@PostConstruct

Jsf 2 Weblogic 12c JSF don';t调用(忽略)@PostConstruct,jsf-2,weblogic,postconstruct,weblogic12c,Jsf 2,Weblogic,Postconstruct,Weblogic12c,总之,JSF不会在托管bean的WebLogic12c上调用带有@PostConstruct的方法 我有一个非常基本的应用程序 使用的技术: JSF2.0 应用服务器: WebLogic12C 爪哇 XHTML Facelet标题 试验 #{beanTest.hola_mundo} 当托管bean是JSF的实例时, 托管bean bean测试是create(在普通构造函数中输入) 但是不要用PostConstruct输入(忽略,不要调用)方法 使用WebLogic显示的文本:输入以构造

总之,JSF不会在托管bean的WebLogic12c上调用带有@PostConstruct的方法

我有一个非常基本的应用程序

使用的技术: JSF2.0

应用服务器: WebLogic12C

爪哇

XHTML


Facelet标题
试验

#{beanTest.hola_mundo}

当托管bean是JSF的实例时, 托管bean bean测试是create(在普通构造函数中输入) 但是不要用PostConstruct输入(忽略,不要调用)方法

使用WebLogic显示的文本:输入以构造 预期文本,但不随WL一起显示:输入以构造-输入以后构造

该应用程序已部署在其他应用程序服务器上:

玻璃鱼3.1.1
  • 玻璃鱼3.1.2
  • Tomcat 7.0.22
  • 并给出了预期的结果

    问题只发生在JSF管理的bean(请求、会话、视图、应用程序)上,如果使用CDI,则调用后构造。但是我需要使用JSF ViewScope注释


    有人有什么想法吗?

    嗯,问题解决了。

    这是一个报告的bug,并且已经有了补丁

    错误:13703600
    补丁:SU-Patch[UXPH]:WLS12C-POSTCONSTRUCT未在JSF应用程序中的@MANAGEDBEAN bean上调用


    我应用了补丁,问题得到了解决…

    此问题是Weblogic特有的。我无法从自己的经验中判断,但我从前面的文章/参考文献中读到,每当JSF库随web应用程序一起提供时(在
    /web-INF/lib
    文件夹中),Weblogic都无法在JSF工件上调用
    @PostConstruct
    相反,web应用程序使用Weblogic自己提供的JSF库。这很有趣,因为实际上我的应用程序不使用
    web-INF/lib
    中的库,而是指示您使用应用程序服务器。WebLogic12c现在为我提供了JSF库(我使用的就是这些库),以避免以前版本的Weblogic(10.3g和11g)中出现的问题。我也做了测试,在
    WEB-INF/lib
    中添加了库,但没有观察到好的结果。很抱歉,我不能提供更多的帮助。我从来没有真正使用过Weblogic。真的,这是真的。WebLogic的行为与其他应用程序服务器不同。感谢您的帮助。首先,从Oracle下载修补程序。我想你必须有一个甲骨文帐户来做这件事。然后,确保weblogic已关闭,在路径“:C:\Oracle\Middleware\utils\bsu\cache\u dir”中解压缩修补程序。运行bsu.cmd或bsu.sh,打开智能更新窗口,选择出现的修补程序,然后按照de说明(下一步…下一步…下一步…接受等)操作。。。启动weblogic服务器,并准备就绪。已应用修补程序。。。更多信息请参见第3.3.1节,了解解压缩补丁,以及第4节,了解应用补丁。。。
    @ManagedBean
    @ViewScoped
    
    public class BeanTest implements Serializable {
    
        private String hola_mundo = "";
    
        public BeanTest(){
            this.init();
        }
    
        private void init(){
            hola_mundo +=" Enter to construct - ";
        }
    
    
        @PostConstruct
        public void initPostConstruct(){
            hola_mundo +=" Enter to PostConstruct - ";
        }
    
        public String getHola_mundo() {
            return hola_mundo;
        }
    
        public void setHola_mundo(String hola_mundo) {
            this.hola_mundo = hola_mundo;
        }
    }
    
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
        Test
        <br/>
        #{beanTest.hola_mundo}
    </h:body>