﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-Believe it,do it! </title><link>http://www.blogjava.net/tunaic/</link><description>Ideal is the beacon. Without ideal, there is no secure direction; without direction ,there is no life. &lt;br&gt;
理想是指路明灯。没有理想，就没有坚定的方向；没有方向，就没有生活。&lt;br&gt;
CTRL+T eclipse</description><language>zh-cn</language><lastBuildDate>Sun, 12 Apr 2026 06:03:42 GMT</lastBuildDate><pubDate>Sun, 12 Apr 2026 06:03:42 GMT</pubDate><ttl>60</ttl><item><title>WEBLOGIC与Tomcat对于Get方法乱码的处理</title><link>http://www.blogjava.net/tunaic/archive/2016/07/05/431100.html</link><dc:creator>三羽</dc:creator><author>三羽</author><pubDate>Tue, 05 Jul 2016 06:30:00 GMT</pubDate><guid>http://www.blogjava.net/tunaic/archive/2016/07/05/431100.html</guid><wfw:comment>http://www.blogjava.net/tunaic/comments/431100.html</wfw:comment><comments>http://www.blogjava.net/tunaic/archive/2016/07/05/431100.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tunaic/comments/commentRss/431100.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tunaic/services/trackbacks/431100.html</trackback:ping><description><![CDATA[TOMCAT 处理方式： 
1、打开Tomcat安装目录中的conf目录 
2、修改server.xml中的connector一个子项，在其中添加URIEncoding="UTF-8" ，或者是其他的编码方式，变成如下： 



Xml代码 复制代码 收藏代码
1.<Connector port="8001" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" />  



WEBLOGIC 处理方式： 
1.在web.xml中增加以下配置即可，编码也有可能为GBK,可根据自己的程序编码进行设置 



