亚洲国产小视频精品久久久三级,亚洲国产小视频精品久久久三级,亚洲精品无码精品mV在线观看http://www.tkk7.com/tunaic/Ideal is the beacon. Without ideal, there is no secure direction; without direction ,there is no life. <br> 理想是指路明燈。沒有理想,就沒有堅定的方向;沒有方向,就沒有生活。<br> CTRL+T eclipsezh-cnSun, 11 May 2025 15:48:44 GMTSun, 11 May 2025 15:48:44 GMT60WEBLOGIC與Tomcat對于Get方法亂碼的處理http://www.tkk7.com/tunaic/archive/2016/07/05/431100.html三羽三羽Tue, 05 Jul 2016 06:30:00 GMThttp://www.tkk7.com/tunaic/archive/2016/07/05/431100.htmlhttp://www.tkk7.com/tunaic/comments/431100.htmlhttp://www.tkk7.com/tunaic/archive/2016/07/05/431100.html#Feedback0http://www.tkk7.com/tunaic/comments/commentRss/431100.htmlhttp://www.tkk7.com/tunaic/services/trackbacks/431100.html WEBLOGIC 處理方式: 1.在web.xml中增加以下配置即可,編碼也有可能為GBK,可根據自己的程序編碼進行設置 Xml代碼 復制代碼 收藏代碼 1. 2. weblogic.httpd.inputCharset./* 3. UTF-8 4.

三羽 2016-07-05 14:30 發表評論
]]>
Oracle換IP無法正常使用解決http://www.tkk7.com/tunaic/archive/2014/01/17/409048.html三羽三羽Fri, 17 Jan 2014 01:43:00 GMThttp://www.tkk7.com/tunaic/archive/2014/01/17/409048.htmlhttp://www.tkk7.com/tunaic/comments/409048.htmlhttp://www.tkk7.com/tunaic/archive/2014/01/17/409048.html#Feedback0http://www.tkk7.com/tunaic/comments/commentRss/409048.htmlhttp://www.tkk7.com/tunaic/services/trackbacks/409048.htmlHOST= 改為計算機名稱

三羽 2014-01-17 09:43 發表評論
]]>
ORACLE命令創建用戶http://www.tkk7.com/tunaic/archive/2014/01/16/409032.html三羽三羽Thu, 16 Jan 2014 07:35:00 GMThttp://www.tkk7.com/tunaic/archive/2014/01/16/409032.htmlhttp://www.tkk7.com/tunaic/comments/409032.htmlhttp://www.tkk7.com/tunaic/archive/2014/01/16/409032.html#Feedback0http://www.tkk7.com/tunaic/comments/commentRss/409032.htmlhttp://www.tkk7.com/tunaic/services/trackbacks/409032.html 

cmd
sqlplus /nolog

conn /as sysdba

//創建用戶并指定表空間  

create user username identified by password  

default tablespace my(users) 

temporary tablespace my(temp);  

//給用戶授予權限  

grant connect,resource to username;  

//以后以該用戶登錄,創建的任何數據庫對象都屬于user_temp 和user_data表空間,

這就不用在每創建一個對象給其指定表空間了 

撤權:  

       revoke   權限...   from  用戶名;

刪除用戶命令

drop user user_name cascade;

 



三羽 2014-01-16 15:35 發表評論
]]>
Apache整合Tomcathttp://www.tkk7.com/tunaic/archive/2012/02/08/369619.html三羽三羽Wed, 08 Feb 2012 11:30:00 GMThttp://www.tkk7.com/tunaic/archive/2012/02/08/369619.htmlhttp://www.tkk7.com/tunaic/comments/369619.htmlhttp://www.tkk7.com/tunaic/archive/2012/02/08/369619.html#Feedback0http://www.tkk7.com/tunaic/comments/commentRss/369619.htmlhttp://www.tkk7.com/tunaic/services/trackbacks/369619.html閱讀全文

三羽 2012-02-08 19:30 發表評論
]]>
IE窗口關閉時如何提交JS事件http://www.tkk7.com/tunaic/archive/2011/01/25/343497.html三羽三羽Tue, 25 Jan 2011 06:21:00 GMThttp://www.tkk7.com/tunaic/archive/2011/01/25/343497.htmlhttp://www.tkk7.com/tunaic/comments/343497.htmlhttp://www.tkk7.com/tunaic/archive/2011/01/25/343497.html#Feedback0http://www.tkk7.com/tunaic/comments/commentRss/343497.htmlhttp://www.tkk7.com/tunaic/services/trackbacks/343497.html   1、=====================================================
<script type="text/javascript">
window.onbeforeunload = function()
       {   
              var n = window.event.screenX - window.screenLeft;   
              var b = n > document.documentElement.scrollWidth-20;   
              if(b && window.event.clientY < 0 || window.event.altKey)   
              {   
                     openwin();
                     alert('查看彈出');  
                     window.event.returnValue = ""; //這里可以放置你想做的操作代碼   
              }   
       }
      
function openwin(){
alert();
//寫下事件
}   
</script> 
2、==========================================================
<script type="text/javascript">  
<!--    
    window.onbeforeunload = onbeforeunload_handler;  
    window.onunload = onunload_handler;  
    function onbeforeunload_handler(){  
        var warning="確認退出?";          
        return warning;  
    }  
      
    function onunload_handler(){  
        var warning="謝謝光臨";  
        alert(warning);  
    }  
// -->  
</script>

