[ 
https://issues.apache.org/jira/browse/OFBIZ-9483?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Shi Jinghai updated OFBIZ-9483:
-------------------------------
    Attachment: juel-impl-no-osgi-2.2.7.jar

The juel-impl-no-osgi-2.2.7.jar mentioned in the description.

> Enable EL in OFBiz
> ------------------
>
>                 Key: OFBIZ-9483
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-9483
>             Project: OFBiz
>          Issue Type: Improvement
>          Components: ALL COMPONENTS
>    Affects Versions: 16.11.02
>            Reporter: Shi Jinghai
>            Assignee: Shi Jinghai
>            Priority: Trivial
>         Attachments: juel-impl-no-osgi-2.2.7.jar
>
>
> While deploying CAS and Drools-Workbench in OFBiz 16.11.02, the pages with EL 
> report error messages:
>  
> {code:java}
> java.lang.NullPointerException
>       javax.el.CompositeELResolver.add(CompositeELResolver.java:117)
>       org.apache.jasper.el.JasperELResolver.add(JasperELResolver.java:70)
>       org.apache.jasper.el.JasperELResolver.<init>(JasperELResolver.java:58)
>       
> org.apache.jasper.runtime.JspApplicationContextImpl.createELResolver(JspApplicationContextImpl.java:120)
>       
> org.apache.jasper.runtime.JspApplicationContextImpl.createELContext(JspApplicationContextImpl.java:89)
>       
> org.apache.jasper.runtime.PageContextImpl.getELContext(PageContextImpl.java:949)
>       
> org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:934)
>       
> org.apache.jsp.WEB_002dINF.view.jsp.default_.ui.casGenericSuccessView_jsp._jspService(casGenericSuccessView_jsp.java:152)
> {code}
> According to the doc of javax.el.ExpressionFactorym 
> (http://docs.oracle.com/javaee/6/api/javax/el/ExpressionFactory.html):
> {code:java}
> Creates a new instance of a ExpressionFactory?. This method uses the 
> following ordered lookup procedure to determine the ExpressionFactory? 
> implementation class to load: 
> •Use the Services API (as detailed in the JAR specification). If a resource 
> with the name of META-INF/services/javax.el.ExpressionFactory? exists, then 
> its first line, if present, is used as the UTF-8 encoded name of the 
> implementation class. 
> •Use the properties file "lib/el.properties" in the JRE directory. If this 
> file exists and it is readable by the java.util.Properties.load(InputStream?) 
> method, and it contains an entry whose key is "javax.el.ExpressionFactory?", 
> then the value of that entry is used as the name of the implementation class. 
> •Use the javax.el.ExpressionFactory? system property. If a system property 
> with this name is defined, then its value is used as the name of the 
> implementation class. 
> •Use a platform default implementation. 
> {code}
> I added an el.properties in ${jre_home}/lib/, the el.properties has one line:
> {code:java}
> javax.el.ExpressionFactory=org.apache.el.ExpressionFactoryImpl
> {code}
> Restarting OFBiz, the error messages are still there, so there is at least a 
> META-INF/services/javax.el.ExpressionFactory in runtime jars. It comes to 
> 'de.odysseus.juel:juel-spi:2.2.7', unzip it, it only contains a 
> javax.el.ExpressionFactory file with de.odysseus.el.ExpressionFactoryImpl.
> Remove runtime 'de.odysseus.juel:juel-spi:2.2.7' and restart OFBiz, the error 
> messages are still there. Unzip 'de.odysseus.juel:juel-impl:2.2.7', an 
> OSGI-INF/services.xml found:
> {code:java}
> <?xml version="1.0" encoding="UTF-8"?>
> <root xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0";>
>       <scr:component name="de.odysseus.el.ExpressionFactoryImpl">
>               <implementation class="de.odysseus.el.ExpressionFactoryImpl"/>
>               <service>
>                       <provide interface="javax.el.ExpressionFactory"/>
>               </service>
>       </scr:component>
> </root>
> {code}
> It's easy to get it defines javax.el.ExpressionFactory implemented by 
> de.odysseus.el.ExpressionFactoryImpl. Unzip it and create a new jar with 
> command:
> {code:java}
> jar cf juel-impl-no-osgi-2.2.7.jar de/ META-INF/
> {code}
> Put the juel-impl-no-osgi-2.2.7.jar under ${ofbiz.home}/lib/, change the 
> build.gradle:
> {code:java}
> // compile 'de.odysseus.juel:juel-impl:2.2.7'
> compile files('./lib/juel-impl-no-osgi-2.2.7.jar')
> {code}
> Restart OFBiz, both OFBiz pages and EL pages are ok now.
> Stop OFBiz, remove ${jre_home}/lib/el.properties, start OFBiz, EL pages fail. 
> Obviously, this fail is caused by no javax.el.ExpressionFactory defined. Add 
> a META-INF/javax.el.ExpressionFactory with one line content of 
> org.apache.el.ExpressionFactoryImpl in juel-impl-no-osgi-2.2.7.jar.
> Restart OFBiz, all OFBiz and EL pages are right.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to