`
javamonkey
  • 浏览: 169410 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Resin3 JSP预编译实现

阅读更多

 

Resin3 JSP预编译实现

 

 

一、 预编译需求

通过预先编译JSP ,而不是在线上编译,节省了线上编译时间,降低系统上线初期超高的 CPU 使用率,以及用户请求等待事件

默认方式,Resin3 提供了俩种预编译( http://www.caucho.com/resin-3.0/jsp/compile.xtp ),但在实际使用的时候,无论哪种方法,都只能编译部分 JSP ,导致优化很不明显,据运维的说,还发生了 log4j 日志无法输出的情况(这个我也很莫名其妙,至今不知道原因)

二、 预编译改善原理

幸好Resin 是公开源码的,通过分析预编译代码,其默认编译方式是每 64 jsp 文件为一组,好处是这样编译速度快,但如果其中有一个 jsp 没有编译通过 , 则这 64 个文件都奖编译失败。在我们系统中,有很多子 jsp ,如果一些 JSP 不幸与这些子 JSP 分在一组,则编译不通过。

 

目前解决办法是每组JSP 只包含一个 jJSP 文件。这样就能保证全部编译,但缺点是需要较长编译时间,在测试系统上大概需要 1 分钟才能编译好 200 多个 JSP 文件

 

代码如下:

package com.javamonkey.common.util;

 

import java.lang.reflect.Method;

 

import com.caucho.java.JavacConfig;

 

public class ResinJSPCompileTask {

 

/**

 * @param args

 */

public static void main(String[] args) throws Exception {

JavacConfig config = JavacConfig.getLocalConfig();

if (config == null) {

config = new JavacConfig();

}

config.setMaxBatch(1);

config.setArgs("-nowarn");

config.init();

//String appDir = "D:\\workspace\\20111221_data\\resin\\webRoot";

//String classDir = "D:\\workspace\\20111221_data\\resin\\webRoot\\WEB-INF\\work\\";

 

 String appDir = args[0];

 String classDir = args[1];

String clsName = "com.caucho.jsp.JspCompiler";

Class jsp = Class.forName(clsName);

Method main = jsp.getMethod("main", new String[0].getClass());

main.invoke(null, new Object[] { new String[] { "-app-dir", appDir,

"-class-dir", classDir } });

 

}

}

 

 

 

 

 

核心代码就是 config.setMaxBatch(1);

另外 appDir  web 根目录, classDir  jsp 编译后的保存的目录,其实就是 ${appDir}/WEB-INF/work.

 

针对编译速度慢的情况,可以做如下调整

换到线上机器进行预编译,速度能提高

2 setMatBatch(2),能节约一半时间。但会有少数 JSP JSP 个数)无法预编译。

 

 

 

分享到:
评论

相关推荐

    resin3 resin3下载

    它采用了预编译JSP和HTTP缓存技术,提高了服务器响应速度。 2. **轻量级**:尽管Resin3支持Java EE标准,但它的设计初衷是作为一个轻量级服务器,相比于其他大型应用服务器,如Tomcat和WebLogic,Resin3具有更小的...

    resin-3.1.8

    3. **性能优化**:Resin以其高性能而闻名,它采用了预编译JSP、零拷贝I/O等技术来提高响应速度。例如,Resin能够将JSP页面编译为Servlet类,以减少运行时的解释成本。 4. **负载均衡与集群**:Resin 3.1.8支持多...

    eclipse resin配置

    Resin支持多种协议,包括HTTP、HTTPS等,并且内置了对Servlet、JSP、EJB等标准的支持,是构建高效稳定Web应用的理想选择。 #### 二、Eclipse集成Resin配置步骤 在开发过程中,将Resin与Eclipse集成可以极大地提高...

    resin-4.0.7-src

    1. **性能优化**:Resin以其高性能著称,它使用了预编译JSP和HTTP连接池等技术,以提高响应速度和并发处理能力。 2. **轻量级架构**:Resin的设计目标是轻量级和高效,这使得它在资源有限的环境中也能有良好的表现...

    Nginx1.1实现Resin4集群

    Resin4是Caucho公司开发的一款开源Java应用服务器,支持Servlet、JSP、EJB等Java标准,提供了快速、稳定的服务。 在实施Nginx1.1与Resin4集群的过程中,关键步骤如下: 1. **Nginx的安装与配置** - 安装Nginx:在...

    resin-3.0.22.zip

    6. **性能优化**:Resin采用预编译JSP和零拷贝网络I/O策略,大大提升了处理速度,减少了内存占用。同时,其异步I/O模型也有助于处理大量并发请求。 7. **日志和监控**:Resin提供详细的日志系统,便于调试和监控...

    resin-2.1.8服务器

    Resin支持Servlets 2.3标准和JSP 1.2标准。熟悉ASP和PHP的用户可以发现用Resin来进行JSP编程是件很容易的事情。 Resin支持负载平衡(Load balancing),可以增加WEB站点的可靠性。方法是增加服务器的数量。比如一...

    Linux版本的resin服务器

    Resin以其高效性能而闻名,它采用了预编译JSP技术和多线程模型,能够有效减少应用的启动时间和提高响应速度。此外,Resin还提供了缓存机制,能够缓存静态内容和预编译的JSP页面,进一步提升了性能。 对于开发和调试...

    resin-3.1.6

    7. **性能优化**:Resin通过预编译JSP、零拷贝I/O、线程池等技术来优化性能,使其在处理高流量网站时表现优秀。 8. **管理工具**:Resin提供了一个基于Web的管理界面,方便管理员监控服务器状态、管理应用和配置...

    resin3.1.5

    它将JSP文件编译成Servlet执行,提高了开发效率。 3. **Web应用程序部署**:用户可以通过WAR(Web ARchive)文件在Resin上部署Web应用程序。WAR文件是一个包含所有Web资源(如HTML、CSS、JavaScript、图片、Servlet...

    resin-3.1.9-src

    《深入解析Resin 3.1.9源代码:揭示J2EE接口的实现细节》 Resin 3.1.9是一款著名的Java应用服务器,它以其高效、稳定和易于扩展的特点,在Java开发者中广受青睐。源代码的开放使得我们有机会深入探究其内部工作机制...

    从一次某微OA的漏洞复现,聊聊Resin的这个特性1

    在这个场景中,Resin在处理JSP文件时,不是直接执行原始的JSP文件,而是将其编译成Java类(字节码)并存储在特定的目录下,如`ecology/WEB-INF/work_jsp_formmode_apps_upload_ktree_images`。即使原始的JSP文件被...

    Resin 3.0.8

    3.0.8版可能优化了JSP编译和执行的效率,提高了整体性能。 3. **性能优化**:Resin以其高性能著称,可能通过优化内存管理、线程池和网络I/O等核心组件,确保了高并发场景下的稳定运行。此外,它可能还具备负载均衡...

    resin-4.0.49

    1. **性能优化**:Resin以其高效性能著称,采用预编译JSP、零拷贝I/O以及高效的线程池管理,能有效提升Web应用的响应速度。在处理高并发请求时,Resin能够保持稳定,提供出色的吞吐量。 2. **多应用部署**:Resin...

    resin-prp-4.0.44

    4. **性能优化**:Resin Pro 4.0.44可能包含一系列的性能优化,例如更高效的HTTP连接管理、预编译JSP、智能缓存策略等,以提高响应速度和处理能力。 5. **安全管理**:作为一个企业级产品,4.0.44版本会提供增强的...

    resin-2.1.17

    - `work/`:Resin工作目录,包含了编译后的JSP文件和其他运行时生成的文件。 使用Resin 2.1.17时,用户通常需要编辑`conf/resin.conf`来配置服务器参数,如端口号、虚拟主机、数据源等。然后将web应用程序打包成WAR...

    Linux+Apache+MySQL+PHP+JSP+phpmyadmin的Resin解决方案.doc

    Resin作为一个轻量级的JSP/Servlet引擎,被推荐用于提高JSP应用的性能和效率。 1. **JSP与PHP的对比** 文档指出JSP在某些方面比PHP更具优势,如运行速度更快、资源消耗较少且功能更强大,特别是对于分布式处理和...

    resin

    它使用了预编译的Servlet和JSP,从而提高了应用的启动速度和运行效率。 2. **负载均衡和集群**:Resin支持负载均衡和集群部署,可以在多台服务器之间分配请求,以提高可用性和扩展性。这对于大型企业级应用来说是...

    JAVA/JSP学习系列之三(Resin+Apache的安装)

    一、前言 对于初学者来说,要执行JSP和Servlet,Tomcat是一个很不错的选择。你也可以用Resin,这两个产品都是可以不花一分钱的。 Resin对Xml的支持是很好的。 二、下载,安装 下载地址为Resin官方站点:...

    Resin 2.1.17 源码

    3. **性能优化**:Resin以其高性能著称,源码中包含了各种性能优化策略,如线程池管理、内存分配策略、数据缓存机制等。深入研究这部分代码,可以帮助我们理解如何在Java环境中实现高性能服务。 4. **JSP和Servlet...

Global site tag (gtag.js) - Google Analytics