Xml代码 复制代码 收藏代码
1.<context-param>   
2.    <param-name>weblogic.httpd.inputCharset./*</param-name>   
3.    <param-value>UTF-8</param-value>   
4.</context-param>  <img src ="http://www.blogjava.net/tunaic/aggbug/431100.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tunaic/" target="_blank">三羽</a> 2016-07-05 14:30 <a href="http://www.blogjava.net/tunaic/archive/2016/07/05/431100.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle换IP无法正常使用解决</title><link>http://www.blogjava.net/tunaic/archive/2014/01/17/409048.html</link><dc:creator>三羽</dc:creator><author>三羽</author><pubDate>Fri, 17 Jan 2014 01:43:00 GMT</pubDate><guid>http://www.blogjava.net/tunaic/archive/2014/01/17/409048.html</guid><wfw:comment>http://www.blogjava.net/tunaic/comments/409048.html</wfw:comment><comments>http://www.blogjava.net/tunaic/archive/2014/01/17/409048.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tunaic/comments/commentRss/409048.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tunaic/services/trackbacks/409048.html</trackback:ping><description><![CDATA[把listener.ora 中&nbsp;&nbsp;(PROGRAM = extproc)注释掉<br />HOST= 改为计算机名称<img src ="http://www.blogjava.net/tunaic/aggbug/409048.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tunaic/" target="_blank">三羽</a> 2014-01-17 09:43 <a href="http://www.blogjava.net/tunaic/archive/2014/01/17/409048.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ORACLE命令创建用户</title><link>http://www.blogjava.net/tunaic/archive/2014/01/16/409032.html</link><dc:creator>三羽</dc:creator><author>三羽</author><pubDate>Thu, 16 Jan 2014 07:35:00 GMT</pubDate><guid>http://www.blogjava.net/tunaic/archive/2014/01/16/409032.html</guid><wfw:comment>http://www.blogjava.net/tunaic/comments/409032.html</wfw:comment><comments>http://www.blogjava.net/tunaic/archive/2014/01/16/409032.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tunaic/comments/commentRss/409032.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tunaic/services/trackbacks/409032.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<p>cmd<br />sqlplus /nolog</p>
<p>conn /as sysdba<br /><br />//创建用户并指定表空间&nbsp;&nbsp; </p>
<p>create user username identified by password&nbsp;&nbsp; </p>
<p>default tablespace my(users)&nbsp; </p>
<p>temporary tablespace my(temp);&nbsp;&nbsp; </p>
<p>//给用户授予权限&nbsp;&nbsp; </p>
<p>grant connect,resource to username;&nbsp;&nbsp; </p>
<p>//以后以该用户登录，创建的任何数据库对象都属于user_temp 和user_data表空间， </p>
<p>这就不用在每创建一个对象给其指定表空间了&nbsp; </p>
<p>撤权：&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; revoke&nbsp;&nbsp; 权限...&nbsp;&nbsp; from&nbsp; 用户名; </p>
<p>删除用户命令 </p>
<p>drop user user_name cascade; </p>
<p>&nbsp;</p><img src ="http://www.blogjava.net/tunaic/aggbug/409032.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tunaic/" target="_blank">三羽</a> 2014-01-16 15:35 <a href="http://www.blogjava.net/tunaic/archive/2014/01/16/409032.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Apache整合Tomcat</title><link>http://www.blogjava.net/tunaic/archive/2012/02/08/369619.html</link><dc:creator>三羽</dc:creator><author>三羽</author><pubDate>Wed, 08 Feb 2012 11:30:00 GMT</pubDate><guid>http://www.blogjava.net/tunaic/archive/2012/02/08/369619.html</guid><wfw:comment>http://www.blogjava.net/tunaic/comments/369619.html</wfw:comment><comments>http://www.blogjava.net/tunaic/archive/2012/02/08/369619.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tunaic/comments/commentRss/369619.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tunaic/services/trackbacks/369619.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;前言最近有个需要我的团队开发一个BBS，当然我们不会自己去开发，因为现在成熟的BBS比比皆是，就拿Discuz来说好了，应该是目前国内比较的好的版本了吧。大家可以打开http://www.discuz.net/这个网址来访问他们的论坛，现在成熟的...&nbsp;&nbsp;<a href='http://www.blogjava.net/tunaic/archive/2012/02/08/369619.html'>阅读全文</a><img src ="http://www.blogjava.net/tunaic/aggbug/369619.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tunaic/" target="_blank">三羽</a> 2012-02-08 19:30 <a href="http://www.blogjava.net/tunaic/archive/2012/02/08/369619.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IE窗口关闭时如何提交JS事件</title><link>http://www.blogjava.net/tunaic/archive/2011/01/25/343497.html</link><dc:creator>三羽</dc:creator><author>三羽</author><pubDate>Tue, 25 Jan 2011 06:21:00 GMT</pubDate><guid>http://www.blogjava.net/tunaic/archive/2011/01/25/343497.html</guid><wfw:comment>http://www.blogjava.net/tunaic/comments/343497.html</wfw:comment><comments>http://www.blogjava.net/tunaic/archive/2011/01/25/343497.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tunaic/comments/commentRss/343497.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tunaic/services/trackbacks/343497.html</trackback:ping><description><![CDATA[&nbsp; 在网页中加入下列代码就知道效果了&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp; 1、=====================================================<br />
&lt;script type="text/javascript"&gt;<br />
window.onbeforeunload = function()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var n = window.event.screenX - window.screenLeft;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var b = n &gt; document.documentElement.scrollWidth-20;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(b &amp;&amp; window.event.clientY &lt; 0 || window.event.altKey)&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; openwin();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert('查看弹出');&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; window.event.returnValue = ""; //这里可以放置你想做的操作代码&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
function openwin(){ <br />
alert();<br />
//写下事件<br />
}&nbsp;&nbsp;&nbsp; <br />
&lt;/script&gt;&nbsp; <br />
2、==========================================================<br />
&lt;script type="text/javascript"&gt;&nbsp;&nbsp; <br />
&lt;!--&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; window.onbeforeunload = onbeforeunload_handler;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; window.onunload = onunload_handler;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; function onbeforeunload_handler(){&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var warning="确认退出?";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return warning;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; function onunload_handler(){&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var warning="谢谢光临";&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert(warning);&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />
// --&gt;&nbsp;&nbsp; <br />
&lt;/script&gt;
<img src ="http://www.blogjava.net/tunaic/aggbug/343497.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tunaic/" target="_blank">三羽</a> 2011-01-25 14:21 <a href="http://www.blogjava.net/tunaic/archive/2011/01/25/343497.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>电脑桌面生成IE7图标 REG注册表</title><link>http://www.blogjava.net/tunaic/archive/2010/05/23/321654.html</link><dc:creator>三羽</dc:creator><author>三羽</author><pubDate>Sun, 23 May 2010 05:10:00 GMT</pubDate><guid>http://www.blogjava.net/tunaic/archive/2010/05/23/321654.html</guid><wfw:comment>http://www.blogjava.net/tunaic/comments/321654.html</wfw:comment><comments>http://www.blogjava.net/tunaic/archive/2010/05/23/321654.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tunaic/comments/commentRss/321654.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tunaic/services/trackbacks/321654.html</trackback:ping><description><![CDATA[<p>Windows Registry Editor Version 5.00</p>
<p>[HKEY_CLASSES_ROOT\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}]<br />
@="Internet Explorer"<br />
"InfoTip"="@C:\\WINDOWS\\system32\\zh-CN\\ieframe.dll.mui,-881"<br />
"LocalizedString"="@C:\\WINDOWS\\system32\\zh-CN\\ieframe.dll.mui,-880"<br />
[HKEY_CLASSES_ROOT\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}\DefaultIcon]<br />
@="C:\\Program Files\\Internet Explorer\\iexplore.exe,-32528"<br />
[HKEY_CLASSES_ROOT\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}\Shell]<br />
@=""<br />
[HKEY_CLASSES_ROOT\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}\Shell\D]<br />
@="删除(D)"<br />
[HKEY_CLASSES_ROOT\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}\Shell\D\Command]<br />
@="Rundll32.exe"<br />
[HKEY_CLASSES_ROOT\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}\Shell\NoAddOns]<br />
@="在没有加载项的情况下启动"<br />
[HKEY_CLASSES_ROOT\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}\Shell\NoAddOns\Command]<br />
@="C:\\Program Files\\Internet Explorer\\iexplore.exe about:NoAdd-ons"<br />
[HKEY_CLASSES_ROOT\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}\Shell\Open]<br />
@="打开主页(H)"<br />
[HKEY_CLASSES_ROOT\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}\Shell\Open\Command]<br />
@="C:\\Program Files\\Internet Explorer\\iexplore.exe"<br />
[HKEY_CLASSES_ROOT\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}\Shell\属性(R)]<br />
@=""<br />
[HKEY_CLASSES_ROOT\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}\Shell\属性(R)\Command]<br />
@="Rundll32.exe Shell32.dll,Control_RunDLL Inetcpl.cpl"<br />
[HKEY_CLASSES_ROOT\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}\ShellFolder]<br />
@=""<br />
"Attributes"=dword:00000010<br />
"HideFolderVerbs"=""<br />
"WantsParseDisplayName"=""<br />
"HideOnDesktopPerUser"=""<br />
@="C:\\WINDOWS\\system32\\ieframe.dll,-190"<br />
"HideAsDeletePerUser"=""<br />
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}]<br />
@="Internet Explorer"<br />
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}]<br />
@="Windows Media"</p>
<p>-------------------------------------------------分割线(这行不用复制）-------------------------------------------------</p>
<p>保存后将文件后缀改为.reg，然后双击运行，添加到注册表即可。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>如需卸载（清除）则创建文本文件，写入以下内容：</p>
<p>-------------------------------------------------分割线(这行不用复制）-------------------------------------------------</p>
<p>Windows Registry Editor Version 5.00</p>
<p>[-HKEY_CLASSES_ROOT\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}]<br />
[-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}]<br />
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}]</p>
<p>-------------------------------------------------分割线(这行不用复制）-------------------------------------------------</p>
<p>保存后将文件后缀改为.reg，然后双击运行，即可卸载（清除）。</p>
<img src ="http://www.blogjava.net/tunaic/aggbug/321654.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tunaic/" target="_blank">三羽</a> 2010-05-23 13:10 <a href="http://www.blogjava.net/tunaic/archive/2010/05/23/321654.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CMD命令：netstat -ano 显示端口占用情况</title><link>http://www.blogjava.net/tunaic/archive/2010/04/12/318051.html</link><dc:creator>三羽</dc:creator><author>三羽</author><pubDate>Mon, 12 Apr 2010 05:33:00 GMT</pubDate><guid>http://www.blogjava.net/tunaic/archive/2010/04/12/318051.html</guid><wfw:comment>http://www.blogjava.net/tunaic/comments/318051.html</wfw:comment><comments>http://www.blogjava.net/tunaic/archive/2010/04/12/318051.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tunaic/comments/commentRss/318051.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tunaic/services/trackbacks/318051.html</trackback:ping><description><![CDATA[netstat -ano&nbsp; 显示端口号及占用的PID<br />
CD/D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 切换盘符
<img src ="http://www.blogjava.net/tunaic/aggbug/318051.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tunaic/" target="_blank">三羽</a> 2010-04-12 13:33 <a href="http://www.blogjava.net/tunaic/archive/2010/04/12/318051.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>部署程序svn及eclipse</title><link>http://www.blogjava.net/tunaic/archive/2010/01/21/310397.html</link><dc:creator>三羽</dc:creator><author>三羽</author><pubDate>Thu, 21 Jan 2010 07:26:00 GMT</pubDate><guid>http://www.blogjava.net/tunaic/archive/2010/01/21/310397.html</guid><wfw:comment>http://www.blogjava.net/tunaic/comments/310397.html</wfw:comment><comments>http://www.blogjava.net/tunaic/archive/2010/01/21/310397.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/tunaic/comments/commentRss/310397.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tunaic/services/trackbacks/310397.html</trackback:ping><description><![CDATA[<p>一、去掉SVN文件夹<br />
1、建立一个文本文件，取名为kill-svn-folders.reg，内容如下：</p>
<p>Windows Registry Editor Version 5.00</p>
<p>[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN] <br />
@="Delete .SVN Folders"</p>
<p>[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN\command] <br />
@="cmd.exe /c \"TITLE Removing SVN Folders in %1 &amp;&amp; COLOR 9A &amp;&amp; FOR /r \"%1\" %%f IN (.svn) DO RD /s /q \"%%f\" \""</p>
<p>保存之后，双击这个reg文件。成功后，在每一个文件夹上点击右键都会有一个&#8220;Delete .SVN Folders&#8221;的选项，点击之后，既可以删除这个文件下下面所有的.svn文件了.<br />
</p>
<p>2. 使用svn自带的export功能。export导出的是一份不带.svn的纯净的代码。<br />
<br />
二、svn导出不同版本文件<br />
TortoiseSVN&nbsp;&nbsp;&#8594;&nbsp; Repo-browser &#8594;&nbsp; 根目录上右键Show log &#8594;&nbsp; 按Ctrl间选两个日志版本对比右键Compare revisions &#8594;&nbsp; 选要导出的文件右键 Export selection to...<br />
<br />
三、eclipse导出war包<br />
eclipse打包是需要TOMCAT插件支持的. <br />
1.在项目上点右键-&gt;properties， <br />
2 在'Tomcat'下'export to war settings选项卡,' <br />
3.输入要导出的war文件路径和文件名，确定,返回项目 <br />
4.在项目上点右键-&gt;tomcat project-&gt;Export to the war file sets in project properties生成WAR包 </p>
<img src ="http://www.blogjava.net/tunaic/aggbug/310397.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tunaic/" target="_blank">三羽</a> 2010-01-21 15:26 <a href="http://www.blogjava.net/tunaic/archive/2010/01/21/310397.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Nginx+tomcat 做负载均衡</title><link>http://www.blogjava.net/tunaic/archive/2009/11/30/304212.html</link><dc:creator>三羽</dc:creator><author>三羽</author><pubDate>Mon, 30 Nov 2009 01:23:00 GMT</pubDate><guid>http://www.blogjava.net/tunaic/archive/2009/11/30/304212.html</guid><wfw:comment>http://www.blogjava.net/tunaic/comments/304212.html</wfw:comment><comments>http://www.blogjava.net/tunaic/archive/2009/11/30/304212.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tunaic/comments/commentRss/304212.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tunaic/services/trackbacks/304212.html</trackback:ping><description><![CDATA[<p><span style="font-size: 18pt; color: red">一、<br />
</span></p>
<p>1、将tomcat 的server.xml文件中所有端口号都改为不同。<br />
2、Nginx 的nginx.conf文件中<br />
&nbsp;&nbsp;&nbsp;&nbsp;http {}增加如下内容<br />
<code><br />
&nbsp;&nbsp;&nbsp;&nbsp; upstream sp.imichat.com{ <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; server 127.0.0.1:8080 weight=2; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; server 127.0.0.1:8088 weight=2; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ip_hash;<br />
&nbsp;&nbsp;&nbsp;&nbsp; }<br />
</code></p>
<p>server {} 修改信息：</p>
<p><code><br />
listen 80;<br />
server_name sp.imichat.com;</p>
<p>#charset koi8-r;</p>
<p>#access_log logs/host_access_log main;<br />
</code><br />
<font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; location /{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_redirect&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; off;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;proxy_set_header&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Host $host;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;proxy_set_header&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; X-Real-IP $remote_addr;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;proxy_set_header&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; X-Forwarded-For $proxy_add_x_forwarded_for;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;proxy_pass http://sp.imichat.com;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></p>
<p>例：<br />
#user&nbsp; nobody;<br />
worker_processes&nbsp; 1;</p>
<p>events {<br />
&nbsp;&nbsp;&nbsp; worker_connections&nbsp; 51024;<br />
}<br />
http {<br />
&nbsp;&nbsp;&nbsp; include&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mime.types;<br />
&nbsp;&nbsp;&nbsp; default_type&nbsp; application/octet-stream;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; upstream localhost { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; server 127.0.0.1:8080 weight=2; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; server 127.0.0.1:8088 weight=2; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ip_hash;<br />
&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; sendfile&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; on;</p>
<p>&nbsp;&nbsp;&nbsp; keepalive_timeout&nbsp; 65;</p>
<p>&nbsp;&nbsp;&nbsp; server {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listen&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 80;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; server_name&nbsp; localhost;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; location /{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_redirect&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; off;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_set_header&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Host $host;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_set_header&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; X-Real-IP $remote_addr;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_set_header&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; X-Forwarded-For $proxy_add_x_forwarded_for;<br />
&nbsp;&nbsp;&nbsp;proxy_pass http://localhost;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; error_page&nbsp;&nbsp; 500 502 503 504&nbsp; /50x.html;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; location = /50x.html {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp; html;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; }}</p>
<p><code><br />
<span style="font-size: 18pt; color: red">二、<br />
</span></p>
<p style="margin: 0cm 0cm 0pt">参数描述</p>
<p>检测nginx配置文件是否正确<br />
/usr/local/nginx/sbin/nginx -t -c nginx.conf<br />
-c 配置文件路径</p>
<p>-g Set global directives. (version &gt;=0.7.4)</p>
<p>-t 检测文件是否正确不执行</p>
<p>-v Print version.</p>
<p>-V Print nginx version, compiler version and configure parameters.</p>
<p>编译时如果使用了&#8211;with-debug编译,还可以使用error_log file [ debug_core| debug_http | debug_event &#8230;] 来获得debug信息</p>
<p>通过信号对 Nginx 进行控制</p>
<p>Nginx 支持下表中的信号：</p>
<p>信号名 作用描述 <br />
TERM, INT 快速关闭程序，中止当前正在处理的请求 <br />
QUIT 处理完当前请求后，关闭程序 <br />
HUP 重新加载配置，并开启新的工作进程，关闭就的进程，此操作不会中断请求 <br />
USR1 重新打开日志文件，用于切换日志，例如每天生成一个新的日志文件 <br />
USR2 平滑升级可执行程序 <br />
WINCH 从容关闭工作进程</p>
<p>有两种方式来通过这些信号去控制 Nginx，第一是通过 logs 目录下的 nginx.pid 查看当前运行的 Nginx 的进程 ID，通过 kill &#8211; XXX &lt;pid&gt; 来控制 Nginx，其中 XXX 就是上表中列出的信号名。如果您的系统中只有一个 Nginx 进程，那您也可以通过 killall 命令来完成，例如运行 killall &#8211; s HUP nginx 来让 Nginx 重新加载配置。</p>
<p>配置:</p>
<p>use [ kqueue | rtsig | epoll | /dev/poll | select | poll ];FreeBSD使用kqueue，Linux选epoll.<br />
worker_connections number&nbsp;&nbsp;&nbsp; 每个worker的最大连接数<br />
Maxclient = work_processes *　worker_connections</p>
<p>nginx的upstream目前支持4种方式的分配</p>
<p>1、轮询（默认）</p>
<p>每个请求按时间顺序逐一分配到不同的后端服务器，如果后端服务器down掉，能自动剔除。</p>
<p>2、weight</p>
<p>指定轮询几率，weight和访问比率成正比，用于后端服务器性能不均的情况。</p>
<p>2、ip_hash</p>
<p>每个请求按访问ip的hash结果分配，这样每个访客固定访问一个后端服务器，可以解决session的问题。</p>
<p>3、fair（第三方）</p>
<p>按后端服务器的响应时间来分配请求，响应时间短的优先分配。</p>
<p>4、url_hash（第三方）</p>
<p>按访问url的hash结果来分配请求，使每个url定向到同一个后端服务器，后端服务器为缓存时比较有效。</p>
<p>代理<br />
只需要在nginx的配置文件中增加虚拟主机,然后加入<br />
\proxy_pass <a href="http://localhost:8000/">http://localhost:8000</a>;</p>
<p>负载均衡:<br />
只需要在http中增加<br />
upstream tgcluster {#定义负载均衡设备的Ip及设备状态<br />
ip_hash;<br />
server 127.0.0.1:9090 down;<br />
server 127.0.0.1:8080 weight=2;<br />
server 127.0.0.1:6060;<br />
server 127.0.0.1:7070 backup;<br />
}<br />
在需要使用负载均衡的server中增加<br />
proxy_pass <a href="http://tgcluster/">http://tgcluster/</a>;</p>
<p>每个设备的状态设置为:<br />
1.down 表示单前的server暂时不参与负载<br />
2.weight 默认为1.weight越大，负载的权重就越大。<br />
3.max_fails ：允许请求失败的次数默认为1.当超过最大次数时，返回proxy_next_upstream 模块定义的错误<br />
4.fail_timeout:max_fails次失败后，暂停的时间。<br />
5.backup： 其它所有的非backup机器down或者忙的时候，请求backup机器。所以这台机器压力会最轻。</p>
<p>nginx支持同时设置多组的负载均衡，用来给不用的server来使用。</p>
<p>client_body_in_file_only 设置为On 可以讲client post过来的数据记录到文件中用来做debug<br />
client_body_temp_path 设置记录文件的目录 可以设置最多3层目录</p>
<p>location 对URL进行匹配.可以进行重定向或者进行新的代理 负载均衡</p>
<p>FASTCGI配置:</p>
<p>请将以下内容保存为fastcgi_params文件，保存于/usr/local/nginx/conf下（Ubuntu可保存于/etc/nginx下），他为我们的FastCGI模块设置了基本的环境变量：</p>
<p>#fastcgi_params<br />
fastcgi_param GATEWAY_INTERFACE CGI/1.1;<br />
fastcgi_param SERVER_SOFTWARE&nbsp;&nbsp;&nbsp; nginx;<br />
fastcgi_param QUERY_STRING&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $query_string;<br />
fastcgi_param REQUEST_METHOD&nbsp;&nbsp;&nbsp;&nbsp; $request_method;<br />
fastcgi_param CONTENT_TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $content_type;<br />
fastcgi_param CONTENT_LENGTH&nbsp;&nbsp;&nbsp;&nbsp; $content_length;<br />
fastcgi_param SCRIPT_FILENAME&nbsp;&nbsp;&nbsp; $document_root$fastcgi_script_name;<br />
fastcgi_param SCRIPT_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $fastcgi_script_name;<br />
fastcgi_param REQUEST_URI&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $request_uri;<br />
fastcgi_param DOCUMENT_URI&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $document_uri;<br />
fastcgi_param DOCUMENT_ROOT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $document_root;<br />
fastcgi_param SERVER_PROTOCOL&nbsp;&nbsp;&nbsp; $server_protocol;<br />
fastcgi_param REMOTE_ADDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $remote_addr;<br />
fastcgi_param REMOTE_PORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $remote_port;<br />
fastcgi_param SERVER_ADDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $server_addr;<br />
fastcgi_param SERVER_PORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $server_port;<br />
fastcgi_param SERVER_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $server_name;<br />
# PHP only, required if PHP was built with &#8211;enable-force-cgi-redirect<br />
fastcgi_param REDIRECT_STATUS&nbsp;&nbsp;&nbsp; 200;请特别注意加粗的一行，PHP-CGI特别需要此行信息来确定PHP文件的位置。</p>
<p>另外需要在PHP-CGI的配置文件（Ubuntu 上此配置文件位于/etc/php5/cgi/php.ini）中，打开cgi.fix_pathinfo选项：</p>
<p>cgi.fix_pathinfo=1;这样php-cgi方能正常使用SCRIPT_FILENAME这个变量。</p>
<p>接下来在nginx的配置中针对php文件配置其利用FastCGI进程来执行：</p>
<p>server {<br />
index index.php;<br />
root /usr/local/nginx/html;</p>
<p>&nbsp;&nbsp;&nbsp; location ~ .*.php$ {<br />
include /usr/local/nginx/conf/fastcgi_params; #请根据自己保存的路径进行设置<br />
fastcgi_index index.php;<br />
fastcgi_pass 127.0.0.1:9000; #请根据自己的FastCGI绑定的地址和端口进行配置<br />
}<br />
}通知Nginx重新载入配置:</p>
<p>kill -HUP `cat /usr/local/nginx/logs/nginx.pid`Ubuntu用户可以使用init脚本：sudo /etc/init.d/nginx reload</p>
<p>然后启动php-cgi -b 127.0.0.1:9000</p>
<p>如果出现No input file specified表示SCRIPT_FILENAME设置的有问题。<br />
使用lighttpd的 spawn-fcgi</p>
<p>get <a href="http://www.lighttpd.net/download/lighttpd-1.4.18.tar.bz2">http://www.lighttpd.net/download/lighttpd-1.4.18.tar.bz2</a> #获取Lighttpd的源码包<br />
tar -xvjf lighttpd-1.4.18.tar.bz2<br />
cd lighttpd-1.4.18<br />
./configure #编译<br />
make<br />
cp src/spawn-fcgi /usr/local/bin/spawn-fcgi #取出spawn-fcgi的程序下面我们就可以使用 spawn-fcgi 来控制php-cgi的FastCGI进程了</p>
<p>/usr/local/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 5 -u www-data -g www-data -f /usr/bin/php-cgi参数含义如下</p>
<p>-f &lt;fcgiapp&gt; 指定调用FastCGI的进程的执行程序位置，根据系统上所装的PHP的情况具体设置 <br />
-a &lt;addr&gt; 绑定到地址addr <br />
-p &lt;port&gt; 绑定到端口port <br />
-s &lt;path&gt; 绑定到unix socket的路径path <br />
-C &lt;childs&gt; 指定产生的FastCGI的进程数，默认为5（仅用于PHP） <br />
-P &lt;path&gt; 指定产生的进程的PID文件路径 <br />
-u和-g FastCGI使用什么身份（-u 用户 -g 用户组）运行，Ubuntu下可以使用www-data，其他的根据情况配置，如nobody、apache等</p>
#运行用户<br />
user&nbsp;&nbsp; nobody nobody;<br />
#启动进程<br />
worker_processes&nbsp;&nbsp; 2;<br />
#全局错误日志及PID文件<br />
error_log&nbsp;&nbsp; logs/error.log notice;<br />
pid &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; logs/nginx.pid;<br />
#工作模式及连接数上限<br />
events {<br />
use epoll;<br />
worker_connections &nbsp;&nbsp; 1024;<br />
}<br />
#设定http服务器，利用它的反向代理功能提供负载均衡支持<br />
http {<br />
#设定mime类型<br />
include &nbsp;&nbsp; conf/mime.types;<br />
default_type&nbsp;&nbsp; application/octet-stream;<br />
#设定日志格式<br />
log_format main &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; '$remote_addr - $remote_user [$time_local] '<br />
'"$request" $status $bytes_sent '<br />
'"$http_referer" "$http_user_agent" '<br />
'"$gzip_ratio"';<br />
log_format download '$remote_addr - $remote_user [$time_local] '<br />
'"$request" $status $bytes_sent '<br />
'"$http_referer" "$http_user_agent" '<br />
'"$http_range" "$sent_http_content_range"';<br />
#设定请求缓冲<br />
client_header_buffer_size 1k;<br />
large_client_header_buffers&nbsp;&nbsp; 4 4k;<br />
#开启gzip模块<br />
gzip on;<br />
gzip_min_length&nbsp;&nbsp; 1100;<br />
gzip_buffers 4 8k;<br />
gzip_types &nbsp;&nbsp; text/plain;<br />
output_buffers&nbsp;&nbsp; 1 32k;<br />
postpone_output&nbsp;&nbsp; 1460;<br />
#设定access log<br />
access_log&nbsp;&nbsp; logs/access.log&nbsp;&nbsp; main;<br />
client_header_timeout&nbsp;&nbsp; 3m;<br />
client_body_timeout 3m;<br />
send_timeout &nbsp;&nbsp; &nbsp;&nbsp; 3m;<br />
sendfile &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; on;<br />
tcp_nopush &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; on;<br />
tcp_nodelay &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; on;<br />
keepalive_timeout&nbsp;&nbsp; 65;<br />
#设定负载均衡的服务器列表<br />
upstream mysvr {<br />
#weigth参数表示权值，权值越高被分配到的几率越大<br />
#本机上的Squid开启3128端口<br />
server 192.168.8.1:3128 weight=5;<br />
server 192.168.8.2:80&nbsp;&nbsp; weight=1;<br />
server 192.168.8.3:80&nbsp;&nbsp; weight=6;<br />
}<br />
#设定虚拟主机<br />
server {<br />
listen &nbsp;&nbsp; &nbsp;&nbsp; 80;<br />
server_name 192.168.8.1 <a href="http://www.yejr.com/" target="_blank"><font color="#656d77">www.yejr.com</font></a>;<br />
charset gb2312;<br />
#设定本虚拟主机的访问日志<br />
access_log&nbsp;&nbsp; logs/www.yejr.com.access.log&nbsp;&nbsp; main;<br />
#如果访问 /img/*, /js/*, /css/* 资源，则直接取本地文件，不通过squid<br />
#如果这些文件较多，不推荐这种方式，因为通过squid的缓存效果更好<br />
location ~ ^/(img|js|css)/&nbsp;&nbsp; {<br />
root /data3/Html;<br />
expires 24h;<br />
}<br />
</code>
<img src ="http://www.blogjava.net/tunaic/aggbug/304212.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tunaic/" target="_blank">三羽</a> 2009-11-30 09:23 <a href="http://www.blogjava.net/tunaic/archive/2009/11/30/304212.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Apache和Subversion集成安装与配置</title><link>http://www.blogjava.net/tunaic/archive/2009/11/24/303498.html</link><dc:creator>三羽</dc:creator><author>三羽</author><pubDate>Tue, 24 Nov 2009 09:28:00 GMT</pubDate><guid>http://www.blogjava.net/tunaic/archive/2009/11/24/303498.html</guid><wfw:comment>http://www.blogjava.net/tunaic/comments/303498.html</wfw:comment><comments>http://www.blogjava.net/tunaic/archive/2009/11/24/303498.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tunaic/comments/commentRss/303498.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tunaic/services/trackbacks/303498.html</trackback:ping><description><![CDATA[要准备的东西如下:<br />
<span style="color: red">1,apache_2.0.63-win32-x86-no_ssl.msi</span><br />
下载:http://apache.mirror.phpchina.com/httpd/binaries/win32/apache_2.0.63-win32-x86-no_ssl.msi<br />
<span style="color: red">2,svn-1.4.5-setup.exe</span><br />
下载地址:http://subversion.tigris.org/files/documents/15/39559/svn-1.4.5-setup.exe<br />
当然,你也可以选择安装TortoiseSVN.但是我没有装,因为我的源码管理都是用netbeans完成的.<br />
<br />
好了,准备的两个软件都下载下来以后,就可以开始安装了.<br />
首先安装apache,一般来说直接点下一步就可以了,在设置domain以及host的时候,设置为localhost就可以了,Email你可以填你自己的Email,也可以随便填一个.安装apache要注意的是,你的电脑上80端口不能被占用,否则你的http服务是启动不起来的,我就遇到过这事,因为我用了skype,它在本机上打开了80和443端口来监听,搞得我一开始装不好,总是启动不起来,后来才发现是skype占用了80端口,于是把skype的设置改了以后,重装apache才成功.装好apache以后,这个时候,它已经在运行了,你可以在浏览器的地址栏输入http://localhost看看,是否安装成功,如果安装成功的话,这个时候浏览器里面应该是可以看到一个页面的.<br />
然后,再安装svn-1.4.5-setup.exe,也很简单,一步一步点下步就可以了,在安装的过程中,它会默认选中一些选项,其中就有一个是是否对apache的HTTP服务器提供支持的选项,这个默认是勾上的,不要去反选它,其它的你可以反选掉.然后svn就宣布安装成功了.你可以到CMD下面去试一下svn这个命令,如果有输出,则说明安装成功了,如果提示svn 不是内部或外部命令，也不是可运行的程序或批处理文件。那就说明没有装好.或者没有把这个命令加入到path中,所以最好的办法是到svn的安装目录下的bin里面去看一下.<br />
两者都装好了以后,就开始配置,当然,配置也是最重要的.<br />
首先要建立一个数据仓库,我们假设建在E盘,数据仓库最好不要建在C盘,因为C盘重装系统以后就格了.我们先在E盘下面建立一个目录叫svnroot,然后在svnroot下面再建立一个我们专门放我们工程的目录,比如叫MyProject.于是我们在E盘下面就有了这个一个文件夹:<span style="color: #ff0000">E:\svnroot\MyProject</span>,然后我们用svnadmin的命令,使这个文件夹变成我们的数据仓库,命令如下:<br />
<span style="color: #0817ff">svnadmin create E:\svnroot\MyProject</span><br />
如果运行成功的话,什么也没有输出,这个时候,我们再来到MyProject文件夹下面,我们会发现多了几个文件夹和文件,我们打开<span style="color: #ff0000">conf</span>文件夹,然后再打开<span style="color: #ff0000">svnserve.conf</span>文件,找到如下行# password-db = passwd,然后把它前面的#去掉,表示MyProject是需要密码验证的.但是我们密码设在哪里呢,这个时候我们再打开conf文件夹下面的passwd文件,用文本编辑器打开,在[users]下面加上我们需要启动的人员的用户和密码,比如<br />
<span style="color: #0817ff">[users]<br />
hadeslee=hadeslee1234<br />
tom=123456</span><br />
这个的话,我们就启动了两个用户,一个叫hadeslee,密码是hadeslee1234,一个叫tom,密码是123456.然后我们保存<span style="color: #ff0000">passwd</span>文件.然后,我们再建一个文件,叫<span style="color: #ff0000">access.auth</span>,这个文件是设置访问权限的,里面内容如下:<br />
<span style="color: #0817ff">[MyProject:/]<br />
hadeslee = rw<br />
[MyProject:/module1]<br />
tom=rw<br />
hadeslee=rw</span><br />
这表示,MyProject下面的所有子目录hadeslee都是有权限读写的,但是tom只有权限读写此项目下面的module1目录,这个各自的访问权限就分的更细致了.有关于MyProject文件夹下面的设置,我们就告一段落了,我们现在开始设置apache,使它能和subvertion一起工作.<br />
<br />
首先来到Subersion的安装目录,进入它的bin目录,我们会发现如下两个文件:<br />
<span style="color: #ff0836">mod_authz_svn.so<br />
mod_dav_svn.so</span><br />
我们把这两个文件复制一下,粘帖到apache的安装目录下的modules文件中,然后我们再打开apache安装目录下的conf文件夹,打开httpd.conf文件.增加如下两行：<br />
<span style="color: #0010ff">LoadModule dav_svn_module modules/mod_dav_svn.so<br />
LoadModule authz_svn_module modules/mod_authz_svn.so</span><br />
注意，由于dav_svn需要dav_module的支持，所以要确保下面这一行没有被注释，并且保证在dav_svn之前加载：<br />
<span style="color: #0010ff">LoadModule dav_module modules/mod_dav.so</span><br />
然后模块的设置就完成了,下面我们要设置SVN的目录,以使我们的apache能知道访问不同的URL的时候,它去哪里寻找这个URL所对应的SVN目录.<br />
在<span style="color: #0010ff"><span style="color: #ff0000">httpd.conf</span></span>文件中,增加如下内容:<br />
<span style="color: #0010ff">&lt;Location /svn/MyProject&gt;<br />
DAV svn<br />
SVNPath E:/svnroot/MyProject<br />
<br />
AuthzSVNAccessFile E:/svnroot/MyProject/conf/access.auth<br />
Satisfy Any<br />
Require valid-user<br />
<br />
AuthType Basic<br />
AuthName "Subversion repositories"<br />
AuthUserFile&nbsp; E:/svnroot/MyProject/conf/users.auth<br />
Require valid-user<br />
&lt;/Location&gt; </span><br />
<br />
添加完上面这些,我们会发现<span style="color: #0010ff"><span style="color: #ff0000">access.auth</span></span>是我们刚才新建的,可是<span style="color: #0010ff"><span style="color: #ff0000">users.auth</span></span>我们并没有新建啊.怎么就把它加进去了.不要急,现在我们就来生成<span style="color: #0010ff"><span style="color: #ff0000">users.auth</span></span>文件.<br />
<br />
进入apache的安装目录的bin文件夹,输入如下命令:<br />
<br />
<span style="color: #ff0030">D:\Program Files\Apache Group\Apache2\bin&gt;<span style="color: #0010ff">htpasswd -cb users.auth hadeslee hadeslee1234</span><br />
Automatically using MD5 format.<br />
Adding password for user hadeslee<br />
<br />
D:\Program Files\Apache Group\Apache2\bin&gt;<br />
<br />
</span>我们就会发现在bin目录生成了users.auth,我们可以看到,hadeslee用户名已经被添加进去了,密码是用MD5加密过的.然后我们还要增加用户呢,可以用如下方法:<br />
<span style="color: #ff0000">D:\Program Files\Apache Group\Apache2\bin&gt;<span style="color: #0010ff">htpasswd -b users.auth tom 123456</span><br />
Automatically using MD5 format.<br />
Adding password for user tom<br />
<br />
D:\Program Files\Apache Group\Apache2\bin&gt;</span><br />
<br />
只是在生成密码的时候,小了一个c的参数,因为c表示重新生成一个这样的文件,我们第一次的时候是要加的,后面我们要添加用户的时候,就不用这个c了.然后打开<span style="color: #0010ff"><span style="color: #ff0000">users.auth</span></span>,会发现两个用户都已经在里面了,这个时候,我们把<span style="color: #0010ff"><span style="color: #ff0000">users.auth</span></span>移到<span style="color: #ff0000"><span style="color: #0010ff"><span style="color: #ff0000">E:/svnroot/MyProject/conf/</span></span></span>里面去,使我们上面的设置生效.<br />
<br />
这个时候,我们的设置就完成了.可以在浏览器里面输入<span style="color: #ff0000"><span style="color: #0010ff"><span style="color: #ff0000"><span style="color: #ff0000"><span style="color: #0010ff">http://localhost/svn/MyProject</span></span></span></span></span>试试看.<br />
<br />
如果以后我们还要加入其它的项目呢,可以有两点解决方式<br />
1,把以后的项目也导入到我们的MyProject的仓库中,这个的话,就不用改什么配置了<br />
2,新建一个数据仓库,然后只要按上面的步骤,把新的&lt;Location...&gt;设置放到httpd.conf里面就可以了.<br />
当然,验证文件,访问权限文件,还有访问SVN的密码都要自己按上面的方法再设一遍.<br />
<img src ="http://www.blogjava.net/tunaic/aggbug/303498.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tunaic/" target="_blank">三羽</a> 2009-11-24 17:28 <a href="http://www.blogjava.net/tunaic/archive/2009/11/24/303498.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>最新版整合Apache2.2.9和Tomcat6.0.18</title><link>http://www.blogjava.net/tunaic/archive/2009/10/22/299296.html</link><dc:creator>三羽</dc:creator><author>三羽</author><pubDate>Thu, 22 Oct 2009 02:11:00 GMT</pubDate><guid>http://www.blogjava.net/tunaic/archive/2009/10/22/299296.html</guid><wfw:comment>http://www.blogjava.net/tunaic/comments/299296.html</wfw:comment><comments>http://www.blogjava.net/tunaic/archive/2009/10/22/299296.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tunaic/comments/commentRss/299296.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tunaic/services/trackbacks/299296.html</trackback:ping><description><![CDATA[<p style="text-indent: 2em">APACHE 2.2.9+TOMCAT6.0.18配置负载均衡 </p>
<p style="text-indent: 2em">目标: </p>
<p style="text-indent: 2em">使用 apache 和 tomcat 配置一个可以应用的 web 网站，要达到以下要求： </p>
<p style="text-indent: 2em">1、&nbsp; Apache 做为 HttpServer ，后面连接多个 tomcat 应用实例，并进行负载均衡。 </p>
<p style="text-indent: 2em">2、&nbsp; 为系统设定 Session 超时时间，包括 Apache 和 tomcat </p>
<p style="text-indent: 2em">3、&nbsp; 为系统屏蔽文件列表，包括 Apache 和 tomcat </p>
<p style="text-indent: 2em">注：本例程以一台机器为例子，即同一台机器上装一个apache和4个Tomcat。 </p>
<p style="text-indent: 2em">一、前期准备工作：安装用的程序（前提保证已安装了JDK1.5以上的版本） </p>
<p style="text-indent: 2em">APAHCE 2.2.9下载：apache_2.2.9-win32-x86-no_ssl.msi </p>
<p style="text-indent: 2em">TOMCAT6.0.18下载：apache-tomcat-6.0.18.zip直接解压。 </p>
<p style="text-indent: 2em">二、安装过程 </p>
<p style="text-indent: 2em">APAHCE安装目录：D:\Apache。 </p>
<p style="text-indent: 2em">四个TOMCAT目录：自行解压到(D:\Tomcat集群服务器\)下。分别为 tomcat6.0，tomcat6.01，tomcat6.02，tomcat6.03 </p>
<p style="text-indent: 2em">这几个安装过程就不详细说明了。 </p>
<p style="text-indent: 2em">三、配置 </p>
<p style="text-indent: 2em">1、Apache配置 </p>
<p style="text-indent: 2em">1.1、httpd.conf配置 </p>
<p style="text-indent: 2em">修改APACHE的配置文件D:\Apache \conf\httpd.conf </p>
<p style="text-indent: 2em">将以下Module的注释去掉，这里并没有使用mod_jk.so进行apache和tomcat的链接，从2.X以后apache自身已集成了mod_jk.so的功能。只需简单的把下面几行去掉注释，就相当于以前用mod_jk.so比较繁琐的配置了。这里主要采用了代理的方法，就这么简单。 </p>
<p style="text-indent: 2em">LoadModule proxy_module modules/mod_proxy.so </p>
<p style="text-indent: 2em">LoadModule proxy_connect_module modules/mod_proxy_connect.so </p>
<p style="text-indent: 2em">LoadModule proxy_ftp_module modules/mod_proxy_ftp.so </p>
<p style="text-indent: 2em">LoadModule proxy_http_module modules/mod_proxy_http.so </p>
<p style="text-indent: 2em">LoadModule proxy_ajp_module modules/mod_proxy_ajp.so </p>
<p style="text-indent: 2em">LoadModule proxy_balancer_module modules/mod_proxy_balancer.so </p>
<p style="text-indent: 2em">再找到&lt;IfModule dir_module&gt;&lt;/IfModule&gt;加上index.jsp修改成 </p>
<p style="text-indent: 2em">&lt;IfModule dir_module&gt; </p>
<p style="text-indent: 2em">DirectoryIndex index.html index.jsp </p>
<p style="text-indent: 2em">&lt;/IfModule&gt; </p>
<p style="text-indent: 2em">1.1.1、&nbsp; 在最下面加入 </p>
<p style="text-indent: 2em">ProxyRequests Off </p>
<p style="text-indent: 2em">&lt;proxy balancer://cluster&gt; </p>
<p style="text-indent: 2em">BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=jvm1 </p>
<p style="text-indent: 2em">BalancerMember ajp:// 127.0.0.1:9009 loadfactor=1 route=jvm2 </p>
<p style="text-indent: 2em">BalancerMember ajp:// 127.0.0.1:9001 loadfactor=1 route=jvm3 </p>
<p style="text-indent: 2em">BalancerMember ajp:// 127.0.0.1:9003 loadfactor=1 route=jvm4 </p>
<p style="text-indent: 2em">&lt;/proxy&gt; </p>
<p style="text-indent: 2em">上面的四个BalancerMember成员是我们配置的tomcat集群。后面会说明的。 </p>
<p style="text-indent: 2em">1.2、httpd-vhosts.conf设置 </p>
<p style="text-indent: 2em">接下来进行虚拟主机的设置。APACHE的虚拟主机设置如下： </p>
<p style="text-indent: 2em">首先要修改 conf/httpd.conf找到(#Include conf/extra/httpd-vhosts.conf) </p>
<p style="text-indent: 2em">把注释去掉。 </p>
<p style="text-indent: 2em"># Virtual hosts </p>
<p style="text-indent: 2em">Include conf/extra/httpd-vhosts.conf </p>
<p style="text-indent: 2em">在文件（extra/httpd-vhosts.conf）最下面加入 </p>
<p style="text-indent: 2em">&lt;VirtualHost *:80&gt; </p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ServerAdmin <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#114;&#111;&#115;&#105;&#64;&#49;&#50;&#54;&#46;&#99;&#111;&#109;">rosi@126.com</a> </p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ServerName localhost </p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ServerAlias localhost </p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On </p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ProxyPassReverse / balancer://cluster/ </p>
<p style="text-indent: 2em">&lt;/VirtualHost&gt; </p>
<p style="text-indent: 2em">其中的域名和路径根据你自己情况设置 </p>
<p style="text-indent: 2em">然后再设置TOMCAT虚拟主机 </p>
<p style="text-indent: 2em">2 配置 tomcat </p>
<p style="text-indent: 2em">2.1.&nbsp; 配置 server 的关闭 </p>
<p style="text-indent: 2em">我们需要在一台机器上跑 4 个不同的 tomcat ，需要修改不同的 tomcat 的关闭口，避免出现端口被占用的情况。其中tomcat6.0用默认值，不修改。其他三个修改。在tomcat6.01\conf, tomcat6.02\conf下和tomcat6.03\conf下的 server.xml 中找到 server, 将： </p>
<p style="text-indent: 2em">&lt;Server port="8005" shutdown="SHUTDOWN"&gt; </p>
<p style="text-indent: 2em">改为 </p>
<p style="text-indent: 2em">&lt;Server port="XXXX" shutdown="SHUTDOWN"&gt; </p>
<p style="text-indent: 2em">XXXX 在这里表示不同的端口：我的其它三个 tomcat 分别使用 9005，8006 ， 9007&nbsp;&nbsp; </p>
<p style="text-indent: 2em">2.2. 配置 Engine </p>
<p style="text-indent: 2em">把原来的配置注释掉，把下面一句去掉注释。并标明jvmRoute="jvm2". </p>
<p style="text-indent: 2em">&lt;Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm2"&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p style="text-indent: 2em">以下是原来的配置。 </p>
<p style="text-indent: 2em">&lt;!-- &lt;Engine name="Catalina" defaultHost="localhost"&gt;&nbsp; --&gt; </p>
<p style="text-indent: 2em">其他（tomcat6.02和tomcat6.03）也要同样 配置。注意：jvmRoute配置不要一样。 </p>
<p style="text-indent: 2em">&lt;Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm3"&gt;&nbsp; </p>
<p style="text-indent: 2em">&lt;Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm4"&gt;&nbsp; </p>
<p style="text-indent: 2em">2.3. 配置 Connector </p>
<p style="text-indent: 2em">原来的默认配置。 </p>
<p style="text-indent: 2em">&lt;!-- Define an AJP 1.3 Connector on port 8009 --&gt; </p>
<p style="text-indent: 2em">&lt;Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /&gt; </p>
<p style="text-indent: 2em">这里是apache和tomcat链接的关键，前台apache就是通过AJP协议与tomcat进行通信的，以完成负载均衡的作用。也可以用HTTP协议。大家注意它们是如何连接通信的，上面的红色部分（port="8009"）就是连接的接口了。 </p>
<p style="text-indent: 2em">把其他三个tomcat的&lt;Connector port="XXX" /&gt;port分别改成与上面 </p>
<p style="text-indent: 2em">&lt;proxy balancer://cluster&gt; </p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp; #与tomcat6.0对应，route与&lt;Engine jvmRoute="jvm1"&gt;对应。 </p>
<p style="text-indent: 2em">BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=jvm1 </p>
<p style="text-indent: 2em">#与tomcat6.01对应，route与&lt;Engine jvmRoute="jvm2"&gt;对应。 </p>
<p style="text-indent: 2em">BalancerMember ajp:// 127.0.0.1:9009 loadfactor=1 route=jvm2 </p>
<p style="text-indent: 2em">#与tomcat6.02对应，route与&lt;Engine jvmRoute="jvm3"&gt;对应。 </p>
<p style="text-indent: 2em">BalancerMember ajp:// 127.0.0.1:9001 loadfactor=1 route=jvm3 </p>
<p style="text-indent: 2em">#与tomcat6.03对应，route与&lt;Engine jvmRoute="jvm4"&gt;对应。 </p>
<p style="text-indent: 2em">BalancerMember ajp:// 127.0.0.1:9003 loadfactor=1 route=jvm4 </p>
<p style="text-indent: 2em">&lt;/proxy&gt; </p>
<p style="text-indent: 2em">中的端口对应，tomcat6.01 的ajp端口port:9009. tomcat6.02 的ajp端口port:9001。tomcat6.03 的ajp端口port:9003.一定要与上面的一致。同时也要把redirectPort的值改成唯一的，确保四个tomcat的都不一样。 </p>
<p style="text-indent: 2em">2.5.配置Cluster(每个tomcat中都要修改) </p>
<p style="text-indent: 2em">原来的配置。 </p>
<p style="text-indent: 2em">&lt;Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/&gt; </p>
<p style="text-indent: 2em">修改为以下的代码：&lt;Receiver port=&#8221;XX&#8221;/&gt;port也要保证唯一性。 </p>
<p style="text-indent: 2em">&lt;Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"&nbsp; channelSendOptions="6"&gt; </p>
<p style="text-indent: 2em">&lt;Manager className="org.apache.catalina.ha.session.BackupManager" </p>
<p style="text-indent: 2em">expireSessionsOnShutdown="false" </p>
<p style="text-indent: 2em">notifyListenersOnReplication="true" </p>
<p style="text-indent: 2em">mapSendOptions="6"/&gt; </p>
<p style="text-indent: 2em">&lt;!-- </p>
<p style="text-indent: 2em">&lt;Manager className="org.apache.catalina.ha.session.DeltaManager" </p>
<p style="text-indent: 2em">expireSessionsOnShutdown="false" </p>
<p style="text-indent: 2em">notifyListenersOnReplication="true"/&gt; </p>
<p style="text-indent: 2em">--&gt; </p>
<p style="text-indent: 2em">&lt;Channel className="org.apache.catalina.tribes.group.GroupChannel"&gt; </p>
<p style="text-indent: 2em">&lt;Membership className="org.apache.catalina.tribes.membership.McastService" </p>
<p style="text-indent: 2em">address="228.0.0.4" </p>
<p style="text-indent: 2em">port="45564" </p>
<p style="text-indent: 2em">frequency="500" </p>
<p style="text-indent: 2em">dropTime="3000"/&gt; </p>
<p style="text-indent: 2em">&lt;Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" </p>
<p style="text-indent: 2em">address="auto" </p>
<p style="text-indent: 2em">port="5001" </p>
<p style="text-indent: 2em">selectorTimeout="100" </p>
<p style="text-indent: 2em">maxThreads="6"/&gt; </p>
<p style="text-indent: 2em">&lt;Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"&gt; </p>
<p style="text-indent: 2em">&lt;Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/&gt; </p>
<p style="text-indent: 2em">&lt;/Sender&gt; </p>
<p style="text-indent: 2em">&lt;Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/&gt; </p>
<p style="text-indent: 2em">&lt;Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/&gt; </p>
<p style="text-indent: 2em">&lt;Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/&gt; </p>
<p style="text-indent: 2em">&lt;/Channel&gt; </p>
<p style="text-indent: 2em">&lt;Valve className="org.apache.catalina.ha.tcp.ReplicationValve" </p>
<p style="text-indent: 2em">filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/&gt; </p>
<p style="text-indent: 2em">&lt;Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" </p>
<p style="text-indent: 2em">tempDir="/tmp/war-temp/" </p>
<p style="text-indent: 2em">deployDir="/tmp/war-deploy/" </p>
<p style="text-indent: 2em">watchDir="/tmp/war-listen/" </p>
<p style="text-indent: 2em">watchEnabled="false"/&gt; </p>
<p style="text-indent: 2em">&lt;ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/&gt; </p>
<p style="text-indent: 2em">&lt;/Cluster&gt; </p>
<p style="text-indent: 2em">这个设置是主要用以tomcat的集群。 </p>
<p style="text-indent: 2em">四、启动服务，测试tomcat自带的例子 </p>
<p style="text-indent: 2em">1、测试apache和tomcat协作。 </p>
<p style="text-indent: 2em">先在每个tomcat中的\webapps\ROOT下的index.jsp下面加上以下的测试代码部分：(X代表不同的tomcat的输出不同的信息)，把index.html删除，以免影响测试效果。在最后面的加上.即&lt;/table&gt;&lt;/body&gt;之间。 </p>
<p style="text-indent: 2em">&lt;% </p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("tomcat6.0X&nbsp; deal&nbsp; with&nbsp; request"); </p>
<p style="text-indent: 2em">%&gt; </p>
<p style="text-indent: 2em">然后再通过http:// 127.0.0.1来访问一下，就会出现大家熟悉的猫猫。 </p>
<p style="text-indent: 2em">然后再通过分别访问 </p>
<p style="text-indent: 2em">http:// 127.0.0.1:8080， http:// 127.0.0.1:9080，http:// 127.0.0.1:8081，http:// 127.0.0.1:9002它们访问的内容和上面的http:// 127.0.0.1是一样的。 </p>
<p style="text-indent: 2em">这样就说明apache和TOMCAT整合成功！ </p>
<p style="text-indent: 2em">2、测试均衡器 </p>
<p style="text-indent: 2em">通过http:// 127.0.0.1多次访问，要想看到真正的效果，必须用一些压力测试工具，可用微软Microsoft Web Application Stress Tool进行简单压力测试，不然你靠不停刷新是体现不出来的，你只会在一个tomcat的控制台有输出结果。只用用压力测试工具模拟大量用户同时访问，你会发现四个tomcat控制台均有打出控制信息，说明均衡器工作正常。 </p>
<p style="text-indent: 2em">3、测试Session复制</p>
<p style="text-indent: 2em">访问url： <a href="http://localhost/examples/servlet/SessionExample">http://localhost/examples/servlet/SessionExample</a> 可以得到一个关于session的例子，我们用它来测试集群的错误恢复能力。</p>
<p style="text-indent: 2em">测试步骤如下：</p>
<p style="text-indent: 2em">关闭tomcat1和tomcat2；</p>
<p style="text-indent: 2em">启动tomcat1</p>
<p style="text-indent: 2em">在浏览器中输入属性名tomcat1和属性值tomcat1再提交，返回的页面显示session中有刚刚输入的tomcat1属性；</p>
<p style="text-indent: 2em">启动tomcat2;</p>
<p style="text-indent: 2em">过一会后（等待tomcat2和tomcat1通信并复制信息）关闭tomcat1；</p>
<p style="text-indent: 2em">在浏览器中输入属性名tomcat2和属性值tomcat2再提交，返回的页面显示session中有刚刚输入的tomcat2属性，还有先前输入的tomcat1属性；</p>
<p style="text-indent: 2em">启动tomcat1；</p>
<p style="text-indent: 2em">过一会后（等待tomcat2和tomcat1通信并复制信息）关闭tomcat2；</p>
<p style="text-indent: 2em">在浏览器中输入属性名tomcat11和属性值tomcat11再提交，返回的页面显示session中有刚刚输入的tomcat11属性，还有先前输入的tomcat1和tomcat2属性;</p>
<img src ="http://www.blogjava.net/tunaic/aggbug/299296.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tunaic/" target="_blank">三羽</a> 2009-10-22 10:11 <a href="http://www.blogjava.net/tunaic/archive/2009/10/22/299296.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA面试精选26题</title><link>http://www.blogjava.net/tunaic/archive/2009/10/14/298161.html</link><dc:creator>三羽</dc:creator><author>三羽</author><pubDate>Wed, 14 Oct 2009 02:44:00 GMT</pubDate><guid>http://www.blogjava.net/tunaic/archive/2009/10/14/298161.html</guid><wfw:comment>http://www.blogjava.net/tunaic/comments/298161.html</wfw:comment><comments>http://www.blogjava.net/tunaic/archive/2009/10/14/298161.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tunaic/comments/commentRss/298161.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tunaic/services/trackbacks/298161.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;&nbsp;&nbsp;1.&nbsp;float型float&nbsp;f=3.4是否正确?　　答：不正确，应为float&nbsp;f=3.4f　　2.&nbsp;当一个对象被当作参数传递到一个方法后，此方法可改变这个对象的属性，并可返回变化后的结果，那么这里到底是值传递还是引用传递?　　答：是引用传递。　　3.&nbsp;在java中一个类被声明为fi...&nbsp;&nbsp;<a href='http://www.blogjava.net/tunaic/archive/2009/10/14/298161.html'>阅读全文</a><img src ="http://www.blogjava.net/tunaic/aggbug/298161.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tunaic/" target="_blank">三羽</a> 2009-10-14 10:44 <a href="http://www.blogjava.net/tunaic/archive/2009/10/14/298161.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WebSphere集群部署</title><link>http://www.blogjava.net/tunaic/archive/2009/08/27/292810.html</link><dc:creator>三羽</dc:creator><author>三羽</author><pubDate>Thu, 27 Aug 2009 06:25:00 GMT</pubDate><guid>http://www.blogjava.net/tunaic/archive/2009/08/27/292810.html</guid><wfw:comment>http://www.blogjava.net/tunaic/comments/292810.html</wfw:comment><comments>http://www.blogjava.net/tunaic/archive/2009/08/27/292810.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tunaic/comments/commentRss/292810.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tunaic/services/trackbacks/292810.html</trackback:ping><description><![CDATA[1、https://www.ibm.com/developerworks/cn/websphere/library/techarticles/0604_xumw/<br />
2、http://www.diybl.com/course/3_program/java/javaxl/20071022/79392.html
 <img src ="http://www.blogjava.net/tunaic/aggbug/292810.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tunaic/" target="_blank">三羽</a> 2009-08-27 14:25 <a href="http://www.blogjava.net/tunaic/archive/2009/08/27/292810.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>工程打war包方法</title><link>http://www.blogjava.net/tunaic/archive/2009/08/27/292808.html</link><dc:creator>三羽</dc:creator><author>三羽</author><pubDate>Thu, 27 Aug 2009 05:58:00 GMT</pubDate><guid>http://www.blogjava.net/tunaic/archive/2009/08/27/292808.html</guid><wfw:comment>http://www.blogjava.net/tunaic/comments/292808.html</wfw:comment><comments>http://www.blogjava.net/tunaic/archive/2009/08/27/292808.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tunaic/comments/commentRss/292808.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tunaic/services/trackbacks/292808.html</trackback:ping><description><![CDATA[<p>(1)在命令行中运用Jar命令</p>
<p>假定有一个Web应用：C:\myHome</p>
<p>myHome/WEB-INF/&#8230;&#8230;<br />
myHome/image/&#8230;&#8230;<br />
myHome/src/&#8230;&#8230;<br />
myHome/index.jsp</p>
<p>在命令行窗口下执行如下命令：</p>
<p>C:\&gt;cd/d &nbsp;c:\myHome</p>
<p>C:\myHome\&gt;jar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cvf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myhome.war&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */&nbsp;&nbsp;&nbsp;&nbsp; .</p>
<p>解释：jar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cvf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [A-&gt;war包名].war&nbsp;&nbsp; [B-&gt;资源文件及文件夹]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [C-&gt;将要生成war包的目标文件夹]</p>
<p>&#8220;*/&#8221;（B-&gt;）代表当前目录（C:\myHome）下的所有文件及文件夹。</p>
<p>&#8220;.&#8221;&nbsp;&nbsp;&nbsp; （C-&gt;）表明将要在当前目录中生成war包。</p>
<p>操作完成后，找到C:\myHome下新生成的myhome.war，将其拷入TOMCAT_HOME/webapps/下。然后启动Tomcat即可。</p>
<p>(2)利用IDE工具打包,如Eclipse</p>
<p>右键点击你想打包的文件或者项目，选择&#8220;导出...&#8221;,在弹出的对话框中选择&#8220;WAR文件&#8221; ，上面有许多选项，还可以选&#8220;EAR&#8221;，&#8220;JAR&#8221;.</p>
 <img src ="http://www.blogjava.net/tunaic/aggbug/292808.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tunaic/" target="_blank">三羽</a> 2009-08-27 13:58 <a href="http://www.blogjava.net/tunaic/archive/2009/08/27/292808.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用JAVA调用.net的webservice实例</title><link>http://www.blogjava.net/tunaic/archive/2009/05/18/271318.html</link><dc:creator>三羽</dc:creator><author>三羽</author><pubDate>Mon, 18 May 2009 05:57:00 GMT</pubDate><guid>http://www.blogjava.net/tunaic/archive/2009/05/18/271318.html</guid><wfw:comment>http://www.blogjava.net/tunaic/comments/271318.html</wfw:comment><comments>http://www.blogjava.net/tunaic/archive/2009/05/18/271318.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tunaic/comments/commentRss/271318.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tunaic/services/trackbacks/271318.html</trackback:ping><description><![CDATA[&nbsp;首先登录www.wopos.com/webservice/Weather.asmx?op=getWeather。可以看到如下的SOAP信息&nbsp;<br />
