首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

WebLogic 12.2.1.4 JSF1.2 ELContext在文字表达式上引发空指针

基础概念

WebLogic 是一款由 Oracle 公司开发的企业级应用服务器,用于部署和管理 Java EE 应用程序。JSF(JavaServer Faces)是 Java EE 平台的一部分,用于构建用户界面组件。EL(Expression Language)是 JSF 中用于访问数据的语言,ELContext 则是 EL 表达式的执行环境。

相关优势

  • 集成性:WebLogic 提供了强大的集成能力,可以与多种 Java EE 技术无缝集成。
  • 性能:经过优化,WebLogic 在处理大量并发请求时表现出色。
  • 安全性:内置了多种安全机制,保护应用程序免受攻击。

类型

  • WebLogic Server:主要的应用服务器。
  • WebLogic Express:轻量级的应用服务器,适合小型应用。

应用场景

  • 企业级应用:适用于需要高可用性和高性能的企业级应用。
  • 大数据处理:可以处理大量的数据流和事务。

问题分析

在使用 WebLogic 12.2.1.4 和 JSF 1.2 时,ELContext 在文字表达式上引发空指针异常(NullPointerException)可能是由于以下原因:

  1. EL 表达式未正确初始化:ELContext 可能未被正确初始化,导致在解析表达式时出现空指针。
  2. 依赖注入问题:JSF 组件可能未能正确注入所需的依赖,导致 EL 表达式无法访问这些依赖。
  3. 配置错误:WebLogic 或 JSF 的配置文件可能存在错误,影响了 ELContext 的正常工作。

解决方法

1. 确保 ELContext 正确初始化

确保在应用程序启动时正确初始化 ELContext。可以在 faces-config.xml 中添加以下配置:

代码语言:txt
复制
<application>
    <el-resolver>com.example.CustomELResolver</el-resolver>
</application>

并实现自定义的 ELResolver

代码语言:txt
复制
import javax.el.ELContext;
import javax.el.ELResolver;
import javax.faces.context.FacesContext;

public class CustomELResolver extends ELResolver {
    @Override
    public Object getValue(ELContext context, Object base, Object property) {
        // 自定义逻辑
        return null;
    }

    @Override
    public Class<?> getType(ELContext context, Object base, Object property) {
        return null;
    }

    @Override
    public void setValue(ELContext context, Object base, Object property, Object value) {
    }

    @Override
    public boolean isReadOnly(ELContext context, Object base, Object property) {
        return false;
    }

    @Override
    public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext context, Object base) {
        return null;
    }

    @Override
    public Class<?> getCommonPropertyType(ELContext context, Object base) {
        return null;
    }
}

2. 检查依赖注入

确保 JSF 组件正确注入所需的依赖。可以在 @ManagedBean@Named 注解中检查依赖注入是否正确:

代码语言:txt
复制
import javax.faces.bean.ManagedBean;
import javax.inject.Inject;

@ManagedBean
public class MyBean {
    @Inject
    private MyDependency myDependency;

    // getter 和 setter
}

3. 检查配置文件

确保 web.xmlfaces-config.xml 配置文件正确无误。例如:

代码语言:txt
复制
<!-- web.xml -->
<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>
代码语言:txt
复制
<!-- faces-config.xml -->
<faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
              version="2.2">
    <application>
        <el-resolver>com.example.CustomELResolver</el-resolver>
    </application>
</faces-config>

参考链接

通过以上步骤,可以有效解决 WebLogic 12.2.1.4 和 JSF 1.2 中 ELContext 在文字表达式上引发空指针异常的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

CVE-2020-14825:Weblogic反序列化漏洞复现

作者:DEADF1SH_CAT@Timeline Sec 本文字数:1891 阅读时长:6~7min 声明:请勿用作违法用途,否则后果自负 0x01 简介 Weblogic是美国Oracle公司出品的一个...选择 12.2.1.4 的 Generic 版本进行下载安装即可,安装过程注意JDK版本造成的安装失败(建议JDK 1.8)以及以管理员权限运行安装包。...0x06 漏洞分析 这个漏洞实质跟 CVE-2020-14645 并无太大差别,前半段的利用链入口是一致的,只不过最后造成代码执行的类不一样。.../docs.oracle.com/middleware/1213/wls/WLACH/taskhelp/channels/EnableAndConfigureIIOP.html 0x08 总结 实质,...不断在跟黑名单博弈,利用链前半段依旧不变,一直找可以替代的Extractor。平时的一些挖洞,类比思路是一个很好的技巧,比起全盘代码审计,显得更加高效。