三羽 2011-01-25 14:21 發表評論
]]>
電腦桌面生成IE7圖標 REG注冊表http://www.tkk7.com/tunaic/archive/2010/05/23/321654.html三羽三羽Sun, 23 May 2010 05:10:00 GMThttp://www.tkk7.com/tunaic/archive/2010/05/23/321654.htmlhttp://www.tkk7.com/tunaic/comments/321654.htmlhttp://www.tkk7.com/tunaic/archive/2010/05/23/321654.html#Feedback0http://www.tkk7.com/tunaic/comments/commentRss/321654.htmlhttp://www.tkk7.com/tunaic/services/trackbacks/321654.htmlWindows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}]
@="Internet Explorer"
"InfoTip"="@C:\\WINDOWS\\system32\\zh-CN\\ieframe.dll.mui,-881"
"LocalizedString"="@C:\\WINDOWS\\system32\\zh-CN\\ieframe.dll.mui,-880"
[HKEY_CLASSES_ROOT\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}\DefaultIcon]
@="C:\\Program Files\\Internet Explorer\\iexplore.exe,-32528"
[HKEY_CLASSES_ROOT\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}\Shell]
@=""
[HKEY_CLASSES_ROOT\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}\Shell\D]
@="刪除(D)"
[HKEY_CLASSES_ROOT\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}\Shell\D\Command]
@="Rundll32.exe"
[HKEY_CLASSES_ROOT\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}\Shell\NoAddOns]
@="在沒有加載項的情況下啟動"
[HKEY_CLASSES_ROOT\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}\Shell\NoAddOns\Command]
@="C:\\Program Files\\Internet Explorer\\iexplore.exe about:NoAdd-ons"
[HKEY_CLASSES_ROOT\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}\Shell\Open]
@="打開主頁(H)"
[HKEY_CLASSES_ROOT\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}\Shell\Open\Command]
@="C:\\Program Files\\Internet Explorer\\iexplore.exe"
[HKEY_CLASSES_ROOT\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}\Shell\屬性(R)]
@=""
[HKEY_CLASSES_ROOT\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}\Shell\屬性(R)\Command]
@="Rundll32.exe Shell32.dll,Control_RunDLL Inetcpl.cpl"
[HKEY_CLASSES_ROOT\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}\ShellFolder]
@=""
"Attributes"=dword:00000010
"HideFolderVerbs"=""
"WantsParseDisplayName"=""
"HideOnDesktopPerUser"=""
@="C:\\WINDOWS\\system32\\ieframe.dll,-190"
"HideAsDeletePerUser"=""
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}]
@="Internet Explorer"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}]
@="Windows Media"

-------------------------------------------------分割線(這行不用復制)-------------------------------------------------

保存后將文件后綴改為.reg,然后雙擊運行,添加到注冊表即可。

 

 

如需卸載(清除)則創建文本文件,寫入以下內容:

-------------------------------------------------分割線(這行不用復制)-------------------------------------------------

Windows Registry Editor Version 5.00

[-HKEY_CLASSES_ROOT\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}]
[-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}]

-------------------------------------------------分割線(這行不用復制)-------------------------------------------------

保存后將文件后綴改為.reg,然后雙擊運行,即可卸載(清除)。



三羽 2010-05-23 13:10 發表評論
]]>
CMD命令:netstat -ano 顯示端口占用情況http://www.tkk7.com/tunaic/archive/2010/04/12/318051.html三羽三羽Mon, 12 Apr 2010 05:33:00 GMThttp://www.tkk7.com/tunaic/archive/2010/04/12/318051.htmlhttp://www.tkk7.com/tunaic/comments/318051.htmlhttp://www.tkk7.com/tunaic/archive/2010/04/12/318051.html#Feedback0http://www.tkk7.com/tunaic/comments/commentRss/318051.htmlhttp://www.tkk7.com/tunaic/services/trackbacks/318051.html CD/D           切換盤符

三羽 2010-04-12 13:33 發表評論
]]>
部署程序svn及eclipsehttp://www.tkk7.com/tunaic/archive/2010/01/21/310397.html三羽三羽Thu, 21 Jan 2010 07:26:00 GMThttp://www.tkk7.com/tunaic/archive/2010/01/21/310397.htmlhttp://www.tkk7.com/tunaic/comments/310397.htmlhttp://www.tkk7.com/tunaic/archive/2010/01/21/310397.html#Feedback1http://www.tkk7.com/tunaic/comments/commentRss/310397.htmlhttp://www.tkk7.com/tunaic/services/trackbacks/310397.html一、去掉SVN文件夾
1、建立一個文本文件,取名為kill-svn-folders.reg,內容如下:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN]
@="Delete .SVN Folders"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN\command]
@="cmd.exe /c \"TITLE Removing SVN Folders in %1 && COLOR 9A && FOR /r \"%1\" %%f IN (.svn) DO RD /s /q \"%%f\" \""

保存之后,雙擊這個reg文件。成功后,在每一個文件夾上點擊右鍵都會有一個“Delete .SVN Folders”的選項,點擊之后,既可以刪除這個文件下下面所有的.svn文件了.

2. 使用svn自帶的export功能。export導出的是一份不帶.svn的純凈的代碼。

二、svn導出不同版本文件
TortoiseSVN  →  Repo-browser →  根目錄上右鍵Show log →  按Ctrl間選兩個日志版本對比右鍵Compare revisions →  選要導出的文件右鍵 Export selection to...

三、eclipse導出war包
eclipse打包是需要TOMCAT插件支持的.
1.在項目上點右鍵->properties,
2 在'Tomcat'下'export to war settings選項卡,'
3.輸入要導出的war文件路徑和文件名,確定,返回項目
4.在項目上點右鍵->tomcat project->Export to the war file sets in project properties生成WAR包



三羽 2010-01-21 15:26 發表評論
]]>
Nginx+tomcat 做負載均衡http://www.tkk7.com/tunaic/archive/2009/11/30/304212.html三羽三羽Mon, 30 Nov 2009 01:23:00 GMThttp://www.tkk7.com/tunaic/archive/2009/11/30/304212.htmlhttp://www.tkk7.com/tunaic/comments/304212.htmlhttp://www.tkk7.com/tunaic/archive/2009/11/30/304212.html#Feedback0http://www.tkk7.com/tunaic/comments/commentRss/304212.htmlhttp://www.tkk7.com/tunaic/services/trackbacks/304212.html一、

1、將tomcat 的server.xml文件中所有端口號都改為不同。
2、Nginx 的nginx.conf文件中
    http {}增加如下內容

     upstream sp.imichat.com{
       server 127.0.0.1:8080 weight=2;
       server 127.0.0.1:8088 weight=2;
       ip_hash;
     }

