给Tomcat,Apache配置gzip压缩(HTTP压缩)功能

by Administrator 2010.9.11 16:04
HTTP 压缩可以大大提高浏览网站的速度,它的原理是,在客户端请求网页后,从服务器端将网页文件压缩,再下载到客户端,由客户端的浏览器负责解压缩并浏览。相对于普通的浏览过程HTML ,CSS,Javascript , Text ,它可以节省40%左右的流量。更为重要的是,它可以对动态生成的,包括CGI、PHP , JSP , ASP , Servlet,SHTML等输出的网页也能进行压缩,压缩效率惊人一,对于Tomcat5.0以后的版本是支持对输出内容进行压缩的. 使用的是gzip压缩格式下面是tomcat5.5.20 中的$tomcat_home$/conf/server.xml的原内容 1       < Connector  port ="80"  maxHttpHeaderSize ="8192"  2                maxThreads ="150"  minSpareThreads ="25"  maxSpareThreads ="75"  3                enableLookups ="false"  redirectPort ="8443"  acceptCount ="100"  4                connectionTimeout ="20000"  disableUploadTimeout ="true"  URIEncoding ="utf-8"   />  5      <!--  Note : To disable connection timeouts, set connectionTimeout value 6      to 0  -->  7      8      <!--  Note : To use gzip compression you could set the following properties : 9     10                compression="on" 11                compressionMinSize="2048" 12                noCompressionUserAgents="gozilla, traviata" 13                compressableMimeType="text/html,text/xml"14      -->从上面的第8行内容可以看出,要使用gzip压缩功能,你可以在Connector实例中加上如下属性即可1) compression="on" 打开压缩功能2) compressionMinSize="2048" 启用压缩的输出内容大小,这里面默认为2KB3) noCompressionUserAgents="gozilla, traviata" 对于以下的浏览器,不启用压缩 4) compressableMimeType="text/html,text/xml" 压缩类型我这里的配置内容为: 1    <Connector port="80" maxHttpHeaderSize="8192" 2               maxThreads="150" minSpareThreads="25" maxSpareThreads="75" 3               enableLookups="false" redirectPort="8443" acceptCount="100" 4               connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="utf-8" 5                  compression="on"  6               compressionMinSize="2048"  7               noCompressionUserAgents="gozilla, traviata"  8               compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"  /> 9    <!-- Note : To disable connection timeouts, set connectionTimeout value10     to 0 -->11    12    <!-- Note : To use gzip compression you could set the following properties :13    14               compression="on" 15               compressionMinSize="2048" 16               noCompressionUserAgents="gozilla, traviata" 17               compressableMimeType="text/html,text/xml"18    -->19二,对于Apache而言,有两种情况   1)针对Apache2.0之前的版本,它原本是不支持的,不过可以通过添加第三方的module_gzip模块来启用   2)针对Apache2.0及之后的版本,Apache提供支持, 不过不叫gzip,而叫mod_deflate下面就对Apache2.0及之后的版本作一个说明1) 去掉#LoadModule headers_module modules/mod_headers.so前面的注释#,2) 添加LoadModule deflate_module modules/mod_deflate.so3) 在VirtualHost中添加1    <Location "/">2        SetOutputFilter DEFLATE3        BrowserMatch ^Mozilla/4 gzip-only-text/html4        BrowserMatch ^Mozilla/4\.0[678] no-gzip5        BrowserMatch \bMSIE !no-gzip !gzip-only-text/html6        SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary7        Header append Vary User-Agent env=!dont-vary8    </Location>9我这里面有一个完整的演示 1# 加载deflate模块 2LoadModule headers_module modules/mod_headers.so 3LoadModule deflate_module modules/mod_deflate.so 4<VirtualHost *:80> 5    DocumentRoot f:/apacheTest 6    <Location "/"> 7        SetOutputFilter DEFLATE 8        BrowserMatch ^Mozilla/4 gzip-only-text/html 9        BrowserMatch ^Mozilla/4\.0[678] no-gzip10        BrowserMatch \bMSIE !no-gzip !gzip-only-text/html11        SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary12        Header append Vary User-Agent env=!dont-vary13    </Location>14</VirtualHost>

Tags:

Java

Eclipse JAVA文件注释乱码

