2011-07-29 67 views
3

這個問題很簡單。將JBoss 5.1從EL 2.1升級到EL 2.2?

JBoss 5.1支持JSP和EL(表達式語言)2.1和Servlet 2.5。

是否可以升級或破解這個使用EL 2.2?

UPDATE:

我試了一下BalusC的回答說,並得到了以下錯誤:

2011-08-01 10:29:52,418 SEVERE [javax.enterprise.resource.webcontainer.jsf.config] (main) Unable to instantiate ExpressionFactory 'org.jboss.el.ExpressionFactoryImpl' 2011-08-01 10:29:52,441 SEVERE [javax.enterprise.resource.webcontainer.jsf.config] (main) Critical error during deployment: com.sun.faces.config.ConfigurationException: It appears the JSP version of the container is older than 2.1 and unable to locate the EL RI expression factory, com.sun.el.ExpressionFactoryImpl. If not using JSP or the EL RI, make sure the context initialization parameter, com.sun.faces.expressionFactory, is properly set.

我不知道這意味着什麼或如何解決它。爲什麼它認爲有一個低於2.1的JSP版本?

+1

我懷疑是升級JBoss本身可能更容易。 – skaffman

+0

@skaffman,不適用於客戶端。他們寧願打破舊版本的JBoss 5.1。感謝您的詢問。 –

回答

7

沒有,雖然替換庫是微不足道的,但畢竟你必須重新聲明符合Servlet 3.0的符合要求的工具。這不會被JBoss 5.1(它是一個Servlet 2.5 impl)所識別,而不會將它的所有庫都替換成與JBoss 6.0(它是一個Servlet 3.0 impl)中的庫相同的庫。把整個東西升級到JBoss 6.0會更容易。

我知道您使用的是JSF 2.0(查看舊的問題標籤時)。如果唯一的功能需求是支持在EL 2.2中儘可能使用參數的JSF支持bean操作方法調用,那麼最好的辦法是在您的web應用的/WEB-INF/lib中放置JBoss-EL JAR文件的副本,並將以下上下文參數添加到您的web應用的web.xml ,假設你在使用Mojarra。

<context-param>  
    <param-name>com.sun.faces.expressionFactory</param-name> 
    <param-value>org.jboss.el.ExpressionFactoryImpl</param-value> 
</context-param> 

不,不可能在JBoss級別配置它。你真的必須在web應用程序級別上完成。有關JBoss EL(它是在EL中調用帶有參數的方法的啓動者)的更多信息,check chapter 34 of the Seam documentation

+0

哇!謝謝,這是我正在尋找的那種建議!是的,我很好,在網絡應用程序級別做這件事。我會試試這個,讓你知道它是否有效。 –

+0

我嘗試了您的建議,並在應用程序啓動時出現錯誤,請參閱我更新的問題。 –

+0

「web.xml」是否符合Servlet 2.5?它應該至少2.5與JSP 2.1一起使用。你是否使用Facelets作爲視圖技術? JBoss EL僅適用於Facelets,不適用於JSP。 JSP 2.1的要求實際上是誤導性的,JBoss EL impl需要EL 2.1 API,它是JSP 2.1 API的一部分。 – BalusC