server {} 修改信息:


listen 80;
server_name sp.imichat.com;

#charset koi8-r;

#access_log logs/host_access_log main;

        location /{
          proxy_redirect          off;
          proxy_set_header        Host $host;
          proxy_set_header        X-Real-IP $remote_addr;
          proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_pass http://sp.imichat.com;
        }

例:
#user  nobody;
worker_processes  1;

events {
    worker_connections  51024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;

     upstream localhost {
       server 127.0.0.1:8080 weight=2;
       server 127.0.0.1:8088 weight=2;
       ip_hash;
     }

    sendfile        on;

    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;

        location /{
                        proxy_redirect          off;
                        proxy_set_header        Host $host;
                        proxy_set_header        X-Real-IP $remote_addr;
                        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_pass http://localhost;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }}


二、

參數描述

檢測nginx配置文件是否正確
/usr/local/nginx/sbin/nginx -t -c nginx.conf
-c 配置文件路徑

-g Set global directives. (version >=0.7.4)

-t 檢測文件是否正確不執行

-v Print version.

-V Print nginx version, compiler version and configure parameters.

編譯時如果使用了–with-debug編譯,還可以使用error_log file [ debug_core| debug_http | debug_event …] 來獲得debug信息

通過信號對 Nginx 進行控制

Nginx 支持下表中的信號:

信號名 作用描述
TERM, INT 快速關閉程序,中止當前正在處理的請求
QUIT 處理完當前請求后,關閉程序
HUP 重新加載配置,并開啟新的工作進程,關閉就的進程,此操作不會中斷請求
USR1 重新打開日志文件,用于切換日志,例如每天生成一個新的日志文件
USR2 平滑升級可執行程序
WINCH 從容關閉工作進程

有兩種方式來通過這些信號去控制 Nginx,第一是通過 logs 目錄下的 nginx.pid 查看當前運行的 Nginx 的進程 ID,通過 kill – XXX <pid> 來控制 Nginx,其中 XXX 就是上表中列出的信號名。如果您的系統中只有一個 Nginx 進程,那您也可以通過 killall 命令來完成,例如運行 killall – s HUP nginx 來讓 Nginx 重新加載配置。

配置:

use [ kqueue | rtsig | epoll | /dev/poll | select | poll ];FreeBSD使用kqueue,Linux選epoll.
worker_connections number    每個worker的最大連接數
Maxclient = work_processes * worker_connections

nginx的upstream目前支持4種方式的分配

1、輪詢(默認)

每個請求按時間順序逐一分配到不同的后端服務器,如果后端服務器down掉,能自動剔除。

2、weight

指定輪詢幾率,weight和訪問比率成正比,用于后端服務器性能不均的情況。

2、ip_hash

每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個后端服務器,可以解決session的問題。

3、fair(第三方)

按后端服務器的響應時間來分配請求,響應時間短的優先分配。

4、url_hash(第三方)

按訪問url的hash結果來分配請求,使每個url定向到同一個后端服務器,后端服務器為緩存時比較有效。

代理
只需要在nginx的配置文件中增加虛擬主機,然后加入
\proxy_pass http://localhost:8000;

負載均衡:
只需要在http中增加
upstream tgcluster {#定義負載均衡設備的Ip及設備狀態
ip_hash;
server 127.0.0.1:9090 down;
server 127.0.0.1:8080 weight=2;
server 127.0.0.1:6060;
server 127.0.0.1:7070 backup;
}
在需要使用負載均衡的server中增加
proxy_pass http://tgcluster/;

每個設備的狀態設置為:
1.down 表示單前的server暫時不參與負載
2.weight 默認為1.weight越大,負載的權重就越大。
3.max_fails :允許請求失敗的次數默認為1.當超過最大次數時,返回proxy_next_upstream 模塊定義的錯誤
4.fail_timeout:max_fails次失敗后,暫停的時間。
5.backup: 其它所有的非backup機器down或者忙的時候,請求backup機器。所以這臺機器壓力會最輕。

nginx支持同時設置多組的負載均衡,用來給不用的server來使用。

client_body_in_file_only 設置為On 可以講client post過來的數據記錄到文件中用來做debug
client_body_temp_path 設置記錄文件的目錄 可以設置最多3層目錄

location 對URL進行匹配.可以進行重定向或者進行新的代理 負載均衡

FASTCGI配置:

請將以下內容保存為fastcgi_params文件,保存于/usr/local/nginx/conf下(Ubuntu可保存于/etc/nginx下),他為我們的FastCGI模塊設置了基本的環境變量:

#fastcgi_params
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE    nginx;
fastcgi_param QUERY_STRING       $query_string;
fastcgi_param REQUEST_METHOD     $request_method;
fastcgi_param CONTENT_TYPE       $content_type;
fastcgi_param CONTENT_LENGTH     $content_length;
fastcgi_param SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param REQUEST_URI        $request_uri;
fastcgi_param DOCUMENT_URI       $document_uri;
fastcgi_param DOCUMENT_ROOT      $document_root;
fastcgi_param SERVER_PROTOCOL    $server_protocol;
fastcgi_param REMOTE_ADDR        $remote_addr;
fastcgi_param REMOTE_PORT        $remote_port;
fastcgi_param SERVER_ADDR        $server_addr;
fastcgi_param SERVER_PORT        $server_port;
fastcgi_param SERVER_NAME        $server_name;
# PHP only, required if PHP was built with –enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS    200;請特別注意加粗的一行,PHP-CGI特別需要此行信息來確定PHP文件的位置。

另外需要在PHP-CGI的配置文件(Ubuntu 上此配置文件位于/etc/php5/cgi/php.ini)中,打開cgi.fix_pathinfo選項:

cgi.fix_pathinfo=1;這樣php-cgi方能正常使用SCRIPT_FILENAME這個變量。

接下來在nginx的配置中針對php文件配置其利用FastCGI進程來執行:

server {
index index.php;
root /usr/local/nginx/html;

    location ~ .*.php$ {
include /usr/local/nginx/conf/fastcgi_params; #請根據自己保存的路徑進行設置
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000; #請根據自己的FastCGI綁定的地址和端口進行配置
}
}通知Nginx重新載入配置:

kill -HUP `cat /usr/local/nginx/logs/nginx.pid`Ubuntu用戶可以使用init腳本:sudo /etc/init.d/nginx reload

然后啟動php-cgi -b 127.0.0.1:9000

如果出現No input file specified表示SCRIPT_FILENAME設置的有問題。
使用lighttpd的 spawn-fcgi

get http://www.lighttpd.net/download/lighttpd-1.4.18.tar.bz2 #獲取Lighttpd的源碼包
tar -xvjf lighttpd-1.4.18.tar.bz2
cd lighttpd-1.4.18
./configure #編譯
make
cp src/spawn-fcgi /usr/local/bin/spawn-fcgi #取出spawn-fcgi的程序下面我們就可以使用 spawn-fcgi 來控制php-cgi的FastCGI進程了

/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參數含義如下

-f <fcgiapp> 指定調用FastCGI的進程的執行程序位置,根據系統上所裝的PHP的情況具體設置
-a <addr> 綁定到地址addr
-p <port> 綁定到端口port
-s <path> 綁定到unix socket的路徑path
-C <childs> 指定產生的FastCGI的進程數,默認為5(僅用于PHP)
-P <path> 指定產生的進程的PID文件路徑
-u和-g FastCGI使用什么身份(-u 用戶 -g 用戶組)運行,Ubuntu下可以使用www-data,其他的根據情況配置,如nobody、apache等

#運行用戶
user   nobody nobody;
#啟動進程
worker_processes   2;
#全局錯誤日志及PID文件
error_log   logs/error.log notice;
pid        logs/nginx.pid;
#工作模式及連接數上限
events {
use epoll;
worker_connections    1024;
}
#設定http服務器,利用它的反向代理功能提供負載均衡支持
http {
#設定mime類型
include    conf/mime.types;
default_type   application/octet-stream;
#設定日志格式
log_format main        '$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$gzip_ratio"';
log_format download '$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$http_range" "$sent_http_content_range"';
#設定請求緩沖
client_header_buffer_size 1k;
large_client_header_buffers   4 4k;
#開啟gzip模塊
gzip on;
gzip_min_length   1100;
gzip_buffers 4 8k;
gzip_types    text/plain;
output_buffers   1 32k;
postpone_output   1460;
#設定access log
access_log   logs/access.log   main;
client_header_timeout   3m;
client_body_timeout 3m;
send_timeout       3m;
sendfile             on;
tcp_nopush              on;
tcp_nodelay          on;
keepalive_timeout   65;
#設定負載均衡的服務器列表
upstream mysvr {
#weigth參數表示權值,權值越高被分配到的幾率越大
#本機上的Squid開啟3128端口
server 192.168.8.1:3128 weight=5;
server 192.168.8.2:80   weight=1;
server 192.168.8.3:80   weight=6;
}
#設定虛擬主機
server {
listen       80;
server_name 192.168.8.1 www.yejr.com;
charset gb2312;
#設定本虛擬主機的訪問日志
access_log   logs/www.yejr.com.access.log   main;
#如果訪問 /img/*, /js/*, /css/* 資源,則直接取本地文件,不通過squid
#如果這些文件較多,不推薦這種方式,因為通過squid的緩存效果更好
location ~ ^/(img|js|css)/   {
root /data3/Html;
expires 24h;
}


三羽 2009-11-30 09:23 發表評論
]]>
Apache和Subversion集成安裝與配置http://www.tkk7.com/tunaic/archive/2009/11/24/303498.html三羽三羽Tue, 24 Nov 2009 09:28:00 GMThttp://www.tkk7.com/tunaic/archive/2009/11/24/303498.htmlhttp://www.tkk7.com/tunaic/comments/303498.htmlhttp://www.tkk7.com/tunaic/archive/2009/11/24/303498.html#Feedback0http://www.tkk7.com/tunaic/comments/commentRss/303498.htmlhttp://www.tkk7.com/tunaic/services/trackbacks/303498.html 1,apache_2.0.63-win32-x86-no_ssl.msi
下載:http://apache.mirror.phpchina.com/httpd/binaries/win32/apache_2.0.63-win32-x86-no_ssl.msi
2,svn-1.4.5-setup.exe
下載地址:http://subversion.tigris.org/files/documents/15/39559/svn-1.4.5-setup.exe
當然,你也可以選擇安裝TortoiseSVN.但是我沒有裝,因為我的源碼管理都是用netbeans完成的.

好了,準備的兩個軟件都下載下來以后,就可以開始安裝了.
首先安裝apache,一般來說直接點下一步就可以了,在設置domain以及host的時候,設置為localhost就可以了,Email你可以填你自己的Email,也可以隨便填一個.安裝apache要注意的是,你的電腦上80端口不能被占用,否則你的http服務是啟動不起來的,我就遇到過這事,因為我用了skype,它在本機上打開了80和443端口來監聽,搞得我一開始裝不好,總是啟動不起來,后來才發現是skype占用了80端口,于是把skype的設置改了以后,重裝apache才成功.裝好apache以后,這個時候,它已經在運行了,你可以在瀏覽器的地址欄輸入http://localhost看看,是否安裝成功,如果安裝成功的話,這個時候瀏覽器里面應該是可以看到一個頁面的.
然后,再安裝svn-1.4.5-setup.exe,也很簡單,一步一步點下步就可以了,在安裝的過程中,它會默認選中一些選項,其中就有一個是是否對apache的HTTP服務器提供支持的選項,這個默認是勾上的,不要去反選它,其它的你可以反選掉.然后svn就宣布安裝成功了.你可以到CMD下面去試一下svn這個命令,如果有輸出,則說明安裝成功了,如果提示svn 不是內部或外部命令,也不是可運行的程序或批處理文件。那就說明沒有裝好.或者沒有把這個命令加入到path中,所以最好的辦法是到svn的安裝目錄下的bin里面去看一下.
兩者都裝好了以后,就開始配置,當然,配置也是最重要的.
首先要建立一個數據倉庫,我們假設建在E盤,數據倉庫最好不要建在C盤,因為C盤重裝系統以后就格了.我們先在E盤下面建立一個目錄叫svnroot,然后在svnroot下面再建立一個我們專門放我們工程的目錄,比如叫MyProject.于是我們在E盤下面就有了這個一個文件夾:E:\svnroot\MyProject,然后我們用svnadmin的命令,使這個文件夾變成我們的數據倉庫,命令如下:
svnadmin create E:\svnroot\MyProject
如果運行成功的話,什么也沒有輸出,這個時候,我們再來到MyProject文件夾下面,我們會發現多了幾個文件夾和文件,我們打開conf文件夾,然后再打開svnserve.conf文件,找到如下行# password-db = passwd,然后把它前面的#去掉,表示MyProject是需要密碼驗證的.但是我們密碼設在哪里呢,這個時候我們再打開conf文件夾下面的passwd文件,用文本編輯器打開,在[users]下面加上我們需要啟動的人員的用戶和密碼,比如
[users]
hadeslee=hadeslee1234
tom=123456

這個的話,我們就啟動了兩個用戶,一個叫hadeslee,密碼是hadeslee1234,一個叫tom,密碼是123456.然后我們保存passwd文件.然后,我們再建一個文件,叫access.auth,這個文件是設置訪問權限的,里面內容如下:
[MyProject:/]
hadeslee = rw
[MyProject:/module1]
tom=rw
hadeslee=rw

這表示,MyProject下面的所有子目錄hadeslee都是有權限讀寫的,但是tom只有權限讀寫此項目下面的module1目錄,這個各自的訪問權限就分的更細致了.有關于MyProject文件夾下面的設置,我們就告一段落了,我們現在開始設置apache,使它能和subvertion一起工作.

首先來到Subersion的安裝目錄,進入它的bin目錄,我們會發現如下兩個文件:
mod_authz_svn.so
mod_dav_svn.so

我們把這兩個文件復制一下,粘帖到apache的安裝目錄下的modules文件中,然后我們再打開apache安裝目錄下的conf文件夾,打開httpd.conf文件.增加如下兩行:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

注意,由于dav_svn需要dav_module的支持,所以要確保下面這一行沒有被注釋,并且保證在dav_svn之前加載:
LoadModule dav_module modules/mod_dav.so
然后模塊的設置就完成了,下面我們要設置SVN的目錄,以使我們的apache能知道訪問不同的URL的時候,它去哪里尋找這個URL所對應的SVN目錄.
httpd.conf文件中,增加如下內容:
<Location /svn/MyProject>
DAV svn
SVNPath E:/svnroot/MyProject

AuthzSVNAccessFile E:/svnroot/MyProject/conf/access.auth
Satisfy Any
Require valid-user

AuthType Basic
AuthName "Subversion repositories"
AuthUserFile  E:/svnroot/MyProject/conf/users.auth
Require valid-user
</Location>


添加完上面這些,我們會發現access.auth是我們剛才新建的,可是users.auth我們并沒有新建啊.怎么就把它加進去了.不要急,現在我們就來生成users.auth文件.

進入apache的安裝目錄的bin文件夾,輸入如下命令:

D:\Program Files\Apache Group\Apache2\bin>htpasswd -cb users.auth hadeslee hadeslee1234
Automatically using MD5 format.
Adding password for user hadeslee

D:\Program Files\Apache Group\Apache2\bin>

我們就會發現在bin目錄生成了users.auth,我們可以看到,hadeslee用戶名已經被添加進去了,密碼是用MD5加密過的.然后我們還要增加用戶呢,可以用如下方法:
D:\Program Files\Apache Group\Apache2\bin>htpasswd -b users.auth tom 123456
Automatically using MD5 format.
Adding password for user tom

D:\Program Files\Apache Group\Apache2\bin>


只是在生成密碼的時候,小了一個c的參數,因為c表示重新生成一個這樣的文件,我們第一次的時候是要加的,后面我們要添加用戶的時候,就不用這個c了.然后打開users.auth,會發現兩個用戶都已經在里面了,這個時候,我們把users.auth移到E:/svnroot/MyProject/conf/里面去,使我們上面的設置生效.

這個時候,我們的設置就完成了.可以在瀏覽器里面輸入http://localhost/svn/MyProject試試看.

如果以后我們還要加入其它的項目呢,可以有兩點解決方式
1,把以后的項目也導入到我們的MyProject的倉庫中,這個的話,就不用改什么配置了
2,新建一個數據倉庫,然后只要按上面的步驟,把新的<Location...>設置放到httpd.conf里面就可以了.
當然,驗證文件,訪問權限文件,還有訪問SVN的密碼都要自己按上面的方法再設一遍.


三羽 2009-11-24 17:28 發表評論
]]>
最新版整合Apache2.2.9和Tomcat6.0.18http://www.tkk7.com/tunaic/archive/2009/10/22/299296.html三羽三羽Thu, 22 Oct 2009 02:11:00 GMThttp://www.tkk7.com/tunaic/archive/2009/10/22/299296.htmlhttp://www.tkk7.com/tunaic/comments/299296.htmlhttp://www.tkk7.com/tunaic/archive/2009/10/22/299296.html#Feedback0http://www.tkk7.com/tunaic/comments/commentRss/299296.htmlhttp://www.tkk7.com/tunaic/services/trackbacks/299296.htmlAPACHE 2.2.9+TOMCAT6.0.18配置負載均衡