by Administrator 2010.9.7 08:57
将别人的项目或JAVA文件导入到自己的Eclipse中时,常常会出现JAVA文件的中文注释变成乱码的情况,主要原因就是别人的IDE编码格式和自己的Eclipse编码格式不同。总结网上的建议和自己的体会,可以参考以下几种解决方式: 1 改变整个文件类型的编码格式    1)  eclipse->window->preferences->General->Content Types    2)  找到要修改的文件的类型(JAVA,JSP等等),在下面有个Default encoding,在输入框中输入GBK    3)  点击Update    4)  点击OK    5)  重启eclipse2 改变整个Eclipse工作空间的编码格式    1)  eclipse->window->preferences->General->workspaceTypes    2)  改变文本文件编码格式为GBK3 改变单个文件的编码格式   在包资源管理器右键点击文件->属性,改变文本文件编码格式为GBK4 如果以上几种方式仍不能解决,可以下面这个不得已的办法:   用Editplus打开要转码的文件,如果在Editplus中没有乱码,可直接将文件内容拷贝到Eclipse中,如果Editplus也有乱码,可先在Editplus转码,Editplus->文档->文件编码方式->改变文件编码方式->GBK,然后再用Eclipse打开就可以了

Tags:

Java

AJP协议

by Administrator 2010.8.8 15:00
AJP13是定向包协议。因为性能原因,使用二进制格式来传输可读性文本。WEB服务器通过TCP连接和SERVLET容器连接。为了减少进程生成socket的花费,WEB服务器和SERVLET容器之间尝试保持持久性的TCP连接,对多个请求/回复循环重用一个连接。一旦连接分配给一个特定的请求,在请求处理循环结束之前不会在分配。换句话说,在连接上,请求不是多元的。这个是连接两端的编码变得容易,虽然这导致在一时刻会有很多连接。   一旦WEB服务器打开了一个到SERVLET容器的连接,连接处于下面的状态: ◆ 空闲 这个连接上没有处理的请求。 ◆ 已分派 连接正在处理特定的请求。   一旦一个连接被分配给一个特定的请求,在连接上发送的基本请求信息是高度压缩的。在这点,SERVLET容器大概准备开始处理请求,当它处理的时候,它能发回下面的信息给WEB服务器: ◆ SEND_HEADERS 发送一组头到浏览器。 ◆ SEND_BODY_CHUNK    发送一块主体数据到浏览器。 ◆ GET_BODY_CHUNK 从请求获得下一个数据如果还没有全部传输完,如果请求内容的包长度非常大或者长度不确定,这是非常必要的。例如上载文件。注意这和HTTP的块传输没有关联。 ◆ END_RESPONSE 结束请求处理循环。

Tags:

Java

Apache 建立、修改虚拟目录和设置默认页面

by Administrator 2010.8.8 14:58
设置Apache 的虚拟目录和默认首页......建立虚拟目录1.找到"conf/httpd.conf" 文件2.在httpd.conf里面加了如下语句Alias /anstyla "E:/anstyla/src/web" <Directory "E:/anstyla/src/web">           Options Indexes MultiViews           AllowOverride None           Order allow,deny           Allow from all </Directory>在此模块下建立虚拟目录,Alias /虚拟目录名称/ "虚拟目录路径,以[/]代替[\]"例如:Alias /admin "D:/web/admin/"(*)/admin 为虚拟目录名称,一般不用在名称后加"/",若加入,每次都要在虚拟目录后输入"/"才能访问网站;D:/web/admin/ 为虚拟目录的物理路径.3.重启Apache 这步最重要,常常忘了,呵呵.或参考:在配置文件中找下面这行:<IfModule mod_alias.c> 在这行下面添加如下内容:Alias /vdir/ "c:/dir/" <Directory "c:/dir/"> Options MultiViews AllowOverride None Order allow,deny Allow from all </Directory>以后通过http://localhost/vdir/就能访问到c:\dir\下的内容了.修改虚拟目录找到APACHE安装目录下的conf目录下的httpd.conf文件,将其中的: (用记事本打开,并查找DocumentRoot) 将 DocumentRoot 后面的目录改为你所需的目录即可!下面还有一处<Directory "c:/apache/apache2/htdocs">也要改 然后重新启动服务设置默认页面方法1 设置全局的:<IfModule dir_module>     DirectoryIndex index.php index.php4 index.php3 index.cgi index.pl index.html index.htm index.shtml index.phtml default.php </IfModule>方法2 针对某一目录可以这么设置: Alias /anstyla "E:/anstyla/src/web" <Directory "E:/anstyla/src/web">           Options Indexes MultiViews           AllowOverride None           Order allow,deny           Allow from all           DirectoryIndex default.php </Directory>