<strong><font color="#ff0000">请求:</font></strong><br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td>
            <table class="ubb_code" cellspacing="0" cellpadding="6" width="95%" align="right" border="0">
                <tbody>
                    <tr>
                        <td><strong>以下内容为程序代码:</strong><br />
                        <br />
                        POST&nbsp;/webservice/Weather.asmx&nbsp;http/1.1<br />
                        Host:&nbsp;www.wopos.com<br />
                        Content-Type:&nbsp;text/xml;&nbsp;charset=utf-8<br />
                        Content-Length:&nbsp;length<br />
                        SOAPAction:&nbsp;"http://tempuri.org/getWeather"<br />
                        <br />
                        &lt;?xml&nbsp;version="1.0"&nbsp;encoding="utf-8"?&gt;<br />
                        &lt;soap:Envelope&nbsp;xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&nbsp;xmlns:xsd="http://www.w3.org/2001/XMLSchema"&nbsp;xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"&gt;<br />
                        &nbsp;&nbsp;&lt;soap:Body&gt;<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&lt;getWeather&nbsp;xmlns="http://tempuri.org/"&gt;<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mCity&gt;string&lt;/mCity&gt;<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&lt;/getWeather&gt;<br />
                        &nbsp;&nbsp;&lt;/soap:Body&gt;<br />
                        &lt;/soap:Envelope&gt;<br />
                        </td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<br />