目標:

使用 apache 和 tomcat 配置一個可以應用的 web 網站,要達到以下要求:

1、  Apache 做為 HttpServer ,后面連接多個 tomcat 應用實例,并進行負載均衡。

2、  為系統設定 Session 超時時間,包括 Apache 和 tomcat

3、  為系統屏蔽文件列表,包括 Apache 和 tomcat

注:本例程以一臺機器為例子,即同一臺機器上裝一個apache和4個Tomcat。

一、前期準備工作:安裝用的程序(前提保證已安裝了JDK1.5以上的版本)

APAHCE 2.2.9下載:apache_2.2.9-win32-x86-no_ssl.msi

TOMCAT6.0.18下載:apache-tomcat-6.0.18.zip直接解壓。

二、安裝過程

APAHCE安裝目錄:D:\Apache。

四個TOMCAT目錄:自行解壓到(D:\Tomcat集群服務器\)下。分別為 tomcat6.0,tomcat6.01,tomcat6.02,tomcat6.03

這幾個安裝過程就不詳細說明了。

三、配置

1、Apache配置

1.1、httpd.conf配置

修改APACHE的配置文件D:\Apache \conf\httpd.conf

將以下Module的注釋去掉,這里并沒有使用mod_jk.so進行apache和tomcat的鏈接,從2.X以后apache自身已集成了mod_jk.so的功能。只需簡單的把下面幾行去掉注釋,就相當于以前用mod_jk.so比較繁瑣的配置了。這里主要采用了代理的方法,就這么簡單。

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_connect_module modules/mod_proxy_connect.so