3.2K30

一文解密所有WebLogic密文

密文,于是查阅大量资料后整理了7种解密weblogic的方法。...WebLogic Server 12cR2(12.2.1.4)-2019年9月27日 WebLogic Server 12cR2(12.2.1.3)-2017年8月30日 WebLogic Server...适用场景:本地和服务器都可以执行,但本地的话要求比较多,该方法我是直接在服务器测试运行。...解密方法3:执行java代码1 本地或服务器都可执行,本地的话需要weblogic环境,且版本要和目标系统版本一致。服务器执行时要求能通过webshell能执行java命令。...但是有些情况下这些环境变量没有加进去(可以通过echo $CLASSPATH 查看是否为),$CLASSPATH为时则需要手工执行一下(linux下,windows一般不会出现这个情况) 手工执行setWLSEnv.sh

2.3K20
  • 《大型网站技术架构》学习笔记-03案例篇

    最后一篇案例篇,"愿站在巨人的肩膀",加油熊二同学。...其和核心是反向代理服务器Squid集群,请求通过LVS分发到每台Squid服务器,热点词条被缓存于此处,同时将关键词条发在CDN服务器,其准则是内容页面不包含动态信息,具有唯一REST风格url,便于...CDN快速查询并避免重复缓存,HTML响应头中写入缓存控制信息。...使用MySQL时,使用较大的服务器内存,使用RAID0加速磁盘访问,将事务一致性设置较低水平,如果Master宕机,直接切换到Slave并关闭写服务,进行服务降级。...不好的变成习惯引发的故障:加强code review,控制好代码质量,比如java的指针异常的判断。 参考资料 李智慧. 大型网站技术架构[M]. 北京:电子工业出版社, 2013.

    872100

    C# 可类型

    可能引发指针异常: 虽然可类型减少了引用异常的发生概率,但如果开发人员不正确地处理可类型,仍然可能引发指针异常,因此需要开发人员小心处理可类型的使用。..."Default Name"; bang运算符 bang运算符其实就是个感叹号,if的布尔表达式里是用来取反的但是类型中它的作用有了些变化,它允许变量被赋予一个可以为的值。...但是,如果你确定一个可类型的变量某一点肯定不会为,你可以使用 !.运算符 来断言它的非空性。...Lambda表达式和委托中使用: Action action = (x) => { int nonNullable = x!...; // Do something with nonNullable }; Lambda表达式或委托中,可以使用!.运算符来断言参数为非。 C#可类型会有性能问题吗?

    27050

    从Java 9 到 Java 17之Java 13

    Switch表达式 我觉得switch表达式日常中开发被使用的太少了,不是因为这个关键字和if比起来太“难”,而是因为它很冗长,而且这种视觉的噪声容易掩盖那些难以调试的错误,特别是那些break语句...WEDNESDAY -> { System.out.println("day = " + day); // 错误的写法,会引发编译错误...// yield 才是正确的 yield 9; }; default -> 11; }; 更合理的指针提示...指针异常是Java最常见的异常之一,Java 14之前的指针异常堆栈信息中只是提示给定行的发生了NullPointerException,不够直观清晰: Exception in thread...int array because "arr" is null at cn.felord.SomeClass.main(SomeClass.java:17) 我们可以明确地知道arr为null导致了指针

    31330

    第96篇:蓝队分析研判工具箱1.08版本(溯源辅助|解密攻击流量|冰蝎、哥斯拉、天蝎解密|资产测绘搜索)

    2 修复“网资产测绘”功能的多处json文本处理不当引发的bug,新增指定域名搜索功能。 3 新增对16进制Hex编码的内存马反编译功能。...域名、ip综合研判(网资产测绘) 此功能还在继续更新,输入xxx.com或者ip地址或者ip段进行搜索,点击“一键查询所有”按钮,程序会自动调用Hunter、佛法、VirusTotal、Censys、...当然,此功能对于红队人员也特别方便,方便大家编写tomcat、springboot、weblogic内存马时进行class文件反编译对比分析。...比如说最简单的URL编码、16进制的Hex编码、Base64编码,很多工具就没有考虑到中文字符的GB2312、UTF-8编码问题,导致解密结果不正确或者是乱码。...后续会加入weblogic日志分析功能,其它web日志分析功能。

    38310

    【笔记】《C++Primer》—— 第2章

    所有对引用的操作与对原对象的操作效果是都是相同的,它们会同时被改变,将引用作为原来变量的另一种表示就可以了 引用由于只能绑定在对象,理解为只能绑定在有名称的对象,所以不能与表达式或者字面值之类的匿名对象绑定...,需要一个解引用符* 要时刻注意所使用的指针是不是指针或无效指针(野指针) C11引入了专门的指针关键字nullptr来替代C风格的预处理量NULL。...其中nullptr是指针void*类型,NULL是整形int=0,虽然NULL也会被视作指针但是有时候会出现区别,例如想要给函数传入指针时,若函数的形参是void*,则无法传入NULL值的指针。...define由于是预处理阶段进行简单的文字替换的预处理操作,所以使用相同define的变量也会申请自己的内存,define还由于是文字替换所以没有类型检查。...之别,但是实际仔细从右到左分析const的修饰就可以理解 我们有时候需要用const指向还没被计算出来的常量表达式,但是巨大的系统中有些表达式我们很难判定是不是常量表达式,C11引入了constexpr

    52220

    3.Python对象

    整型) 0.0(浮点型) 0.0+0.0j(复数) '' (空字符串) [] (列表) () (元组) {} (字典) 值不是上面列出来的任何值的对象的而不知都是True , 例如non-empty...前面提到过Python支持一个表达式进行多种比较操作 ,其实这个表达式本质是由多个隐式的and 链接起来的多个表达式....核心笔记 : Python学习过程中, 偶尔会遇到某个运算符和某个函数是做同样一件事情 ,之所以如此是因为某些场合函数会比运算符更适合使用. 函数比表达式用起来方便 ....: Python替你管理内存,因此没有必要访问指针....你可以用id()得到一个对象的身份号, 这是最接近指针的地址.因为你不能控制这个值,所以其实没有太大意义.Python中,一切都是指针 .

    67210

    PawSQL周更新 | 新增6个SQL审查重写规则

    概述 本文介绍PawSQL一周新增的四个SQL审查规则 避免使用STRAIGHT_JOIN 避免使用Natural Join 避免使用CROSS JOIN 避免COUNT DISTINCT多个可列...避免使用STRAIGHT_JOIN Straight Join是MySQL中的一种表连接方式,它会强制以表的定义顺序来进行表连接,结果它等价于内连接。...NPE问题重写 SQL的NPE(Null Pointer Exception)问题是指在SQL查询中,当聚合列全为NULL时,SUM、AVG等聚合函数会返回NULL,这可能会导致后续的程序出现指针异常...then 0 else sum(t.b) end from (values row(1,null)) as t(a,b); 这会返回0而不是NULL,避免了指针异常...参数是表达式表达式可以为 列定义不可为,但是是外连接的内表,结果可能为 数据库类型及版本 MySQL、openGauss、Oracle、PostgreSQL、KingbaseES、MariaDB

    8210

    C++中指针和引用的区别

    注意:引用作为函数参数时,会引发一定的问题,因为让引用作参数,目的就是想改变这个引用所指向地址的内容,而函数调用时传入的是实参,看不出函数的参数是正常变量,还是引用,因此可能引发错误。...从概念讲。指针从本质讲就是存放变量地址的一个变量,逻辑是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变。...C++中,指针和引用经常用于函数的参数传递,然而,指针传递参数和引用传递参数是有本质的不同的: 指针传递参数本质是 值传递的方式,它所传递的是一个地址值。...指针变量符号表对应的地址值为指针变量的地址值,而引用在符号表对应的地址值为 引用对象的地址值。...对于不可寻址的值,如文字常量,以及不同类型的对象,编译器为了实现引用,必须生成一个临时对象,引用实际指向该对象,但用户不能访问它。

    4.9K82

    记录

    复制 [ a = [ b = 2 ] ] 评估记录表达式时,以下内容成立: 分配给每个字段名称的表达式用于确定关联字段的值。...如果分配给字段名称的表达式计算时产生一个值,则该值将成为结果记录的字段的值。 如果分配给字段名称的表达式评估时引发错误,则引发错误的事实与该字段以及引发的错误值一起记录。...对该字段的后续访问将导致使用记录的错误值重新引发错误。 该表达式类似于父环境的环境中进行评估,仅合并了与记录的每个字段的值相对应的变量,除了被初始化的字段。...访问相应字段之前,不会评估记录中的值。 记录中的值最多被评估一次。 表达式的结果是一个带有空元数据记录的记录值。...表没有文字语法。提供了几个标准库函数来构造二进制值。

    49910

    PQ语言规范

    甲原始值是单部分的值,如数字,逻辑,文本或值可用于指示不存在任何数据。...记录值的文字语法允许不带引号的情况下写入名称,这种形式也称为identifiers。下面显示了包含三个字段的纪录名为“ A”,“ B”和“ C”,其中有值1,2和3。...没有用于创建表的文字语法,但有几个标准函数可用于从列表或记录创建表。...选定的表达式本例中2 + 2)被评估并成为if表达式 ( 4)的结果。 错误 的错误是计算表达式的过程中不能产生的值的指示。 错误由遇到错误条件的运算符和函数或通过使用错误表达式引发。...例如,考虑以下引发错误然后立即处理的表达式: 复制 try error "negative unit count" 该表达式评估为以下嵌套记录值,解释[HasError],[Error]以及[Message

    93910

    Kotlin如何优雅地判断EditText数据是否为详解

    快速上手 如果不知道如何在Kotlin中写一个相当简单的Java表达式。...它更加安全:Kotlin是安全的,也就是说我们编译时期就处理了各种null的情况,避免了执行时异常。你可以节约很多调试指针异常的时间,解决掉null引发的bug。...但是就如其他很多现代的语言那样,它使用了很多函数式编程的概念,比如,使用lambda表达式来更方便地解决问题。其中一个很棒的特性就是Collections的处理方式。我稍后会进行介绍。...它是高度互操作性的:你可以继续使用所有用Java写的代码和库,甚至可以一个项目中使用Kotlin和Java两种语言混合编程。一行Java一行Kotlin,别提有多风骚了。...好了,话不多说了,来一看看本文的正文吧 很多时候我们要判断EditText输入的数据是否为Java中需要以下代码: String mobile = etMobile.getText().toString

    1.6K41

    Python3.6.5标准库文档(完整中文版)—内置函数(六)

    注意,如果函数不是且函数是 ,则等价于生成器表达式。...更确切地说,删除前后空白字符后,输入必须符合以下语法: ? 这floatnumber是浮点文字中描述的Python浮点文字的形式。...否则,如果参数是整数或浮点数,则返回具有相同值(Python的浮点精度内)的浮点数。如果参数超出了Python浮点的范围,OverflowError则会引发。...版本3.6中更改:允许使用下划线对代码进行分组,如代码文字。 format(value [,format_spec ] ) 将值转换为“格式化”表示,由format_spec控制 。...调用将被转换为 搜索该值的方法时绕过实例字典。一 ,如果该方法搜索到达引发异常 和format_spec非,或者这两个 format_spec或返回值是不是字符串。

    59220

    CC++数组与指针详解

    32位平台,任何指针类型所占用的空间都是都是4字节。比如sizeof(int*)、sizeof(double*)、sizeof(float*)等的值都为4。...指针变量值的合法化途径通常有两个, 一是显示置,二是让指针指向一个已经存在的变量,三是为指针动态申请内存空间。...(2)取地址运算,即获取指针变量的地址,表达式为&p,其数据类型为int**; (3)指针与整数相加减。表达式p+i(或者p-i),实际是让指针递增或递减地移动i个int型变量的距离。...所以,很多情况下,数组与指针的用法是相同的,但是数组与指针本质存在一些重要的区别。 (1)数组空间是静态分配的,编译时决定大小。而指针定义时,可以没有合法访问的地址空间,也就是野指针。...将多为数组转换为指针的时候,一定要注意多为数组的分解方式,以便进行正确的类型转换。 (6)字符数组与字符指针的区别。 字符数组字符指针形式很接近,但在内存空间的分配和使用上还是有重大的差别。

    75720

    【数据结构】线性表----栈详解

    表达式求值: 中缀表达式转换为后缀表达式,以及后缀表达式求值。 撤销操作: 许多软件中的撤销(Undo)功能基于栈实现。 栈的注意事项 溢出问题: 某些编程语言或环境中,栈的大小是有限的。...访问限制: 栈只允许对栈顶进行操作,这意味着栈中间的元素无法直接访问或修改。 异常处理: 在出栈或查看栈顶元素时,需要处理栈为的情况,否则会引发错误。...另一种栈 实际,以上都是栈计算机科学以及数据结构中的解释,而在另一个计算机领域——计算机系统中,栈实际是另一种事物。接下来对其进行简单的介绍。...栈指针(Stack Pointer, SP): 栈指针是一个寄存器,用于指向当前栈的顶端。每次入栈和出栈操作都会更新栈指针。...局部变量存储: 函数的局部变量通常存储栈帧中,便于管理和清理。 递归支持: 栈结构天然支持递归调用,每次递归调用都会在栈创建新的栈帧。

    11110
    领券