Tags:

Java

Apache HTTP Server 与 Tomcat 的三种连接方式介绍

by Administrator 2010.8.8 14:25
整合 Apache Http Server 和 Tomcat 可以提升对静态文件的处理性能、利用 Web 服务器来做负载均衡以及容错、无缝的升级应用程序。本文介绍了三种整合 Apache 和 Tomcat 的方式。首先我们先介绍一下为什么要让 Apache 与 Tomcat 之间进行连接。事实上 Tomcat 本身已经提供了 HTTP 服务,该服务默认的端口是 8080,装好 tomcat 后通过 8080 端口可以直接使用 Tomcat 所运行的应用程序,你也可以将该端口改为 80。既然 Tomcat 本身已经可以提供这样的服务,我们为什么还要引入 Apache 或者其他的一些专门的 HTTP 服务器呢?原因有下面几个:1. 提升对静态文件的处理性能2. 利用 Web 服务器来做负载均衡以及容错3. 无缝的升级应用程序这三点对一个 web 网站来说是非常之重要的,我们希望我们的网站不仅是速度快,而且要稳定,不能因为某个 Tomcat 宕机或者是升级程序导致用户访问不了,而能完成这几个功能的、最好的 HTTP 服务器也就只有 apache 的 http server 了,它跟 tomcat 的结合是最紧密和可靠的。接下来我们介绍三种方法将 apache 和 tomcat 整合在一起。JK这是最常见的方式,你可以在网上找到很多关于配置JK的网页,当然最全的还是其官方所提供的文档。JK 本身有两个版本分别是 1 和 2,目前 1 最新的版本是 1.2.19,而版本 2 早已经废弃了,以后不再有新版本的推出了,所以建议你采用版本 1。JK 是通过 AJP 协议与 Tomcat 服务器进行通讯的,Tomcat 默认的 AJP Connector 的端口是 8009。JK 本身提供了一个监控以及管理的页面 jkstatus,通过 jkstatus 可以监控 JK 目前的工作状态以及对到 tomcat 的连接进行设置,如下图所示:图 1:监控以及管理的页面 jkstatus 在这个图中我们可以看到当前JK配了两个连接分别到 8109 和 8209 端口上,目前 s2 这个连接是停止状态,而 s1 这个连接自上次重启后已经处理了 47 万多个请求,流量达到 6.2 个 G,最大的并发数有 13 等等。我们也可以利用 jkstatus 的管理功能来切换 JK 到不同的 Tomcat 上,例如将 s2 启用,并停用 s1,这个在更新应用程序的时候非常有用,而且整个切换过程对用户来说是透明的,也就达到了无缝升级的目的。关于 JK 的配置文章网上已经非常多了,这里我们不再详细的介绍整个配置过程,但我要讲一下配置的思路,只要明白了配置的思路,JK 就是一个非常灵活的组件。JK 的配置最关键的有三个文件,分别是httpd.conf Apache 服务器的配置文件,用来加载 JK 模块以及指定 JK 配置文件信息workers.properties 到 Tomcat 服务器的连接定义文件uriworkermap.properties URI 映射文件,用来指定哪些 URL 由 Tomcat 处理,你也可以直接在 httpd.conf 中配置这些 URI,但是独立这些配置的好处是 JK 模块会定期更新该文件的内容,使得我们修改配置的时候无需重新启动 Apache 服务器。其中第二、三个配置文件名都可以自定义。下面是一个典型的 httpd.conf 对 JK 的配置# (httpd.conf) # 加载 mod_jk 模块 LoadModule jk_module modules/mod_jk.so # # Configure mod_jk # JkWorkersFile conf/workers.properties JkMountFile conf/uriworkermap.properties JkLogFile logs/mod_jk.log JkLogLevel warn# 关掉主机Lookup,如果为on,很影响性能,可以有10多秒钟的延迟。  HostnameLookups Off接下来我们在 Apache 的 conf 目录下新建两个文件分别是 workers.properties、uriworkermap.properties。这两个文件的内容大概如下# # workers.properties # # list the workers by name #设置工作集群,一个是用于集群管理的lbWorker,另一个用于httpd自身状态监控的statusWorker, worker.list=DLOG4J, status # localhost server 1 # ------------------------ worker.s1.port=8109 worker.s1.host=localhost worker.s1.type=ajp13 # localhost server 2 # ------------------------ worker.s2.port=8209 worker.s2.host=localhost worker.s2.type=ajp13 worker.s2.stopped=1 # 描述用于集群管理的DLOG4J# 这是描述DLOG4J工作群的工作类型,为一个负载均衡组 worker.DLOG4J.type=lb worker.retries=3# 设置这个工作组里面的服务器有哪些 worker.DLOG4J.balance_workers=s1, s2# 如果设为false,则表明需求会话复制 worker.DLOG4J.sticky_session=true# 如果上面的sticky_session设为true时,建议此处也设为true,# 此参数表明如果集群中某台Tomcat服务器在多次请求没有响应后,是否将当前的请求,# 转发到其它Tomcat服务器上处理;# 此参数在sticky_session=true时,影响比较大,会导致转发到其它Tomcat服务器上的请求,# 找不到原来的session,所以如果此时请求中有读取session中某些信息的话,就会导致应用的null异常。worker.DLOG4J.sticky_session_force = true # 描述是用于httpd自身状态监控的statusworker.status.type=status以上的 workers.properties 配置就是我们前面那个屏幕抓图的页面所用的配置。首先我们配置了两个类型为 ajp13 的 worker 分别是 s1 和 s2,它们指向同一台服务器上运行在两个不同端口 8109 和 8209 的 Tomcat 上。接下来我们配置了一个类型为 lb(也就是负载均衡的意思)的 worker,它的名字是 DLOG4J,这是一个逻辑的 worker,它用来管理前面配置的两个物理连接 s1 和 s2。最后还配置了一个类型为 status 的 worker,这是用来监控 JK 本身的模块。有了这三个 worker 还不够,我们还需要告诉 JK,哪些 worker 是可用的,所以就有 worker.list = DLOG4J, status 这行配置。接下来便是 URI 的映射配置了,我们需要指定哪些链接是由 Tomcat 处理的,哪些是由 Apache 直接处理的,看看下面这个文件你就能明白其中配置的意义/*=DLOG4J /jkstatus=status !/*.gif=DLOG4J !/*.jpg=DLOG4J !/*.png=DLOG4J !/*.css=DLOG4J !/*.js=DLOG4J !/*.htm=DLOG4J !/*.html=DLOG4J相信你已经明白了一大半了:所有的请求都由 DLOG4J 这个 worker 进行处理,但是有几个例外,/jkstatus 请求由 status 这个 worker 处理。另外这个配置中每一行数据前面的感叹号是什么意思呢?感叹号表示接下来的 URI 不要由 JK 进行处理,也就是 Apache 直接处理所有的图片、css 文件、js 文件以及静态 html 文本文件。通过对 workers.properties 和 uriworkermap.properties 的配置,可以有各种各样的组合来满足我们前面提出对一个 web 网站的要求。您不妨动手试试!http_proxy这是利用 Apache 自带的 mod_proxy 模块使用代理技术来连接 Tomcat。在配置之前请确保是否使用的是 2.2.x 版本的 Apache 服务器。因为 2.2.x 版本对这个模块进行了重写,大大的增强了其功能和稳定性。http_proxy 模式是基于 HTTP 协议的代理,因此它要求 Tomcat 必须提供 HTTP 服务,也就是说必须启用 Tomcat 的 HTTP Connector。一个最简单的配置如下ProxyPass /images ! ProxyPass /css ! ProxyPass /js ! ProxyPass / http://localhost:8080/在这个配置中,我们把所有 http://localhost 的请求代理到 http://localhost:8080/ ,这也就是 Tomcat 的访问地址,除了 images、css、js 几个目录除外。我们同样可以利用 mod_proxy 来做负载均衡,再看看下面这个配置ProxyPass /images ! ProxyPass /css ! ProxyPass /js ! ProxyPass / balancer://example/ <Proxy balancer://example/> BalancerMember http://server1:8080/ BalancerMember http://server2:8080/ BalancerMember http://server3:8080/ </Proxy>配置比 JK 简单多了,而且它也可以通过一个页面来监控集群运行的状态,并做一些简单的维护设置。图 2:监控集群运行状态 ajp_proxyajp_proxy 连接方式其实跟 http_proxy 方式一样,都是由 mod_proxy 所提供的功能。配置也是一样,只需要把 http:// 换成 ajp:// ,同时连接的是 Tomcat 的 AJP Connector 所在的端口。上面例子的配置可以改为:ProxyPass /images ! ProxyPass /css ! ProxyPass /js ! ProxyPass / balancer://example/ <Proxy balancer://example/> BalancerMember ajp://server1:8080/ BalancerMember ajp://server2:8080/ BalancerMember ajp://server3:8080/ </Proxy>采用 proxy 的连接方式,需要在 Apache 上加载所需的模块,mod_proxy 相关的模块有 mod_proxy.so、mod_proxy_connect.so、mod_proxy_http.so、mod_proxy_ftp.so、mod_proxy_ajp.so, 其中 mod_proxy_ajp.so 只在 Apache 2.2.x 中才有。如果是采用 http_proxy 方式则需要加载 mod_proxy.so 和 mod_proxy_http.so;如果是 ajp_proxy 则需要加载 mod_proxy.so 和 mod_proxy_ajp.so这两个模块。三者比较相对于 JK 的连接方式,后两种在配置上是比较简单的,灵活性方面也一点都不逊色。但就稳定性而言就不像 JK 这样久经考验,毕竟 Apache 2.2.3 推出的时间并不长,采用这种连接方式的网站还不多,因此,如果是应用于关键的互联网网站,还是建议采用 JK 的连接方式。参考资料 获得 Apache Http Server。获得 Apache Tomcat。JK 文档。

