小编Men*_*hem的帖子

如何防止 Weblogic 使用 ExpressionInterceptor?

我正在将网站从运行 Weblogic 11g (10.3.5) 的 Java 6 迁移到运行 Weblogic 12c (12.1.3) 的 Java 8。我发现了几个问题(这有助于我团队中的其他人之前尝试过,但没有取得足够的成功),但一个似乎无法克服,我无法找到任何相关信息。

我们的一个 JSP 无法在浏览器中加载 ,并weblogic.servlet.jsp.CompilationException抱怨“方法 _jspService(HttpServletRequest, HttpServletResponse) 的代码超出 65535 字节限制”。检查.java在两个版本的 Weblogic 中为 JSP生成的文件之间的差异,我看到每个 JSP 表达式都包装在一个 ExpressionInterceptor 中。

例如,在运行 Java 6 的 WebLogic 10 中,<%=user.getLanguage()%>变为out.print(user.getLanguage());. 在运行 Java 8 的 WebLogic 12 中,它变为:

out.print(_jsp_expressionInterceptor.intercept(
    String.valueOf(user.getLanguage()), pageContext,
    weblogic.servlet.jsp.ExpressionInterceptor.Type.Scripting));
Run Code Online (Sandbox Code Playgroud)

在我看来,额外的几个方法调用 - 2 个方法调用,在文件中大约 250 次 - 足以使该_jspService方法超过 64K 限制。(Java 6 中的方法大小,基于来自 的输出javap,是 62912 字节,所以这是有道理的。)

我的问题是:有什么办法可以阻止 Weblogic 生成对ExpressionInterceptor? …

java jsp weblogic java-8 weblogic12c

5
推荐指数
1
解决办法
770
查看次数

为什么“if [[ ... ]] then”(没有分号或换行符)在 ksh 中有效,但在 bash 中无效?

我注意到 KSH 和 Bash 之间的差异,并且我正在寻找记录该差异的位置,或者可能确认其中一个是错误。

在 Korn Shell 中(在 KSH88 和 KSH93 上看到),此命令运行良好,并打印结果“yes”:

if [[ -z "" ]] then echo yes ; fi       # Note no ';' after the ']]'
Run Code Online (Sandbox Code Playgroud)

在 Bash 中,我得到一个syntax error near unexpected token 'then'.

仅当我使用双括号时才会出现此行为。如果我使用单括号形式的条件表达式,KSH 和 Bash 都会给我一个没有分号的语法错误,但会抱怨 而fi不是then.

这是一个错误还是一个功能?在 ksh 或 Bash 中?我注意到 Bash 和 ksh 的手册页的 语法略有不同if,但这种差异似乎不适用于这种情况。


编辑:bash有人(@jp48)指出了和手册页之间语法定义的显着差异ksh。然而,查看与AST源代码匹配的 Solaris (11.3)手册页,语法为:

if list ;then list [ ;elif list ;then list …
Run Code Online (Sandbox Code Playgroud)

bash shell ksh

4
推荐指数
1
解决办法
2238
查看次数

用于 Bash 的“声明”的未记录的“-c”选项?

我在玩 Bash 变量并错误地使用-c选项 (for const)declare而不是-r创建readonly变量的正确选项。令我惊讶的是,该变量保留了-c属性并将我分配的任何值的第一个字母大写。

此行为未在declare的用法中列出,无论是在declare --help输出中还是在 Bash 的信息页面上。它似乎与 ksh 不兼容typeset,尽管-u-l选项是兼容的。

这是一个众所周知的未记录功能吗?是否普遍可用?

bash declare undocumented-behavior

4
推荐指数
1
解决办法
68
查看次数

标签 统计

bash ×2

declare ×1

java ×1

java-8 ×1

jsp ×1

ksh ×1

shell ×1

undocumented-behavior ×1

weblogic ×1

weblogic12c ×1