2013年4月23日火曜日

JBoss7にJSF1.2をデプロイする

JBoss7のGateInに、JSF1.2のポートレットをデプロイしてアクセスすると、
必ずUnsupportedOperationExceptionが発生して動かない。

で、調べてみた処web.xmlにコンテキストパラメータを設定しないといけないようだ。

[参考ページ]
Deploying Simple JSF 1.2 application in jboss 7
https://community.jboss.org/thread/170729
Design of AS7 multi-JSF feature
https://community.jboss.org/wiki/DesignOfAS7Multi-JSFFeature
JBoss AS7 tips
http://www.liferay.com/ja/community/wiki/-/wiki/Main/JBoss+AS7+tips
JSF 1.2 in AS 7
JBoss AS7 comes with JSF 2.0 implementation. Still, you can enable JSF 1.2 very simply, by adding the following snipped in web.xml:
<context-param>
      <param-name>org.jboss.jbossfaces.JSF_CONFIG_NAME</param-name>
      <param-value>Mojarra-1.2</param-value>
</context-param>

Lastly, application do not need jsf implementation jars or jstl jars, as they are already available by JBoss AS7.

20130527 追記
ただし、使用可能なのはデフォルトのMojarra 1.2, Mojarra 2.0, MyFaces 2.0。
MyFaces 1.2以下はデフォルトではNGみたい。
Chapter 3. Deploying Your JSF Applications
http://docs.jboss.org/jbossas/6/JSF_Guide/en-US/html/jsf.deployer.config.html
JBoss AS ships with three JSF Implementations, Mojarra 1.2, Mojarra 2.0, and MyFaces 2.0.

ちなみにMyFacesの場合は、こんな感じ。
Tomcatアプリケーションで動かす場合でも、この設定が必要。
(JBoss7固有の方便が、Tomcatでも強制されるってのは非常に迷惑だと思うのだが…)
<context-param>
      <param-name>org.jboss.jbossfaces.JSF_CONFIG_NAME</param-name>
      <param-value>MyFaces-1.2</param-value>
</context-param>


20130527 追記
上記はOpenShiftのEWS(Tomcat7)上でTobagoを動作させるのに使用した設定。
JBoss7.1上ではNGかもしれない。
素朴にスンゴク迷惑千万なWEBコンテナに思えるのだが…。

[web.xml]

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>FileServlet</servlet-name>
<servlet-class>com.test.FileServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>FileServlet</servlet-name>
<url-pattern>/FileServlet</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>faces/view.jsp</welcome-file>
</welcome-file-list>
<context-param>
<description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
<param-value>resources.application</param-value>
</context-param>
<listener>
<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>
<context-param>
<param-name>org.jboss.jbossfaces.JSF_CONFIG_NAME</param-name>
<param-value>Mojarra-1.2</param-value>
</context-param>
</web-app>

0 件のコメント:

コメントを投稿