Tags:

Java

TOMCAT数据库连接池:未释放connection资源造成的错误

by Administrator 2010.8.5 03:54
问题描述:有一个系统的功能很简单,就是几个表单的提交和几个页面的显示。但是这个网站的访问量很大,一周时间累计至少10万次访问,高峰时间可能每秒的 点击数会达到500次。OS为Redhat Linux 9 , Database为Oracle 8i,JSP容器为Tomcat 4,使用Struts框架。当使用工具进行压力测试时,如果连接数到100个,2、3分钟后几乎所有访问都出现404错误,无法访问此页面。这就是我接到 问题时候的状况。 问题解决:首先我们需要知道产生瓶颈的地方,分析后可能影响效率的地方有如下几处:.........问题描述:有一个系统的功能很简单,就是几个表单的提交和几个页面的显示。但是这个网站的访问量很大,一周时间累计至少10万次访问,高峰时间可能每秒的 点击数会达到500次。OS为Redhat Linux 9 , Database为Oracle 8i,JSP容器为Tomcat 4,使用Struts框架。当使用工具进行压力测试时,如果连接数到100个,2、3分钟后几乎所有访问都出现404错误,无法访问此页面。这就是我接到 问题时候的状况。 问题解决:首先我们需要知道产生瓶颈的地方,分析后可能影响效率的地方有如下几处:Struts产生的瓶颈数据库的设置,最大连接数问题Tomcat服务器的配置问题Linux OS的配置问题服务器的机器硬件配置问题服务器的带宽不够测试是否是Struts瓶颈问题很容易,我们用压力测试工具中设置只访问index.jsp这个页面,此页面和Struts没有一点关系,在每 秒点击在100次左右的时候,网站访问速度只是稍微有些慢,但是到200个访问数后,错误404再次发生。说明不是Struts产生的瓶颈,或者说 Struts的瓶颈不是主要影响我们效率的问题所在。 然后我们写了一个很简单的JSP测试页面,使用和在ActionServlet中调用数据库相同的方法进行一个Select操作,并且把那个结果显示到JSP页面中,针对这个test的页面,进行100次同时连接,错误出现了。此时还是不能判断什么是瓶颈所在。  然后登录上服务器,察看Tomcat的配置文件server.xml,发现允许最大的并发连接数设置项maxProcessors= "75",说明Tomcat允许的同时连接最大为75,这个肯定是一个tomcat的配置失误。把它改为maxProcessors="1000",重新 启动服务器,进行测试。对index.jsp文件测试的时候,同时连接500人的时候没有出现问题,但是测试test页面的数据库查询时,仍然是到100 个左右的连接数的时候出现404错误。这两个测试说明了tomcat服务器配置的问题基本解决了,问题已经不在tomcat的设置上了,很有可能是在数据 库中。 检查Oracle的设置,把最大连接数改成1000,再次测试test页面,仍然是错误。 在Linux下使用[root@NetCom51 bin]# ulimit -acore file size        (blocks, -c) 0data seg size         (kbytes, -d) unlimitedfile size             (blocks, -f) unlimitedmax locked memory     (kbytes, -l) unlimitedmax memory size       (kbytes, -m) unlimitedopen files                    (-n) 1024pipe size          (512 bytes, -p) 8stack size            (kbytes, -s) 8192cpu time             (seconds, -t)发现允许使用的open files都达到了要求了。 服务器的硬件问题和带宽不是我们能解决的,暂时不管。现在把我们能做的事情定位在优化程序和优化服务器上。 Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个java虚拟机。Sun公司和其它一些公司一直 在为提高性能而对java虚拟机做一些升级改进,一些报告显示JDK1.4在性能上比JDK1.3提高了将近10%到20%。我们使用java -version命令查看JRE的版本,发现已经是1.4了。Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,需要调大。在linux下,修改{tomcat_home}/bin/catalina.sh文件,在echo "Using CATALINA_BASE: $CATALINA_BASE"echo "Using CATALINA_HOME: $CATALINA_HOME"echo "Using CATALINA_TMPDIR: $CATALINA_TMPDIR"echo "Using JAVA_HOME: $JAVA_HOME"后加上JAVA_OPTS='-Xms256m -Xmx512m'JAVA_OPTS='-Xms【初始化内存大小】 -Xmx【可以使用的最大内存】' 这两个值的大小一般根据需要进行设置。初始化堆的大小执行了虚拟机在启动时向系统申请的内存的大小。一般而言,这个参数不重要。但是有的应用 程序在大负载的情况下会急剧地占用更多的内存,此时这个参数就是显得非常重要,如果虚拟机启动时设置使用的内存比较小而在这种情况下有许多对象进行初始 化,虚拟机就必须重复地增加内存来满足使用。由于这种原因,我们一般把-Xms和-Xmx设为一样大,而堆的最大值受限于系统使用的物理内存。一般使用数 据量较大的应用程序会使用持久对象,内存使用有可能迅速地增长。当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃。因 此一般建议堆的最大值设置为可用内存的最大值的80%。 重新启动服务器进行测试,发现服务器启动速度变慢,但是启动后服务器效率确实有提高,但是仍然未能达到我们要求的每秒500访问数的要求。 重新检查程序,试着使用tomcat的数据库连接池,修改tomcat配置文件server.xml,在context标签中加上 <Context path="" docBase="ROOT" debug="0">         <Resource name="jdbc/OracleDB" auth="Container" type="javax.sql.DataSource"/>          <ResourceParams name="jdbc/OracleDB">                <parameter>                   <name>factory</name>                   <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>                </parameter>                <parameter>                   <name>driverClassName</name>                   <value>oracle.jdbc.driver.OracleDriver</value>                </parameter>                <parameter>                   <name>url</name>                   <value>jdbc:oracle:thin:@10.11.6.1:1521:dbname</value>                 </parameter>               <parameter>                 <name>username</name>                 <value>yourname</value>               </parameter>               <parameter>                 <name>password</name>                 <value>yourpasswd</value>              </parameter>              <parameter>                 <name>maxActive</name>                 <value>1000</value>              </parameter>              <parameter>                  <name>maxIdle</name>                  <value>20</value> </parameter>              <parameter>                  <name>maxWait</name>                  <value>-1</value>          </parameter>        </ResourceParams>    </Context> maxActive 是最大激活连接数,这里取值为1000,表示同时最多有1000个数据库连接。maxIdle是最大的空闲连接数,这里取值为20,表示即使没有数据库连 接时依然可以保持20空闲的连接,而不被清除,随时处于待命状态。MaxWait是最大等待秒钟数,这里取值-1,表示无限等待,直到超时为止,也可取值 9000,表示9秒后超时。修改web.xml文文件,加入 <resource-ref>                <description>Oracle           Datasource example</description>                <res-ref-name>jdbc/OracleDB</res-ref-name>                <res-type>javax.sql.DataSource</res-type>                <res-auth>Container</res-auth></resource-ref> 将Oracle的JDBC驱动classes12.jar拷贝到Tomcat安装目录的common/lib下。建立简单的测试页面test2.jsp:Context initCtx = new InitialContext(); Context envCtx = (Context) initCtx.lookup("java:comp/env"); ds = (DataSource)envCtx.lookup("jdbc/OracleDB");Connection cn=ds.getConnection();进行测试,发现问题还没有解决,在同时连接100人的时候再次出错。 最后仔细检查后,发现是未释放connection资源,使用cn.close()方法,可以同时连接500个用户了。

