`

sitemesh,myfaces,richfaces 的集成解决方案

    博客分类:
  • JSF
阅读更多

在集成sitemesh,myfaces,richfaces 时,会遇到各种问题,如:

 1.Could not invoke the service() method on servlet Faces Servlet. Exception thrown : javax.servlet.ServletException: org.apache.myfaces.webapp.webxml.WebXml.init must be called before!

2.java.lang.NoClassDefFoundError: Error while defining class: org.apache.myfaces.custom.autoupdatedatatable.AutoUpdateDataTable
This error indicates that the class: org.apache.myfaces.component.html.ext.HtmlDataTable
could not be located while defining the class: org.apache.myfaces.custom.autoupdatedatatable.AutoUpdateDataTable
This is often caused by having the class at a higher point in the classloader hierarchy

3.Servlet.service() for servlet Faces Servlet threw exception
java.lang.NullPointerException
诸如此类的问题,不一而足,我用的环境是Websphere Application Server 6.1,里面还面临着替换ibm的jsf ri问题,下面逐一解决:

1.在Websphere Application Server 6.1中去掉自带的RI,安装MyFaces RI

主要是改变应用的类加载策略,都改成PARANT_LAST,注意无论是EAR包的加载策略还是WAR的加载策略都需要改变,下面是一个更加详细的文档:       

Unlike Websphere 6.0, in Websphere 6.1 the JSF Sun RI is bundled together with several other WAS libraries in com.ibm.ws.webcontainer_2.0.0.jar, so removing the webspheres JSF API jars is not an option. The procedure below describes how to use MyFaces, TOMAHAWK (and even Tiles) on Websphere 6.1 by altering the module classloader policy to load classes using the application class loader first (thereby loading the MyFaces jars before the Sun RI jars). This procedure has been tested with MyFaces 1.1.3, TOMAHAWK 1.1.3, and Websphere 6.1.0.2.

1. Copy the MyFaces JSF jars and dependencies to WebApp lib (follow step 1 of the Websphere 6.0 Installation Guide without removing IBM jars below).

Make sure you do NOT copy commons-logging-1.0.4 jar (conflicts with the commons-logging jar already provided by Websphere) and also jsp-2.0.jar (which will cause a "com.ibm.ws.jsp.taglib.TldParser logParseErrorMessage: The JSP container failed to load the TagExtraInfo class" exception with JSF applications that use tiles).

2. Deploy the web application on WAS.
3. Alter the module classloader policy to application first.

Note that there are several ways to set the classloader policy in websphere (at the server, application, and module level). You need to set it at the module level as follows: Click on Enterprise Applications > Your application > Manage Modules > Your war file > Change Class loader order to "Classes loaded with application class loader first"

4. Start your application.

2,更换必要的jar包:

我使用的jar包如下:
commons-beanutils-1.7.0.jar
commons-codec-1.3.jar
commons-collections-3.2.jar
commons-digester-1.8.jar
commons-el-1.0.jar
commons-logging-1.0.4.jar
el-api.jar
el-ri.jar
jhighlight-1.0.jar
jstl-1.0.jar
myfaces-all-2005-10-25.jar
myfaces-api-1.1.5.jar
myfaces-impl-1.1.5.jar
nekohtml-0.9.5.jar
richfaces-api-3.1.0.jar
richfaces-impl-3.1.0.jar
richfaces-ui-3.1.0.jar
sandbox.jar
sitemesh-2.3.jar
tomahawk.jar
xercesImpl-2.4.0.jar

其中sitemesh这个包需要重新build,具体的方法如下(可以参照reference1):

你需要重新下载这个文件:SMViewHandler.zip ,也可以从本文的附件中下载,然后:
+You can drop the unzipped folder in sitemesh source folder and do a rebuild.(rebuild的时候需要添加myfaces的jar包到lib目录下,还需要添加log包,也可以直接使用附件中带的jar)
+Add the following to your web.xml:

  1. <filter>  
  2.         <filter-name>sitemeshfilter-name>  
  3.         <filter-class>net.climbingrose.sitemesh.filter.SMInitFilterfilter-class>  
  4.     filter>  
  5.     <filter-mapping>  
  6.         <filter-name>sitemeshfilter-name>  
  7.         <url-pattern>/*url-pattern>  
  8. filter-mapping>    


+In your faces-config.xml:

  1. <view-handler>  
  2. net.climbingrose.sitemesh.jsf.SMViewHandlerImp   
  3. view-handler>  

3.配置web.xml

我的web.xml配置如下:

  1. <!---->xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  
  5.   
  6.   
  7.     <description>smrdescription>  
  8.   
  9.     <context-param>  
  10.         <param-name>javax.faces.CONFIG_FILESparam-name>  
  11.         <param-value>/WEB-INF/examples-config.xmlparam-value>  
  12.   
  13.     context-param>  
  14.   
  15.     <context-param>  
  16.         <param-name>javax.faces.STATE_SAVING_METHODparam-name>  
  17.         <param-value>clientparam-value>  
  18.     context-param>  
  19.   
  20.     <context-param>  
  21.         <param-name>com.sun.faces.validateXmlparam-name>  
  22.         <param-value>trueparam-value>  
  23.     context-param>  
  24.     <context-param>  
  25.         <param-name>com.sun.faces.verifyObjectsparam-name>  
  26.         <param-value>trueparam-value>  
  27.     context-param>  
  28.   
  29.     <context-param>  
  30.         <param-name>org.ajax4jsf.COMPRESS_SCRIPTparam-name>  
  31.         <param-value>falseparam-value>  
  32.     context-param>  
  33.     <context-param>  
  34.         <param-name>org.ajax4jsf.xmlparser.ORDERparam-name>  
  35.         <param-value>NEKOparam-value>  
  36.     context-param>  
  37.   
  38.     <filter>  
  39.         <filter-name>ajax4jsffilter-name>  
  40.         <filter-class>org.ajax4jsf.Filterfilter-class>  
  41.     filter>  
  42.        
  43.     <filter>  
  44.         <filter-name>sitemeshfilter-name>  
  45.         <filter-class>net.climbingrose.sitemesh.filter.SMInitFilterfilter-class>  
  46.     filter>  
  47.        
  48.     <filter-mapping>  
  49.         <filter-name>ajax4jsffilter-name>  
  50.         <servlet-name>Faces Servletservlet-name>  
  51.         <dispatcher>FORWARDdispatcher>  
  52.         <dispatcher>REQUESTdispatcher>  
  53.         <dispatcher>INCLUDEdispatcher>  
  54.         <dispatcher>ERRORdispatcher>  
  55.     filter-mapping>  
  56.        
  57.     <filter-mapping>  
  58.         <filter-name>sitemeshfilter-name>  
  59.         <url-pattern>/*url-pattern>  
  60.     filter-mapping>    
  61.        
  62.     <listener>      
  63.         <listener-class>org.apache.myfaces.webapp.StartupServletContextListenerlistener-class>      
  64.     listener>     
  65.     <!---->  
  66.     <servlet>  
  67.         <servlet-name>Faces Servletservlet-name>  
  68.         <servlet-class>javax.faces.webapp.FacesServletservlet-class>  
  69.         <load-on-startup>1load-on-startup>  
  70.     servlet>  
  71.   
  72.     <!---->  
  73.   
  74.     <!---->  
  75.   
  76.     <servlet-mapping>  
  77.         <servlet-name>Faces Servletservlet-name>  
  78.         <url-pattern>/faces/*url-pattern>  
  79.     servlet-mapping>  
  80.   
  81.   
  82.     <!---->  
  83.     <servlet-mapping>  
  84.         <servlet-name>Faces Servletservlet-name>  
  85.         <url-pattern>*.jsfurl-pattern>  
  86.     servlet-mapping>  
  87.   
  88.     <!---->  
  89.   
  90.     <welcome-file-list>  
  91.         <welcome-file>index.jspwelcome-file>  
  92.         <welcome-file>index.htmlwelcome-file>  
  93.     welcome-file-list>  
  94.   
  95. web-app>  
 

 具体的原因,我就不具体说了。

下面是我的JSF 配置文件,可以参考:

  1. <!---->xml version="1.0"?>  
  2.   
  3. <!---->
  4.   "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"   
  5.   "http://java.sun.com/dtd/web-facesconfig_1_0.dtd" >  
  6.   
  7. <faces-config>  
  8.     <application>  
  9.         <view-handler>  
  10.             net.climbingrose.sitemesh.jsf.SMViewHandlerImp   
  11.         view-handler>  
  12.     application>  
  13.     <!---->  
  14.     <managed-bean>  
  15.         <managed-bean-name>helloWorldBackingmanaged-bean-name>  
  16.         <managed-bean-class>  
  17.             org.apache.myfaces.blank.HelloWorldBacking   
  18.         managed-bean-class>  
  19.         <managed-bean-scope>requestmanaged-bean-scope>  
  20.     managed-bean>  
  21.   
  22.     <!---->  
  23.     <navigation-rule>  
  24.         <from-view-id>/helloWorld.jspfrom-view-id>  
  25.         <navigation-case>  
  26.             <from-outcome>successfrom-outcome>  
  27.             <to-view-id>/page2.jspto-view-id>  
  28.         navigation-case>  
  29.     navigation-rule>  
  30.   
  31.     <!---->  
  32.     <navigation-rule>  
  33.         <from-view-id>/page2.jspfrom-view-id>  
  34.         <navigation-case>  
  35.             <from-outcome>backfrom-outcome>  
  36.             <to-view-id>/helloWorld.jspto-view-id>  
  37.         navigation-case>  
  38.     navigation-rule>  
  39. faces-config>  

 

 

 

 

Refrence:

1,http://jira.opensymphony.com/browse/SIM-201

2,http://java.chinaitlab.com/JBoss/390987.html

3,http://java.chinaitlab.com/JBoss/390987.html

 

  • sitemesh-2.3.jar (184.7 KB)
  • 描述: 已经编译好,可以直接使用
  • 下载次数: 107
分享到:
评论
4 楼 hintcnuie 2007-10-09  
可以啊,但是这种方式不是很好,我们现在已经不采用这种方法了呵呵,
3 楼 lin301021 2007-09-30  
老兄能不能给一个联系方式,有时间交流下呀!我的MSN:lin301021@163.com
2 楼 hintcnuie 2007-09-29  
首先要确保sitemesh能运行,然后再加上myfaces,然后再加上richfaces。
1 楼 lin301021 2007-09-28  
不能用呀!老兄是一个空白页面。

相关推荐

    sitemesh2 集成velocity 装饰页面乱码

    本案例涉及的是将sitemesh2与velocity框架进行集成,以实现页面装饰功能。sitemesh是一款开源的Web页面布局和装饰框架,而velocity则是一个轻量级的Java模板引擎,用于生成动态网页内容。下面我们将深入探讨这个集成...

    springmvc + mybatis + sitemesh3 超简洁例子

    springmvc + mybatis + sitemesh3 超简洁例子 整合springmvc mybatis 方法请看: http://blog.csdn.net/kokoyuo/article/details/52808510

    SiteMesh教程及SiteMesh官方文档翻译

    2. **使用SiteMesh**:集成SiteMesh后,再次进行性能测试。 3. **负载测试**:模拟不同并发用户数量,观察系统的响应时间。 **实验结果** - 在低并发情况下,使用SiteMesh对性能影响不大。 - 随着并发用户数的增加...

    页面装饰器(sitemesh)实例源代码

    在Openfire中集成Sitemesh,可以提升用户体验,为用户提供统一的界面风格。 在MyEclipse中部署Sitemesh的步骤如下: 1. **添加Sitemesh依赖**:首先,你需要在项目的构建路径中引入Sitemesh的库。这通常可以通过...

    sitemesh

    5. **与Web框架的集成**:sitemesh可以方便地与常见的Java Web框架(如Spring MVC、Struts等)集成,提供统一的页面装饰解决方案。 6. **自定义装饰逻辑**:开发者可以通过实现自定义的Decorator类,添加特定的装饰...

    SiteMesh

    SiteMesh 是一个开源的Web应用程序框架,主要用于帮助开发者实现页面布局和装饰功能。...在Web开发中,SiteMesh扮演着视图层...对于那些希望专注于业务逻辑而非页面布局的团队来说,SiteMesh是一个非常有价值的解决方案。

    java sitemesh 页面框架

    4. **与Struts、Spring MVC等框架兼容**:Sitemesh可以很好地与其他MVC框架集成,提供统一的页面布局。 **使用Sitemesh的优点**: 1. **代码组织**:将页面的结构和内容分离,有利于团队协作和代码维护。 2. **重用...

    jsp 页面框架sitemesh 全面帮助文档及示例

    - **Struts**:Sitemesh是Struts的官方推荐页面装饰解决方案,可以方便地与Struts1和Struts2集成。 6. **Sitemesh的优势** - **简洁易用**:Sitemesh的配置和使用相对简单,对于提高开发效率和保持页面一致性有很...

    sitemesh框架简单例子

    此外,Sitemesh还支持自定义装饰器的加载顺序,以及与Spring、Struts等其他框架的集成。 在实际开发中,Sitemesh可以帮助你提高效率,减少重复工作,并确保网站的整体设计一致性。通过深入学习和实践这个“sitemesh...

    siteMesh demo+文档

    SiteMesh 是一个开源的Web应用程序布局和装饰框架,主要用于解决Web应用中的页面布局问题。它通过拦截HTTP请求,将页面内容与预定义的布局模板相结合,实现统一的页面头部、底部和侧边栏等元素,从而提高网站的整体...

    sitemesh-3.0.1-javadoc

    SiteMesh是一个网页布局和装饰框架以及Web应用程序集成框架,可帮助创建由页面组成的网站,这些页面需要一致的外观,导航和布局方案。 SiteMesh会拦截对通过Web服务器请求的任何静态或动态生成的HTML页面的请求,...

    sitemesh3-demo

    5. **MVC集成**: Sitemesh3与Spring MVC、Struts2等框架有良好的集成,可以方便地在这些框架的视图层应用Sitemesh的装饰功能。 6. **动态装饰**: Sitemesh3支持动态装饰,允许在运行时根据请求信息决定是否应用装饰...

    sitemesh jar包

    **Sitemesh** 是一个开源的网页布局和装饰框架,主要用在Java Web应用程序中,用于提供页面布局和模板设计的解决方案。它可以帮助开发者统一网站的外观和感觉,通过分离内容、样式和布局,使代码更加模块化和可维护...

    springMVC与sitemesh的结合

    在提供的压缩包文件"springMVCandsitemesh"中,可能包含了示例代码、配置文件和其他资源,用于演示如何在实际项目中实现Spring MVC与Sitemesh的集成。通过深入研究这些文件,开发者可以更好地理解和实践这种结合方式...

    sitemesh3官方下载包

    开发者可以通过阅读这些文档来了解如何使用Sitemesh3提供的接口和类,以便在自己的代码中集成Sitemesh3的功能。 3. **demo** 目录:这是一个示例应用程序,展示了Sitemesh3如何与实际的Web应用结合使用。通过分析和...

    sitemesh jar包机tld文件

    这个jar包包含了所有SiteMesh的类和方法,使得开发者能够将SiteMesh集成到他们的Web应用程序中。 描述中提到的“jsp采用sitemesh页面布局”是指使用SiteMesh来管理JSP页面的布局。JSP(JavaServer Pages)是一种...

    Sitemesh 3 的使用及配置

    ### Sitemesh 3 的使用及配置 #### 一、Sitemesh 3 简介 Sitemesh 是一个非常实用...通过以上步骤,你可以轻松地在项目中集成并使用Sitemesh 3来实现统一的页面布局和风格设计,提高开发效率的同时也提升了用户体验。

    SiteMesh入门示例

    6. **工具集成**:许多现代的开发环境和构建工具,如 Maven 或 Gradle,都有插件可以简化 SiteMesh 的集成。例如,使用 Maven 的 `sitemesh-maven-plugin` 可以帮助你在构建过程中自动处理 Decorator。 7. **最佳...

    sitemesh-2.2.1.jar sitemesh-2.2.1.jar

    **sitemesh-2.2.1.jar** 是一个用于Web应用程序界面布局的开源框架,由OpenSymphony团队开发。Sitemesh的主要功能是提供页面装饰能力,它可以帮助开发者统一网站的外观和感觉,实现页面模板和内容的分离。通过在...

Global site tag (gtag.js) - Google Analytics