Java 如何在Weblogic 10.3.x上利用EL 2.2功能?

Java 如何在Weblogic 10.3.x上利用EL 2.2功能?,java,jsf,jakarta-ee,weblogic,el,Java,Jsf,Jakarta Ee,Weblogic,El,我已经安装了Weblogic 10.3.5。我在服务器上部署了一个带有JSF2.0和JSTL1.2的WAR。但我也需要EL2.2的功能。我需要什么罐子?如果有人能从零开始给我一个循序渐进的指南,那就太好了,因为我已经花了好几个小时试图设置它,但运气不好。最简单的方法是放弃,它是一个兼容EL 2.1的实现,在/WEB-INF/lib中提供了与EL 2.2相同的功能,并告诉JSF实现使用该EL实现。如何做到这一点取决于所使用的JSF实现。对于Mojarra,您需要将以下上下文参数添加到web.xml

我已经安装了Weblogic 10.3.5。我在服务器上部署了一个带有JSF2.0和JSTL1.2的WAR。但我也需要EL2.2的功能。我需要什么罐子?如果有人能从零开始给我一个循序渐进的指南,那就太好了,因为我已经花了好几个小时试图设置它,但运气不好。

最简单的方法是放弃,它是一个兼容EL 2.1的实现,在
/WEB-INF/lib
中提供了与EL 2.2相同的功能,并告诉JSF实现使用该EL实现。如何做到这一点取决于所使用的JSF实现。对于Mojarra,您需要将以下上下文参数添加到
web.xml


com.sun.faces.expressionFactory
org.jboss.el.ExpressionFactoryImpl
对于MyFaces,它是以下上下文参数:


org.apache.myfaces.EXPRESSION\u工厂
org.jboss.el.ExpressionFactoryImpl
另见:

我发现EL2.2的jboss实现在重新部署时有一个永久空间,因此我不得不重新思考这个问题。 我尝试了其他几种可用的实现,即

  • 朱尔2.2.1
  • tomcat jasper el 7.0.35
但是没有人跑。 使用2.2 glassfish实现也不起作用(即使使用首选web inf类或首选应用程序包),这导致类加载问题


我非常感谢任何建议,哪种实现是最新的,能够在不改变服务器类路径的情况下使用weblogic。

我觉得接受的答案可能适用于也可能不适用于每种情况,当然,问题是,您将被困在一个JBoss版本的EL上,而不支持在未来的补丁版本中继续修复适当的2.2实现中的错误

最后,这里是我在WebLogic 10.3.6服务器上的工作原理

我从Glassfish下载了EL 2.2 API和实现JAR,并将它们包含在我的WEB应用程序的
WEB-INF/lib
文件夹中

el-api-2.2.jar

el-impl-2.2.0-SNAPSHOT.jar

完成此操作后,通常需要向
web.xml
添加一个上下文参数,以表示要为新EL实现加载的类,如BalusC的回答中所示。Weblogic似乎并不关心这一点,但是它的类加载器有自己的方式。您需要在
weblogic.xml
中指定,以便为
WEB-INF/lib
中的EL类提供优先类加载。这将允许加载Glassfish实现,以代替与WebLogic捆绑在一起的旧EL实现

 <container-descriptor>
    <prefer-application-packages>
     <package-name>com.sun.el.*</package-name>
     <package-name>javax.el.*</package-name>
  </prefer-application-packages>
</container-descriptor>

com.sun.el*
javax.el*

但集装箱装运时带有
glassfish.el_1.0.0.0_2-1.jar
开箱即用。使用它默认提供的不是更好吗?JBoss EL是一个支持EL2.1的实现,而不是EL2.1 API。您仍然需要容器自己的EL2.1API。只需将其保持不变,并确保在
/WEB-INF/lib
中没有任何特定于容器的库。请注意,“JBoss”名称并不意味着它源于JBoss作为服务器。“JBoss”只是一个软件公司的名字,像“Apache”和“Oracle”。所以glassfish是API,而不是实现?谢谢BalusC,我会再试一次。对不起,Bauke,我道歉:)我感谢你的帮助。在另一篇帖子中回答:[见Levent Tokmak的答案。[1]:如果您仍然对此问题感到好奇,请参阅我的以下答案。Glassfish实现确实有效,我确信您只是在某个地方遇到了构建或部署问题。我倾向于使用Tomcat EL,因为我发现它通常具有更好的varargs支持