LoadModule proxy_ftp_module modules/mod_proxy_ftp.so

LoadModule proxy_http_module modules/mod_proxy_http.so

LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

再找到<IfModule dir_module></IfModule>加上index.jsp修改成

<IfModule dir_module>

DirectoryIndex index.html index.jsp

</IfModule>

1.1.1、  在最下面加入

ProxyRequests Off

<proxy balancer://cluster>

BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=jvm1

BalancerMember ajp:// 127.0.0.1:9009 loadfactor=1 route=jvm2

BalancerMember ajp:// 127.0.0.1:9001 loadfactor=1 route=jvm3

BalancerMember ajp:// 127.0.0.1:9003 loadfactor=1 route=jvm4

</proxy>

上面的四個BalancerMember成員是我們配置的tomcat集群。后面會說明的。

1.2、httpd-vhosts.conf設置

接下來進行虛擬主機的設置。APACHE的虛擬主機設置如下:

首先要修改 conf/httpd.conf找到(#Include conf/extra/httpd-vhosts.conf)

把注釋去掉。

# Virtual hosts

Include conf/extra/httpd-vhosts.conf

在文件(extra/httpd-vhosts.conf)最下面加入

<VirtualHost *:80>

         ServerAdmin rosi@126.com

         ServerName localhost

         ServerAlias localhost

         ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On

         ProxyPassReverse / balancer://cluster/

</VirtualHost>

其中的域名和路徑根據你自己情況設置

然后再設置TOMCAT虛擬主機

2 配置 tomcat

2.1.  配置 server 的關閉

我們需要在一臺機器上跑 4 個不同的 tomcat ,需要修改不同的 tomcat 的關閉口,避免出現端口被占用的情況。其中tomcat6.0用默認值,不修改。其他三個修改。在tomcat6.01\conf, tomcat6.02\conf下和tomcat6.03\conf下的 server.xml 中找到 server, 將:

<Server port="8005" shutdown="SHUTDOWN">

改為

<Server port="XXXX" shutdown="SHUTDOWN">

XXXX 在這里表示不同的端口:我的其它三個 tomcat 分別使用 9005,8006 , 9007  

2.2. 配置 Engine

把原來的配置注釋掉,把下面一句去掉注釋。并標明jvmRoute="jvm2".

<Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm2">        

以下是原來的配置。

<!-- <Engine name="Catalina" defaultHost="localhost">  -->

其他(tomcat6.02和tomcat6.03)也要同樣 配置。注意:jvmRoute配置不要一樣。

<Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm3"> 

<Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm4"> 

2.3. 配置 Connector

原來的默認配置。

<!-- Define an AJP 1.3 Connector on port 8009 -->

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

這里是apache和tomcat鏈接的關鍵,前臺apache就是通過AJP協議與tomcat進行通信的,以完成負載均衡的作用。也可以用HTTP協議。大家注意它們是如何連接通信的,上面的紅色部分(port="8009")就是連接的接口了。

把其他三個tomcat的<Connector port="XXX" />port分別改成與上面

<proxy balancer://cluster>

     #與tomcat6.0對應,route與<Engine jvmRoute="jvm1">對應。

BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=jvm1

#與tomcat6.01對應,route與<Engine jvmRoute="jvm2">對應。

BalancerMember ajp:// 127.0.0.1:9009 loadfactor=1 route=jvm2

#與tomcat6.02對應,route與<Engine jvmRoute="jvm3">對應。

BalancerMember ajp:// 127.0.0.1:9001 loadfactor=1 route=jvm3

#與tomcat6.03對應,route與<Engine jvmRoute="jvm4">對應。

BalancerMember ajp:// 127.0.0.1:9003 loadfactor=1 route=jvm4

</proxy>

中的端口對應,tomcat6.01 的ajp端口port:9009. tomcat6.02 的ajp端口port:9001。tomcat6.03 的ajp端口port:9003.一定要與上面的一致。同時也要把redirectPort的值改成唯一的,確保四個tomcat的都不一樣。

2.5.配置Cluster(每個tomcat中都要修改)

原來的配置。

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

修改為以下的代碼:<Receiver port=”XX”/>port也要保證唯一性。

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"  channelSendOptions="6">

<Manager className="org.apache.catalina.ha.session.BackupManager"

expireSessionsOnShutdown="false"

notifyListenersOnReplication="true"

mapSendOptions="6"/>

<!--

<Manager className="org.apache.catalina.ha.session.DeltaManager"

expireSessionsOnShutdown="false"

notifyListenersOnReplication="true"/>

-->

<Channel className="org.apache.catalina.tribes.group.GroupChannel">

<Membership className="org.apache.catalina.tribes.membership.McastService"

address="228.0.0.4"

port="45564"

frequency="500"

dropTime="3000"/>

<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"

address="auto"

port="5001"

selectorTimeout="100"

maxThreads="6"/>

<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">

<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>

</Sender>

<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>

<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>

<Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>

</Channel>

<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"

filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>

<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"

tempDir="/tmp/war-temp/"

deployDir="/tmp/war-deploy/"

watchDir="/tmp/war-listen/"

watchEnabled="false"/>

<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>

</Cluster>

這個設置是主要用以tomcat的集群。

四、啟動服務,測試tomcat自帶的例子

1、測試apache和tomcat協作。

先在每個tomcat中的\webapps\ROOT下的index.jsp下面加上以下的測試代碼部分:(X代表不同的tomcat的輸出不同的信息),把index.html刪除,以免影響測試效果。在最后面的加上.即</table></body>之間。

<%

      System.out.println("tomcat6.0X  deal  with  request");

%>

然后再通過http:// 127.0.0.1來訪問一下,就會出現大家熟悉的貓貓。

然后再通過分別訪問

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是一樣的。

這樣就說明apache和TOMCAT整合成功!

2、測試均衡器

通過http:// 127.0.0.1多次訪問,要想看到真正的效果,必須用一些壓力測試工具,可用微軟Microsoft Web Application Stress Tool進行簡單壓力測試,不然你靠不停刷新是體現不出來的,你只會在一個tomcat的控制臺有輸出結果。只用用壓力測試工具模擬大量用戶同時訪問,你會發現四個tomcat控制臺均有打出控制信息,說明均衡器工作正常。

3、測試Session復制

訪問url: http://localhost/examples/servlet/SessionExample 可以得到一個關于session的例子,我們用它來測試集群的錯誤恢復能力。

測試步驟如下:

關閉tomcat1和tomcat2;

啟動tomcat1

在瀏覽器中輸入屬性名tomcat1和屬性值tomcat1再提交,返回的頁面顯示session中有剛剛輸入的tomcat1屬性;

啟動tomcat2;

過一會后(等待tomcat2和tomcat1通信并復制信息)關閉tomcat1;

在瀏覽器中輸入屬性名tomcat2和屬性值tomcat2再提交,返回的頁面顯示session中有剛剛輸入的tomcat2屬性,還有先前輸入的tomcat1屬性;

啟動tomcat1;

過一會后(等待tomcat2和tomcat1通信并復制信息)關閉tomcat2;

在瀏覽器中輸入屬性名tomcat11和屬性值tomcat11再提交,返回的頁面顯示session中有剛剛輸入的tomcat11屬性,還有先前輸入的tomcat1和tomcat2屬性;



三羽 2009-10-22 10:11 發表評論
]]>
JAVA面試精選26題http://www.tkk7.com/tunaic/archive/2009/10/14/298161.html三羽三羽Wed, 14 Oct 2009 02:44:00 GMThttp://www.tkk7.com/tunaic/archive/2009/10/14/298161.htmlhttp://www.tkk7.com/tunaic/comments/298161.htmlhttp://www.tkk7.com/tunaic/archive/2009/10/14/298161.html#Feedback0http://www.tkk7.com/tunaic/comments/commentRss/298161.htmlhttp://www.tkk7.com/tunaic/services/trackbacks/298161.html閱讀全文