Tags:

Java

Tomcat 配置多域名

by Administrator 2010.4.30 08:48
tomcat下多域名的配置都在conf下的server.xml下实现。。。tomcat下的配置都在conf下的server.xml下实现。。。里面从高到低分为:Server --Service  --Connector  --Engine   --Host    --Context首先把通讯接口下的PORT改为80,这样就不用在浏览器中输入端口号了,如:<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->     <Connector port="80"               maxHttpHeaderSize="8192"                maxThreads="150" minSpareThreads="25" maxSpareThreads="75"                enableLookups="false" redirectPort="8443" acceptCount="100"                connectionTimeout="20000" disableUploadTimeout="true" />HOST代表虚拟主机:默认有  <Host name="localhost" appBase="webapps"        unpackWARs="true" autoDeploy="true"        xmlValidation="false" xmlNamespaceAware="false">       </Host>所以我们平时都是直接输入http://localhost:端口号/项目名   就好了。。假如我现在有个项目在E盘下的workspace目录,项目名为xx我不想部署在tomcat下的webapp目录下,而是直接想在TOMCAT下加载这个项目并且用个域名(www.xx.com)来映射。这样我们可以加上下面这段代码  <Host name="www.xx.com" appBase="e:\workspace\xx  unpackWARs="true" autoDeploy="true"    xmlValidation="false" xmlNamespaceAware="false">    <Context path="" docBase="WebRoot" debug="0" reloadable="true" crossContext="true" />   </Host> appBase为项目的绝对路径,docBase为WEB目录假如我现在的图片都放在d:\ext.xx.com\img下,我想用个二级域名(img.lzw.com)映射它,假如在d:\ext.xx.com\img下放入一张图片1.jpg,我们就可以输入img.xx.com/1.jpg来访问它了。。加上下面代码就可以实现了。。   <Host name="img.xx.com" appBase="d:\ext.xx.com\img"    unpackWARs="true" autoDeploy="true"    xmlValidation="false" xmlNamespaceAware="false">    <Context path="" docBase="" debug="0" reloadable="true" crossContext="true" />      </Host>最终我们要在本地访问域名,还得修改相爱HOST文件。。打开C:\WINDOWS\system32\drivers\etc\hosts加上127.0.0.1       http://www.xx.com127.0.0.1       img.xx.com

