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

玩转GlassFish V2的隐藏配置

阅读更多

【IT168 技术文档】摘要: 基于向后兼容的考虑,sun在最新发布的GlassFish V2中隐藏了很多配置选项,GlassFish项目组成员Jean-Francois Arcand在本文中向广大开发人员揭示了这些隐藏的属性,希望对大家深入使用GlassFish有所帮助。

因 为从GlassFish V1开始,Grizzly已经替代了Sun's Application Server (SJSAS)里面的Sun WebServer runtime,为了避免与以前的版本不兼容,官方没有公开在GlassFish的domain.xml中作为属性或者元素的一些配置选项。我们会在下一 个V3版本发布的时候解决这个问题,不过现在这些隐藏的特性还在沉睡中,是时候公开它们了!下面公开的这些属性有些是高度NIO(非阻塞I/O)相关,有 些不是。

-Dcom.sun.enterprise.web.connector.grizzly.selector.timeout==xxx : 其中xxx表示毫秒为单位的时间,表示一个NIO Selector为了等待事件(用户请求)阻塞多长时间。缺省状态下是1000(表示阻塞一秒钟)。在一些应用环境下,增加这个值可以减少CPU 占用,不过不推荐修改这个值除非你很重视CPU占用率,而这种情况最可能发生在你的服务器 没有足够内存 的时候。

-Dcom.sun.enterprise.web.connector.grizzly.displayConfiguration=true: 把Grizzly的内部配置写入服务器 log(比如创建线程的数量,多少对象被缓存等)。

-Dcom.sun.enterprise.web.connector.grizzly.enableCometSupport=true: 在所有的http-listener开启Comet支持,包括Admin-gui。

-Dcom.sun.enterprise.web.connector.grizzly.useDirectByteBuffer=true: 用direct ByteBuffer代替heap ByteBuffer。如果你的应用使用大量内存或者做很多写操作的话,打开直接字节缓存会提高执行效率。

-Dcom.sun.enterprise.web.connector.grizzly.pipelineClass=className: 用一个自定义的线程池替换缺省的Grizzly线程池。通过实现简单的Pipeline接口你可以很容易构造自己的线程池。

-Dcom.sun.enterprise.web.connector.grizzly.algorithmClassName=className: 用一个自定义的http分析器替换现有的分析器。如果你想基于一些特定的应用请求头优化分析过程,那么这个会有帮助,不过因为它可能会打断http的处理逻辑,所以你要使用的话必须非常小心。

-Dcom.sun.enterprise.web.connector.grizzly.maxSelectors=xxx: xxx表示在未完成的读操作中用来读取更多字节的临时NIO Selector的数量。缺省值是20,不过如果你运行在一个低速的网络 上,通过调节它可以在很大程度上提高执行效率。

-Dcom.sun.enterprise.web.connector.grizzly.factoryTimeout= 5000: 当Grizzly试图从一个浏览器请求中读取数据的时候,当读操作发生时数据可能还没准备好。缺省状态下,线程会等待5秒钟,然后再终止请求。在一些慢速(或者快速)的网络中,修改这个值可以显著的提高执行效率(拥有更高的通过率)。

-Dcom.sun.enterprise.web.connector.grizzly.asyncHandlerClass=className: c替换缺省的Grizzly的异步请求处理(ARP)AsyncHandler实现。如果你想在应用中使用ARP的话,这个选项对你很有用。

-Dcom.sun.enterprise.web.connector.grizzly.asyncHandler.ports=8080,4848: 定义支持ARP策略的端口号。

-Dcom.sun.enterprise.web.connector.grizzly.enableSnoop=true: 在服务器log中存储 requests/response信息。在调试的时候很有用,不过它会显著降低执行效率,因为所有的request/response字节都要被转化成字符串。

-Dcom.sun.enterprise.web.connector.grizzly.readTimeout=5000: 表示Grizzly在抛弃连接以前等待读取开始的时间。如果你经常遭受DOS攻击的话,减少这个值可以显著提高你的站点效率。

-Dcom.sun.enterprise.web.connector.grizzly.writeTimeout=30000: 表示Grizzly 在停止等待浏览器读取相应数据之前的等待时间。缺省情况下,如果浏览器在30秒之内没有读到全部的响应数据,Grizzly会断开连接。修改这个值有助于提高在慢速(或者快速)网络下的效率。

-Dcom.sun.grizzly.comet.notificationHandlerClassName=classname: 如果你使用Comet,你可能希望通过提供自定义的通知策略来提升服务器的push效率。

-Dcom.sun.grizzly.http.bufferResponse=true: 表示在发向客户端之前缓存整个响应数据。在这个情况下,因为你只需执行一次写操作而不是多次,所以它可能会提升效率。

-Dcom.sun.enterprise.web.connector.grizzly.OOBInline=true: 参考JDK的定义。

-Dcom.sun.enterprise.web.connector.grizzly.protocolFinders= xxx: 注入你自己的Protocol finder。如果你希望在你个服务器上打开单个tcp端口,在这个端口上同时服务于好几个协议(不止是http)的话,这个配置对你非常有用。

-Dcom.sun.enterprise.web.connector.grizzly.protocolHandlers=className: w当一个协议被发现以后(参考上一个属性),把它重定向到正确的container/server等。

上面所有的属性都需要用jvm-options元素添加到domain.xml里面:

<jvm-options>-D....</jvm-options>

同时,下面这些属性可以被增加到domain.xml里面的http-service下面:

<property name="xxx" value="xxx"/>

compression=on|off 开启|关闭http压缩。

selectorThread=className: 修改缺省的基于HTTP的SelectorThread,用你自己的实现来代替。具体作法可以用the JRuby extension 做为一个实例来参考。

rcmSupport=true: 打开资源消耗管理扩展。

maxPostSize=number : 增加Grizzly可以处理的最大post数量。

cometSupport=true : 为一个特定的端口开启Grizzly Comet支持(不是所有的porhttp-listener)。

哟呼! Grizzly没有什么隐藏的地方了 :-)!

分享到:
评论

相关推荐

    Glassfish V2 And NetBean6

    通过NetBeans 6,你可以直接在IDE中配置、启动和停止Glassfish服务器,管理应用的部署和版本控制,极大地提高了开发效率。同时,NetBeans 6的集成测试环境使得开发者能够快速检查代码的正确性,确保应用在部署到...

    Glassfish V2与Apache的整合

    《Glassfish V2与Apache整合详解》 在IT行业中,服务器的高效运行和灵活配置是提升应用程序性能的关键。本文将详细介绍如何将Java EE应用服务器Glassfish V2与Web服务器Apache进行整合,以实现更强大的服务架构。...

    glassfish-v2 source code

    《深入解析Glassfish-v2源码》 Glassfish-v2是一款基于Java EE 5标准的开源应用服务器,其源码的公开为开发者提供了深入了解和学习Java企业级开发的宝贵资源。在本文中,我们将深入探讨Glassfish-v2的核心概念、...

    glassfish ant eclipse 配置 指南 图解

    ### GlassFish、Ant与Eclipse配置指南:详细步骤与图解 #### 一、环境准备:设置基础环境变量 在开始GlassFish服务器的配置之前,首先确保已经正确设置了以下环境变量: - **JAVA_HOME**: 指向已安装的JDK目录。...

    eclipse与glassfish3.1.1使用配置-连接池配置-JNDI配置[归纳].pdf

    "Eclipse 与 GlassFish 3.1.1 配置指南" 概述: 本文档旨在指导读者如何在 Eclipse 中配置 GlassFish 3.1.1,实现连接池配置和 JNDI 配置。同时,也会解决在部署过程中可能出现的异常。 一、GlassFish 3.1.1 简介 ...

    glassfish v2 在windows 构建启动服务

    glassfish 安装构建在windows 中自动启动服务。

    glassfish安装配置文档

    GlassFish 安装配置文档 GlassFish 是一个基于 Java 的开源应用服务器,提供了一个强大且灵活的平台来部署和管理基于 Java 的应用程序。本文档将指导 readers 通过安装和配置 GlassFish 服务器,并将其与 Eclipse ...

    在Glassfish v2ur1 中测试grizzly comet chat demo

    《在Glassfish v2ur1 中测试grizzly comet chat demo》 这篇博文主要探讨的是如何在Glassfish v2ur1服务器上部署并测试一个基于Grizzly Comet技术的聊天示例应用。Grizzly是Java的一个开源网络框架,它提供了一种...

    glassfish v2 windows all 启动服务

    通过windows sc dos 命令给windows 服务添加启动服务。 sc create SS9PE binPath= "D:\appserver\glassfish-v2ur1\lib\appservService.exe

    glassfish和ant安装与配置

    ### GlassFish和Ant安装与配置 #### 一、概述 本文档主要介绍如何在Windows平台上安装和配置GlassFish服务器以及Ant构建工具,并在Eclipse IDE中进行相应的设置,以便能够顺利地开发、构建和部署Java Web应用程序...

    glassfish手工配置domain

    glassfish手工修改domain部署应用步骤,文档详细介绍了如何使用手工部署一个web文件夹目录形式的应用,以及手工配置jdbc

    GlassFish 管理配置

    文件标题“GlassFish 管理配置”明确指出,本文档将聚焦于GlassFish服务器开源版本5.0的管理和配置。描述中提到的“配置和管理GlassFish服务器开源版本的说明”进一步强调了这一主题,并暗示了文档将详细介绍如何对...

    在GlassFish中配置数据源连接池

    GlassFish 数据源连接池配置 GlassFish 是一个开源的 Java EE 应用服务器,它提供了一个基于 Web 的管理接口,允许用户通过 Web 界面配置和管理服务器的各种设置。其中,配置数据源连接池是 GlassFish 的一个重要...

    glassfish配置jndi(DB2数据库)

    本教程将详细讲解如何在Glassfish服务器上配置JNDI以连接到DB2数据库。 首先,我们需要准备DB2数据库的驱动文件。在进行任何配置之前,确保你已经有了DB2的JDBC驱动,即db2jcc.jar和db2jcc_license_cu.jar。这两个...

    Glassfish关于tomcat的文档

    - **简化配置**:GlassFish提供了更为直观的配置方式,减少了开发者在设置过程中可能遇到的问题。 ##### 可靠性和可用性 - **高可用性**:GlassFish支持集群配置,这意味着可以在多台服务器上运行相同的应用程序...

    Glassfish部署web项目

    #### 三、安装与配置Glassfish V2 ##### 1. 下载并安装Glassfish V2 - **下载**: 访问官方网站下载最新版本的Glassfish V2安装包。 - **安装**: 使用命令行安装,确保系统中已安装了JDK 1.5或更高版本。执行命令 `...

Global site tag (gtag.js) - Google Analytics