三羽 2009-10-14 10:44 發表評論
]]>
WebSphere集群部署http://www.tkk7.com/tunaic/archive/2009/08/27/292810.html三羽三羽Thu, 27 Aug 2009 06:25:00 GMThttp://www.tkk7.com/tunaic/archive/2009/08/27/292810.htmlhttp://www.tkk7.com/tunaic/comments/292810.htmlhttp://www.tkk7.com/tunaic/archive/2009/08/27/292810.html#Feedback0http://www.tkk7.com/tunaic/comments/commentRss/292810.htmlhttp://www.tkk7.com/tunaic/services/trackbacks/292810.html 2、http://www.diybl.com/course/3_program/java/javaxl/20071022/79392.html

三羽 2009-08-27 14:25 發表評論
]]>
工程打war包方法http://www.tkk7.com/tunaic/archive/2009/08/27/292808.html三羽三羽Thu, 27 Aug 2009 05:58:00 GMThttp://www.tkk7.com/tunaic/archive/2009/08/27/292808.htmlhttp://www.tkk7.com/tunaic/comments/292808.htmlhttp://www.tkk7.com/tunaic/archive/2009/08/27/292808.html#Feedback0http://www.tkk7.com/tunaic/comments/commentRss/292808.htmlhttp://www.tkk7.com/tunaic/services/trackbacks/292808.html(1)在命令行中運用Jar命令

