欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

Tomcat中的Connector配置讲解

程序员文章站 2022-07-09 16:31:02
jboss使用tomcat作为web容器,因此在jboss中对于web容器的配置也类似于在tomcat中的配置,主要就是对于 server.xml文件的编辑,在jboss...

jboss使用tomcat作为web容器,因此在jboss中对于web容器的配置也类似于在tomcat中的配置,主要就是对于 server.xml文件的编辑,在jboss 5.x中,这个文件位于${jboss.home}\server\${confifure}\deploy\jbossweb.sar下,其中 configure的值可以是all, default,web,standard, minimal等。下面的代码展示了一个jboss default配置下的server.xml,由于篇幅原因,将其中的注释都已经去掉了。

<server> 
  <listener classname="org.apache.catalina.core.aprlifecyclelistener" sslengine="on" /> 
  <listener classname="org.apache.catalina.core.jasperlistener" /> 
  <service name="jboss.web"> 
   <connector protocol="http/1.1" port="8080" address="${jboss.bind.address}"  
        connectiontimeout="20000" redirectport="8443" compression="on"  
        compressionminsize="1" compressablemimetype="text/html,text/xml" /> 
   <engine name="jboss.web" defaulthost="localhost"> 
     <realm classname="org.jboss.web.tomcat.security.jbosswebrealm" 
      certificateprincipal="org.jboss.security.auth.certs.subjectdnmapping" 
      allrolesmode="authonly" 
      /> 
     <host name="localhost">  
      <valve classname="org.jboss.web.tomcat.service.jca.cachedconnectionvalve" 
      cachedconnectionmanagerobjectname="jboss.jca:service=cachedconnectionmanager" 
      transactionmanagerobjectname="jboss:service=transactionmanager" /> 
     host> 
   engine> 
  service> 
server> 

在上面的配置文件中,server是根节点,一个server就代表一个servlet容器,因此在server.xml中,这个节点只能有一个,在server节点下,可以存在一个或者多个service节点。

一个service节点代表了一个或者多个connector和一个engine,而connector和engine是在server.xml中两个重 要的配置项,connector的主要功能是接受、响应用户请求。常用的connector有http/1.1 connector和ajp connector,http/1.1 connector主要用于处理用户的http请求,需要注意的是虽然它名叫http/1.1 connector,但是是完全兼容http/1.0协议的。ajp connector主要使用ajp协议和web connector通信,通常用于集群中。

http/1.1 connector的实例监听在用户配置的端口上,当应用服务器启动时,http/1.1 connector负责创建若干线程,用于处理用户请求,创建的线程数目取决于用户配置的minthreads值,默认为5,当有更多的用户请求到来 时,http/1.1 connector将会创建更多的线程用于处理请求,创建线程的最大值由maxthreads定义,默认值为20,当所有的线程都在忙于处理用户请求时, 新到来的请求将会放入http/1.1 connector创建的socket队列中,队列的长度由acceptcount属性定义,当等待队列也被占用满了,新来的用户请求将会收到connection refused错误。

所有的connector提供的配置项(不完全版scheme, issecure, xpoweredby, useipvhosts ):

  • allowtrace 如果需要服务器能够处理用户的haed/trace请求,这个值应该设置为true,默认值是false;
  • emptysessionpath 如果设置为true,所有session,cookie的path将会被设置为/,这种设置通常是在portlet中比较有用,默认值是false;
  • enablelookups 如果需要在调用request.getremotehost()方法时获取到客户端的机器名,则需要配置为true,如果配置为false,将会跳过dns查询直接返回客户端机器的ip地址,通常为了提高性能,将此值设置为false,默认值是true;
  • maxpostsize post方法能够提交的数据的最大大小,如果没有声明或者设置为小于等于0,则表示post提交的数据大小是不限制的,默认值是2megabytes.
  • protocol 设置处理请求的协议,默认是http/1.1,即org.apache.coyote.http11.http11protocol,此外还 支持的协议有:org.apache.coyote.http11.http11nioprotocol(通过nio处理用户请求,可以提高系统性能), org.apache.coyote.http11.httpaprprotocol。
  • proxyname/proxyport 如果web服务器使用了代理服务器,配置此参数意味着在调用request.getservername的时候将会获取代理服务器的名称,getserverport()将会返回proxyport。
  • redirectport 如果connector的配置是支持非ssl的请求,当一个ssl请求到来时,服务器会自动的将请求重定位到redirectport。
  • uriencoding uri字节转化成string的时候的编码方式,默认为iso-8859-1,如果页面需要支持中文,一般可以将其设置为utf-8或者gbk,gb2312。
  • usebodyencodingforuri 如果设置为true,则会根据页面的编码决定uri的编码方式,默认是false。

http/1.1 connector提供的配置项:

  • acceptcount 等待队列的长度,默认值是100。
  • address 如果tomcat所在的主机有多个ip,这个值声明了用于监听http请求的ip地址。
  • buffersize connector创建的输入流的大小,默认值是2048 bytes,提高这个值可以提升性能,增加内存消耗。
  • compressablemimetype 使用http压缩的mime类型,使用逗号分割,默认值是 text/html,text/xml,text/plain。
  • compression 为了节省带宽,可以将这个值设置为on,从而启用http/1.1 gzip压缩。off关闭压缩,forces强制使用压缩,默认值是off。
  • connectiontimeout connector接受一个连接后等待的时间(milliseconds),默认值是60000。
  • executor 在service节点下,connector节点前可以配置一个executor节点用于管理线程,这个属性的值是配置的executor的名称,如果应用了此属性且executor存在,那么任何其他的关于thread的配置将会被忽略。
  • keepalivetimeout 在connector关闭连接前,connector为另外一个请求keep alive所等待的微妙数,默认值和 connectiontimeout 一样。
  • maxhttpheadersize http请求、响应头信息的最大大小,默认是8192bytes。
  • maxkeepaliverequests http/1.0 keep alive 和http/1.1 keep alive / pipeline的最大请求数目,如果设置为1,将会禁用掉keep alive和pipeline,如果设置为小于0的数,keep alive的最大请求数将没有限制。默认为100。
  • maxthreads 用于处理用户请求的最大线程数,默认值是20。
  • nocompressionuseragents: 设置不使用http gzip压缩的客户端,使用逗号分隔,在某些浏览器不支持压缩的时候可以使用此属性。
  • port connector监听的端口。
  • restricteduseragents 设置不使用keep alive的客户端代理名称,使用逗号分割,默认值是空字符串。
  • server 覆盖http响应的serve头信息,如果不设置的话,默认值是 apache-coyote/1.1。一般情况下不需要关注此属性。
  • socketbuffer socket输出流缓冲区的大小,默认是9000bytes,如果设置为小于0的值,则表示不使用此缓冲区。
  • tcpnodelay 默认值是true,设置为true可以提高系统性能。
  • threadpriority 请求处理线程的优先级,默认的优先级是normal。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接