把XML部分全部复制下来创建一个XML文件（普通的文本文件也可以)，为了以后编程方面，把<br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td>
            <table class="ubb_code" cellspacing="0" cellpadding="6" width="95%" align="right" border="0">
                <tbody>
                    <tr>
                        <td><strong>以下内容为程序代码:</strong><br />
                        <br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mCity&gt;string&lt;/mCity&gt;&nbsp;<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...<br />
                        </td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<br />
改成<br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td>
            <table class="ubb_code" cellspacing="0" cellpadding="6" width="95%" align="right" border="0">
                <tbody>
                    <tr>
                        <td><strong>以下内容为程序代码:</strong><br />
                        <br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mCity&gt;＄{city}＄&lt;/mCity&gt;&nbsp;<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...<br />
                        </td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<br />
以weathersoap.xml保存在以后生成的类的同一目录。<br />
<br />
<strong><font color="#ff0000">响应:</font></strong><br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td>
            <table class="ubb_code" cellspacing="0" cellpadding="6" width="95%" align="right" border="0">
                <tbody>
                    <tr>
                        <td><strong>以下内容为程序代码:</strong><br />
                        <br />
                        http/1.1&nbsp;200&nbsp;OK<br />
                        Content-Type:&nbsp;text/xml;&nbsp;charset=utf-8<br />
                        Content-Length:&nbsp;length<br />
                        <br />
                        &lt;?xml&nbsp;version="1.0"&nbsp;encoding="utf-8"?&gt;<br />
                        &lt;soap:Envelope&nbsp;xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&nbsp;xmlns:xsd="h&nbsp;ttp://www.w3.org/2001/XMLSchema"&nbsp;xmlns:soap="h&nbsp;ttp://schemas.xmlsoap.org/soap/envelope/"&gt;<br />
                        &nbsp;&nbsp;&lt;soap:Body&gt;<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&lt;getWeatherResponse&nbsp;xmlns="h&nbsp;ttp://tempuri.org/"&gt;<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;getWeatherResult&gt;string&lt;/getWeatherResult&gt;<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&lt;/getWeatherResponse&gt;<br />
                        &nbsp;&nbsp;&lt;/soap:Body&gt;<br />
                        &lt;/soap:Envelope&gt;<br />
                        </td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<br />