Tags:

Java

使用Tomcat配置域名

by Administrator 2010.4.30 08:43
在Tomcat下面配置域名(如:www.***.com)的时候,同时又不希望客户通过我们网站的IP或者域名访问到Tomcat默认的ROOT,配制方法如下:1、打开Tomcat安装目录下的\conf\server.xml文件2、在server.xml中将原有的<Host name=“localhost“ appBase=“webapps“ ……>修改为<Host name=“您要配置的域名“ appBase=“webapps“……>3、在\conf\Catalina目录下建立目录“<您要配置的域名的名称>”,然后建立ROOT.xml文件,其格式和\conf\localhost目录下的ROOT.xml一致,但是内容如下:  <?xml version='1.0' encoding='utf-8'?>  <Context displayName="Welcome to 56World!" docBase="D:\workplace\inbuilding" path="">  </Context>其中docBase中的内容就是你希望的打开您的域名(www.***.com) 的时候映射到的目录和默认的网页(如:index.jsp)4、启动Tomcat服务器,就可以直接敲入域名访问你要访问的地址了。关于Tomcat配置多域名的方法,在后续文章中介绍。

Tags:

Java

关于博主

      什么都懂一点儿,热衷技术,热爱Programming,每有难题,常夜以继日,每有解决方案,手舞足蹈而欣喜若狂;好读书,不求甚解;每有会意,便欣然忘食;常纵情于山水之间,忘乎于尘世之外,唯程序难释怀尔。
       QQ:51557288

归档

最近的评论

声明

本博所有网友评论不代表本博立场,版权归其作者所有。

© Copyright 2011