假定有一個Web應用:C:\myHome

myHome/WEB-INF/……
myHome/image/……
myHome/src/……
myHome/index.jsp

在命令行窗口下執行如下命令:

C:\>cd/d  c:\myHome

C:\myHome\>jar      cvf      myhome.war      */     .

解釋:jar      cvf      [A->war包名].war   [B->資源文件及文件夾]      [C->將要生成war包的目標文件夾]

“*/”(B->)代表當前目錄(C:\myHome)下的所有文件及文件夾。

“.”    (C->)表明將要在當前目錄中生成war包。

操作完成后,找到C:\myHome下新生成的myhome.war,將其拷入TOMCAT_HOME/webapps/下。然后啟動Tomcat即可。

(2)利用IDE工具打包,如Eclipse

右鍵點擊你想打包的文件或者項目,選擇“導出...”,在彈出的對話框中選擇“WAR文件” ,上面有許多選項,還可以選“EAR”,“JAR”.



三羽 2009-08-27 13:58 發表評論
]]>
用JAVA調用.net的webservice實例http://www.tkk7.com/tunaic/archive/2009/05/18/271318.html三羽三羽Mon, 18 May 2009 05:57:00 GMThttp://www.tkk7.com/tunaic/archive/2009/05/18/271318.htmlhttp://www.tkk7.com/tunaic/comments/271318.htmlhttp://www.tkk7.com/tunaic/archive/2009/05/18/271318.html#Feedback0http://www.tkk7.com/tunaic/comments/commentRss/271318.htmlhttp://www.tkk7.com/tunaic/services/trackbacks/271318.html 請求:
以下內容為程序代碼:

POST /webservice/Weather.asmx http/1.1
Host: www.wopos.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://tempuri.org/getWeather"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <getWeather xmlns="http://tempuri.org/">
      <mCity>string</mCity>
    </getWeather>
  </soap:Body>
</soap:Envelope>

把XML部分全部復制下來創建一個XML文件(普通的文本文件也可以),為了以后編程方面,把
以下內容為程序代碼:

                       ...
      <mCity>string</mCity> 
                       ...

改成
以下內容為程序代碼:

                      ...
      <mCity>${city}$</mCity> 
                       ...

以weathersoap.xml保存在以后生成的類的同一目錄。

響應:
以下內容為程序代碼:

http/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="h ttp://www.w3.org/2001/XMLSchema" xmlns:soap="h ttp://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <getWeatherResponse xmlns="h ttp://tempuri.org/">
      <getWeatherResult>string</getWeatherResult>
    </getWeatherResponse>
  </soap:Body>
</soap:Envelope>

在后面對XML的解釋要用到響應部分的XML描述


        接下就開始寫代碼了。
以下內容為程序代碼:

package jaqcy.weatherreport.client;

import java.io.*;
import java.net.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
/**
 *
 * @author jaqcy
 */
public class WeatherReport 
{    
    private static String getSoapRequest(String city)//city為要查詢天氣的城市名
    {
        try 
        {
            Class cls=Object.class;
            InputStreamReader isr=new InputStreamReader(cls.getResourceAsStream("/jaqcy/weatherreport/client/weathersoap.xml"));//讀取存在weathersoap的SOAP信息
            BufferedReader reader=new BufferedReader(isr);
            String soap="";
            String tmp;
            while((tmp=reader.readLine())!=null)
            {
                soap+=tmp;
            }            
            reader.close();
            isr.close();
            return soap.replace("${city}$",city);//用傳入的參數city替換原來的${city}$
        } 
        catch (Exception ex) 
        {
            ex.printStackTrace();
            return null;
        }
    }
  /*
    *返回InputStream是因為w3c DOM中Document的parse方法可
    *以接受InputStream類型的參數,方面在下一步對XML的解釋
    */
    private static InputStream getSoapInputStream(String city)throws Exception
    {
        try
        {
            String soap=getSoapRequest(city);
            if(soap==null)
            {
                return null;
            }
            URL url=new URL("http://www.wopos.com/webservice/Weather.asmx");
            URLConnection conn=url.openConnection();
            conn.setUseCaches(false);
            conn.setDoInput(true);
            conn.setDoOutput(true);

            conn.setRequestProperty("Content-Length", Integer.toString(soap.length()));
            conn.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
            conn.setRequestProperty("SOAPAction","\"http://tempuri.org/getWeather\"");

            OutputStream os=conn.getOutputStream();
            OutputStreamWriter osw=new OutputStreamWriter(os,"utf-8");
            osw.write(soap);
            osw.flush();
            osw.close();

            InputStream is=conn.getInputStream();            
            return is;   
        }
        catch(Exception e)
        {
            e.printStackTrace();
            return null;
        }
    }
/*
  *用W3C DOM對返回的XML進行解釋
  *
  */
    public static String getWeather(String city)
    {
        try
        {
            Document doc;
            DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
            dbf.setNamespaceAware(true);
            DocumentBuilder db=dbf.newDocumentBuilder();
            InputStream is=getSoapInputStream(city);
            doc=db.parse(is);
            NodeList nl=doc.getElementsByTagName("getWeatherResult");
            Node n=nl.item(0);
            String weather=n.getFirstChild().getNodeValue();
            is.close();
            return weather;
        }
        catch(Exception e)
        {
            e.printStackTrace();
            return null;
        }
    }
}

寫個main方法檢驗一下結果
以下內容為程序代碼:


    public static void main(String[] args)throws Exception
    {
        System.out.println(WeatherReport.getWeather("珠海"));
    }

結果如下
以下內容為程序代碼:

城市==珠海,日期==4.02-4.03,圖1==http://weather.tq121.com.cn/images/a1.gif,圖2==http://weather.tq121.com.cn/images/00.gif,天氣==多云,溫度==28℃~22℃,風==微風,紫外線==弱


三羽 2009-05-18 13:57 發表評論
]]>
主站蜘蛛池模板: 成人免费黄色网址| 99久久免费精品高清特色大片| 成年在线网站免费观看无广告 | 亚洲国产V高清在线观看| 亚洲精品无码mⅴ在线观看| 69成人免费视频无码专区| 在线综合亚洲欧洲综合网站| 国产免费看JIZZ视频| 91在线亚洲综合在线| 成人奭片免费观看| 亚洲AV成人无码网天堂| 亚洲国产精品成人久久蜜臀| 国产精品福利在线观看免费不卡| 久久久久久a亚洲欧洲aⅴ| 91精品国产免费入口| 亚洲剧情在线观看| 香蕉视频在线观看免费国产婷婷| 国产亚洲美女精品久久久久| 亚洲欧洲中文日韩久久AV乱码| 91免费福利视频| 亚洲冬月枫中文字幕在线看| 卡一卡二卡三在线入口免费| 美女裸免费观看网站| 亚洲av伊人久久综合密臀性色| 99久久精品免费精品国产| 亚洲乱妇熟女爽到高潮的片| 亚洲成人影院在线观看| 免费看成人AA片无码视频吃奶| 亚洲网站在线免费观看| 免费观看的a级毛片的网站| selaoban在线视频免费精品| 亚洲天天做日日做天天看| 成人免费一区二区三区在线观看| 日韩大片在线永久免费观看网站 | 亚洲国产精品自在线一区二区| 免费看男女下面日出水来| 国产亚洲精品免费| 亚洲香蕉免费有线视频| 免费国产一级特黄久久| 69免费视频大片| 一日本道a高清免费播放|