在后面对XML的解释要用到响应部分的XML描述<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;接下就开始写代码了。<br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td>
            <table class="ubb_code" cellspacing="0" cellpadding="6" width="95%" align="right" border="0">
                <tbody>
                    <tr>
                        <td><strong>以下内容为程序代码:</strong><br />
                        <br />
                        package&nbsp;jaqcy.weatherreport.client;<br />
                        <br />
                        import&nbsp;java.io.*;<br />
                        import&nbsp;java.net.*;<br />
                        import&nbsp;javax.xml.parsers.*;<br />
                        import&nbsp;org.w3c.dom.*;<br />
                        /**<br />
                        &nbsp;*<br />
                        &nbsp;*&nbsp;@author&nbsp;jaqcy<br />
                        &nbsp;*/<br />
                        public&nbsp;class&nbsp;WeatherReport&nbsp;<br />
                        {&nbsp;&nbsp;&nbsp;&nbsp;<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;String&nbsp;getSoapRequest(String&nbsp;city)//city为要查询天气的城市名<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;{<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try&nbsp;<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class&nbsp;cls=Object.class;<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InputStreamReader&nbsp;isr=new&nbsp;InputStreamReader(cls.getResourceAsStream("/jaqcy/weatherreport/client/weathersoap.xml"）);//读取存在weathersoap的SOAP信息<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BufferedReader&nbsp;reader=new&nbsp;BufferedReader(isr);<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;soap="";<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;tmp;<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while((tmp=reader.readLine())!=null)<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;soap+=tmp;<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reader.close();<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isr.close();<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;soap.replace("＄{city}＄",city);//用传入的参数city替换原来的＄{city}＄<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch&nbsp;(Exception&nbsp;ex)&nbsp;<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex.printStackTrace();<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;null;<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;}<br />
                        &nbsp;&nbsp;/*<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;*返回InputStream是因为w3c&nbsp;DOM中Document的parse方法可<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;*以接受InputStream类型的参数，方面在下一步对XML的解释<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;*/<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;InputStream&nbsp;getSoapInputStream(String&nbsp;city)throws&nbsp;Exception<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;{<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;soap=getSoapRequest(city);<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(soap==null)<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;null;<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;URL&nbsp;url=new&nbsp;URL("http://www.wopos.com/webservice/Weather.asmx"）;<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;URLConnection&nbsp;conn=url.openConnection();<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.setUseCaches(false);<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.setDoInput(true);<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.setDoOutput(true);<br />
                        <br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.setRequestProperty("Content-Length",&nbsp;Integer.toString(soap.length()));<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.setRequestProperty("Content-Type",&nbsp;"text/xml;&nbsp;charset=utf-8"）;<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.setRequestProperty("SOAPAction","\"http://tempuri.org/getWeather\""）;<br />
                        <br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OutputStream&nbsp;os=conn.getOutputStream();<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OutputStreamWriter&nbsp;osw=new&nbsp;OutputStreamWriter(os,"utf-8"）;<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;osw.write(soap);<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;osw.flush();<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;osw.close();<br />
                        <br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InputStream&nbsp;is=conn.getInputStream();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;is;&nbsp;&nbsp;&nbsp;<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch(Exception&nbsp;e)<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;null;<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;}<br />
                        /*<br />
                        &nbsp;&nbsp;*用W3C&nbsp;DOM对返回的XML进行解释<br />
                        &nbsp;&nbsp;*<br />
                        &nbsp;&nbsp;*/<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;String&nbsp;getWeather(String&nbsp;city)<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;{<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Document&nbsp;doc;<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DocumentBuilderFactory&nbsp;dbf=DocumentBuilderFactory.newInstance();<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbf.setNamespaceAware(true);<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DocumentBuilder&nbsp;db=dbf.newDocumentBuilder();<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InputStream&nbsp;is=getSoapInputStream(city);<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;doc=db.parse(is);<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NodeList&nbsp;nl=doc.getElementsByTagName("getWeatherResult"）;<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Node&nbsp;n=nl.item(0);<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;weather=n.getFirstChild().getNodeValue();<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is.close();<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;weather;<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch(Exception&nbsp;e)<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;null;<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;}<br />
                        }<br />
                        </td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<br />
写个main方法检验一下结果<br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td>
            <table class="ubb_code" cellspacing="0" cellpadding="6" width="95%" align="right" border="0">
                <tbody>
                    <tr>
                        <td><strong>以下内容为程序代码:</strong><br />
                        <br />
                        <br />
                        &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args)throws&nbsp;Exception<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;{<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(WeatherReport.getWeather("珠海"）);<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;}<br />
                        </td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<br />
结果如下<br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td>
            <table class="ubb_code" cellspacing="0" cellpadding="6" width="95%" align="right" border="0">
                <tbody>
                    <tr>
                        <td><strong>以下内容为程序代码:</strong><br />
                        <br />
                        城市==珠海,日期==4．02-4．03,图1==http://weather.tq121.com.cn/images/a1.gif,图2==http://weather.tq121.com.cn/images/00.gif,天气==多云,温度==28℃~22℃,风==微风,紫外线==弱<br />
                        </td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
 <img src ="http://www.blogjava.net/tunaic/aggbug/271318.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tunaic/" target="_blank">三羽</a> 2009-05-18 13:57 <a href="http://www.blogjava.net/tunaic/archive/2009/05/18/271318.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>