91嫩草亚洲精品,亚洲视频人成在线播放,亚洲AV无码一区二区三区国产 http://www.tkk7.com/tunaic/category/34882.htmlIdeal is the beacon. Without ideal, there is no secure direction; without direction ,there is no life. <br> 理想是指路明燈。沒有理想,就沒有堅(jiān)定的方向;沒有方向,就沒有生活。<br> CTRL+T eclipsezh-cnFri, 02 Dec 2011 00:57:29 GMTFri, 02 Dec 2011 00:57:29 GMT60部署程序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、建立一個(gè)文本文件,取名為kill-svn-folders.reg,內(nèi)容如下:

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\" \""

保存之后,雙擊這個(gè)reg文件。成功后,在每一個(gè)文件夾上點(diǎn)擊右鍵都會(huì)有一個(gè)“Delete .SVN Folders”的選項(xiàng),點(diǎn)擊之后,既可以刪除這個(gè)文件下下面所有的.svn文件了.

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

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

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



三羽 2010-01-21 15:26 發(fā)表評(píng)論
]]>
最新版整合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配置負(fù)載均衡

目標(biāo):

使用 apache 和 tomcat 配置一個(gè)可以應(yīng)用的 web 網(wǎng)站,要達(dá)到以下要求:

1、  Apache 做為 HttpServer ,后面連接多個(gè) tomcat 應(yīng)用實(shí)例,并進(jìn)行負(fù)載均衡。

2、  為系統(tǒng)設(shè)定 Session 超時(shí)時(shí)間,包括 Apache 和 tomcat

3、  為系統(tǒng)屏蔽文件列表,包括 Apache 和 tomcat

注:本例程以一臺(tái)機(jī)器為例子,即同一臺(tái)機(jī)器上裝一個(gè)apache和4個(gè)Tomcat。

一、前期準(zhǔn)備工作:安裝用的程序(前提保證已安裝了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。

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

這幾個(gè)安裝過程就不詳細(xì)說明了。

三、配置

1、Apache配置

1.1、httpd.conf配置

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

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

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>

上面的四個(gè)BalancerMember成員是我們配置的tomcat集群。后面會(huì)說明的。

1.2、httpd-vhosts.conf設(shè)置

接下來進(jìn)行虛擬主機(jī)的設(shè)置。APACHE的虛擬主機(jī)設(shè)置如下:

首先要修改 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>

其中的域名和路徑根據(jù)你自己情況設(shè)置

然后再設(shè)置TOMCAT虛擬主機(jī)

2 配置 tomcat

2.1.  配置 server 的關(guān)閉

我們需要在一臺(tái)機(jī)器上跑 4 個(gè)不同的 tomcat ,需要修改不同的 tomcat 的關(guān)閉口,避免出現(xiàn)端口被占用的情況。其中tomcat6.0用默認(rèn)值,不修改。其他三個(gè)修改。在tomcat6.01\conf, tomcat6.02\conf下和tomcat6.03\conf下的 server.xml 中找到 server, 將:

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

改為

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

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

2.2. 配置 Engine

把原來的配置注釋掉,把下面一句去掉注釋。并標(biāo)明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

原來的默認(rèn)配置。

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

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

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

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

<proxy balancer://cluster>

     #與tomcat6.0對(duì)應(yīng),route與<Engine jvmRoute="jvm1">對(duì)應(yīng)。

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

#與tomcat6.01對(duì)應(yīng),route與<Engine jvmRoute="jvm2">對(duì)應(yīng)。

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

#與tomcat6.02對(duì)應(yīng),route與<Engine jvmRoute="jvm3">對(duì)應(yīng)。

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

#與tomcat6.03對(duì)應(yīng),route與<Engine jvmRoute="jvm4">對(duì)應(yīng)。

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

</proxy>

中的端口對(duì)應(yīng),tomcat6.01 的ajp端口port:9009. tomcat6.02 的ajp端口port:9001。tomcat6.03 的ajp端口port:9003.一定要與上面的一致。同時(shí)也要把redirectPort的值改成唯一的,確保四個(gè)tomcat的都不一樣。

2.5.配置Cluster(每個(gè)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>

這個(gè)設(shè)置是主要用以tomcat的集群。

四、啟動(dòng)服務(wù),測(cè)試tomcat自帶的例子

1、測(cè)試apache和tomcat協(xié)作。

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

<%

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

%>

然后再通過http:// 127.0.0.1來訪問一下,就會(huì)出現(xiàn)大家熟悉的貓貓。

然后再通過分別訪問

http:// 127.0.0.1:8080, http:// 127.0.0.1:9080,http:// 127.0.0.1:8081,http:// 127.0.0.1:9002它們?cè)L問的內(nèi)容和上面的http:// 127.0.0.1是一樣的。

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

2、測(cè)試均衡器

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

3、測(cè)試Session復(fù)制

訪問url: http://localhost/examples/servlet/SessionExample 可以得到一個(gè)關(guān)于session的例子,我們用它來測(cè)試集群的錯(cuò)誤恢復(fù)能力。

測(cè)試步驟如下:

關(guān)閉tomcat1和tomcat2;

啟動(dòng)tomcat1

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

啟動(dòng)tomcat2;

過一會(huì)后(等待tomcat2和tomcat1通信并復(fù)制信息)關(guān)閉tomcat1;

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

啟動(dòng)tomcat1;

過一會(huì)后(等待tomcat2和tomcat1通信并復(fù)制信息)關(guān)閉tomcat2;

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



三羽 2009-10-22 10:11 發(fā)表評(píng)論
]]>
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 發(fā)表評(píng)論
]]>
工程打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)在命令行中運(yùn)用Jar命令

假定有一個(gè)Web應(yīng)用:C:\myHome

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

在命令行窗口下執(zhí)行如下命令:

C:\>cd/d  c:\myHome

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

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

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

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

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

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

右鍵點(diǎn)擊你想打包的文件或者項(xiàng)目,選擇“導(dǎo)出...”,在彈出的對(duì)話框中選擇“WAR文件” ,上面有許多選項(xiàng),還可以選“EAR”,“JAR”.



三羽 2009-08-27 13:58 發(fā)表評(píng)論
]]>
用JAVA調(diào)用.net的webservice實(shí)例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 請(qǐng)求:
以下內(nèi)容為程序代碼:

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部分全部復(fù)制下來創(chuàng)建一個(gè)XML文件(普通的文本文件也可以),為了以后編程方面,把
以下內(nèi)容為程序代碼:

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

改成
以下內(nèi)容為程序代碼:

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

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

響應(yīng):
以下內(nèi)容為程序代碼:

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>

在后面對(duì)XML的解釋要用到響應(yīng)部分的XML描述


        接下就開始寫代碼了。
以下內(nèi)容為程序代碼:

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);//用傳入的參數(shù)city替換原來的${city}$
        } 
        catch (Exception ex) 
        {
            ex.printStackTrace();
            return null;
        }
    }
  /*
    *返回InputStream是因?yàn)閣3c DOM中Document的parse方法可
    *以接受InputStream類型的參數(shù),方面在下一步對(duì)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對(duì)返回的XML進(jìn)行解釋
  *
  */
    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;
        }
    }
}

寫個(gè)main方法檢驗(yàn)一下結(jié)果
以下內(nèi)容為程序代碼:


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

結(jié)果如下
以下內(nèi)容為程序代碼:

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


三羽 2009-05-18 13:57 發(fā)表評(píng)論
]]>
將圖片文件寫入數(shù)據(jù)庫(kù)BLOBhttp://www.tkk7.com/tunaic/archive/2009/05/18/271317.html三羽三羽Mon, 18 May 2009 05:51:00 GMThttp://www.tkk7.com/tunaic/archive/2009/05/18/271317.htmlhttp://www.tkk7.com/tunaic/comments/271317.htmlhttp://www.tkk7.com/tunaic/archive/2009/05/18/271317.html#Feedback0http://www.tkk7.com/tunaic/comments/commentRss/271317.htmlhttp://www.tkk7.com/tunaic/services/trackbacks/271317.html   import   oracle.sql.*;  
  import   java.io.*;  
  import   oracle.jdbc.driver.OracleResultSet;  
   
  public   class   WriteBlob   {  
   
  public   static   void   main(String[]   args)   {  
   
  try   {  
  //   連接數(shù)據(jù)庫(kù)  
  //Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  
  //Connection   conn   =   DriverManager.getConnection("jdbc:odbc:Yzl","pda","pwpda");          
   
  Class.forName("oracle.jdbc.driver.OracleDriver");                                                                
  Connection   conn   =   DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:SISSI","pda","pwpda");  
  conn.setAutoCommit(false);  
   
  //   獲取源照片數(shù)據(jù)  
   
  BLOB     blob   =   null;  
  Blob     blob2   =   null;  
  String   fileName   =   "c:\\01.jpg";  
  File   f   =   new   File(fileName);  
   
   
  //   先插入一條記錄,用于后面獲得一個(gè)Blob對(duì)象  
  PreparedStatement   pstmt   =   conn.prepareStatement("insert   into   javatest(PICNAME,content)   values(?,empty_blob())");  
  pstmt.setString(1,"Yzl");    
  pstmt.executeUpdate();  
  pstmt.close();  
   
  //   獲得Blob對(duì)象(由于Blob是接口,不能實(shí)例化,所以只好用這種曲折方法獲得)  
  pstmt   =   conn.prepareStatement("SELECT   content   FROM   JAVATEST   WHERE   trim(PICNAME)=?   ");  
  pstmt.setString(1,"Yzl");  
  ResultSet   rset   =   pstmt.executeQuery();  
   
  if   (rset.next())   blob   =   (BLOB)rset.getBlob(1);  
  pstmt.close();  
   
  if   (blob   ==   null){  
  System.out.println("blob   is   null");  
   
  conn.close();  
  return   ;  
  }  
   
  //   填充Blob值,用于提交到數(shù)據(jù)庫(kù)  
  FileInputStream   fin   =   new   FileInputStream(f);  
  System.out.println("file   size   =   "   +   fin.available());  
  OutputStream   out   =   blob.getBinaryOutputStream();  
  byte[]   data   =   new   byte[(int)fin.available()];  
   
          //   獲取  
          fin.read(data);  
          out.write(data);  
           
          //   關(guān)閉資源          
          fin.close();  
          out.close();  
           
          //   插入數(shù)據(jù)庫(kù)  
          pstmt   =   conn.prepareStatement("update   javatest   set   content=?   where   PICNAME=?");  
          pstmt.setBlob(1,blob);  
          pstmt.setString(2,"Yzl");  
          pstmt.executeUpdate();  
          pstmt.close();  
           
          //   提交  
          conn.commit();  
           
          //   獲取數(shù)據(jù)庫(kù)中的照片          
  pstmt   =   conn.prepareStatement("SELECT   content   FROM   JAVATEST   WHERE   trim(PICNAME)=?   ");  
  pstmt.setString(1,"Yzl");  
  rset   =   pstmt.executeQuery();  
   
  if   (rset.next())   blob   =   (BLOB)((OracleResultSet)rset).getBLOB(1);  
  pstmt.close();  
   
  if   (blob   ==   null){  
  System.out.println("blob2   is   null");  
   
  conn.close();  
  return   ;  
  }  
   
  //   輸出到磁盤  
  //   獲得  
  FileOutputStream   fout   =   new   FileOutputStream(new   File("c:\\02.jpg"));  
  InputStream   in   =   blob.asciiStreamValue();  
  data   =   new   byte[(int)in.available()];  
   
  System.out.println("數(shù)據(jù)庫(kù)中照片的字節(jié)數(shù):"+in.available());                       //   此句總是為   0   不知道為什么,有誰知道嗎?  
   
          //   輸出  
          in.read(data);  
          fout.write(data);  
           
          //   關(guān)閉資源          
          fin.close();  
          out.close();  
          conn.close();  
           
          //   打開  
          //Process   pro   =   Runtime.getRuntime().exec("cmd   /c   start   c:\\02.jpg");    
           
           
          }   catch   (SQLException   e)   {  
           
          System.err.println(e.getMessage());  
           
          e.printStackTrace();  
           
          }   catch   (IOException   e)   {  
           
          System.err.println(e.getMessage());  
           
          }   catch(ClassNotFoundException   e){  
           
          e.printStackTrace();  
          }  
          }  
   
  }

三羽 2009-05-18 13:51 發(fā)表評(píng)論
]]>
數(shù)據(jù)庫(kù)xml互相操作?。?!http://www.tkk7.com/tunaic/archive/2009/05/18/271316.html三羽三羽Mon, 18 May 2009 05:47:00 GMThttp://www.tkk7.com/tunaic/archive/2009/05/18/271316.htmlhttp://www.tkk7.com/tunaic/comments/271316.htmlhttp://www.tkk7.com/tunaic/archive/2009/05/18/271316.html#Feedback0http://www.tkk7.com/tunaic/comments/commentRss/271316.htmlhttp://www.tkk7.com/tunaic/services/trackbacks/271316.htmlJAVA如何將XML文檔里的數(shù)據(jù)寫入oracle數(shù)據(jù)庫(kù)

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.ParserConfigurationException;
import org.xml.sax.SAXException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.SQLException;
import java.io.IOException;

public class test1
{
 static Connection conn=null;
 static String deptno,dname,loc,sql;
 static String url="jdbc:oracle:oci8:@hydb";
 public static void main(String[] args)
 {
  try
  {
   Class.forName("oracle.jdbc.driver.OracleDriver");
   conn=DriverManager.getConnection(url,"scott","tiger");
   Statement st=conn.createStatement();
   
   DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
   DocumentBuilder builder=factory.newDocumentBuilder();
   Document doc=builder.parse("dept.xml");
   
   NodeList node=doc.getElementsByTagName("PERSON");
   System.out.println(node.getLength());
   
   for(int i=0;i<node.getLength();i++)
   {
    Element element=(Element)node.item(i);
    
    deptno=element.getElementsByTagName("DEPTNO").item(0).getFirstChild().getNodeValue();
    dname=element.getElementsByTagName("DNAME").item(0).getFirstChild().getNodeValue();
    loc=element.getElementsByTagName("LOC").item(0).getFirstChild().getNodeValue();
    
    sql="insert into person values('"+deptno+"','"+dname+"','"+loc+"')";
    
    st.executeUpdate(sql);
   }
   st.close();
   conn.close();
   System.out.println("插入成功!??!");
  }catch(ClassNotFoundException e)
  {
   e.printStackTrace();
  }catch(SQLException e1)
  {
   e1.printStackTrace();
  }catch(ParserConfigurationException e2)
  {
   e2.printStackTrace();
  }catch(SAXException e3)
  {
   e3.printStackTrace();
  }catch(IOException e4)
  {
   e4.printStackTrace();
  }
 }
}

 

dept.xml文件

<?xml version="1.0" encoding="UTF-8"?>

<COMP>
  <PERSON>
    <DEPTNO>10</DEPTNO>
    <DNAME>ACCOUNTING</DNAME>
    <LOC>NEW YORK</LOC>
  </PERSON>
  <PERSON>
    <DEPTNO>20</DEPTNO>
    <DNAME>RESEARCH</DNAME>
    <LOC>DALLAS</LOC>
  </PERSON>
  <PERSON>
    <DEPTNO>30</DEPTNO>
    <DNAME>SALES</DNAME>
    <LOC>CHICAGO</LOC>
  </PERSON>
  <PERSON>
    <DEPTNO>40</DEPTNO>
    <DNAME>OPERATIONS</DNAME>
    <LOC>BOSTON</LOC>
  </PERSON>
</COMP>

 

JAVA如何將oracle數(shù)據(jù)庫(kù)里的數(shù)據(jù)寫入XML文檔

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.apache.crimson.tree.XmlDocument;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.ParserConfigurationException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.xml.sax.SAXException;

public class test
{
 static Connection conn=null;
 static String sql;
 static String url="jdbc:oracle:oci8:@hydb";
 public static void main(String[] args)
 {
  try
  {
   Class.forName("oracle.jdbc.driver.OracleDriver");
   conn=DriverManager.getConnection(url,"scott","tiger");
   Statement st=conn.createStatement();
   ResultSet rs=st.executeQuery("select * from dept");
   
   DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
   DocumentBuilder builder=factory.newDocumentBuilder();
   Document doc=builder.newDocument();
   
   Element comp=doc.createElement("COMP");
   
   while(rs.next())
   {
    Element person=doc.createElement("PERSON");
    
    Element deptno=doc.createElement("DEPTNO");
    deptno.appendChild(doc.createTextNode(String.valueOf(rs.getInt(1))));
    person.appendChild(deptno);
    
    Element dname=doc.createElement("DNAME");
    dname.appendChild(doc.createTextNode(rs.getString(2)));
    person.appendChild(dname);
    
    Element loc=doc.createElement("LOC");
    loc.appendChild(doc.createTextNode(rs.getString(3)));
    person.appendChild(loc);
    
    comp.appendChild(person);
   }
   rs.close();
   st.close();
   conn.close();
   
   doc.appendChild(comp);
   
   ((XmlDocument)doc).write(new FileOutputStream(new File("dept.xml")));
   
   System.out.println("操作成功?。?!");
  }catch(ClassNotFoundException e)
  {
   e.printStackTrace();
  }catch(SQLException e1)
  {
   e1.printStackTrace();
  }catch(ParserConfigurationException e2)
  {
   e2.printStackTrace();
  }catch(FileNotFoundException e3)
  {
   e3.printStackTrace();
  }catch(IOException e4)
  {
   e4.printStackTrace();
  }
 }
}

dept.xml文件

<?xml version="1.0" encoding="UTF-8"?>

<COMP>
  <PERSON>
    <DEPTNO>10</DEPTNO>
    <DNAME>ACCOUNTING</DNAME>
    <LOC>NEW YORK</LOC>
  </PERSON>
  <PERSON>
    <DEPTNO>20</DEPTNO>
    <DNAME>RESEARCH</DNAME>
    <LOC>DALLAS</LOC>
  </PERSON>
  <PERSON>
    <DEPTNO>30</DEPTNO>
    <DNAME>SALES</DNAME>
    <LOC>CHICAGO</LOC>
  </PERSON>
  <PERSON>
    <DEPTNO>40</DEPTNO>
    <DNAME>OPERATIONS</DNAME>
    <LOC>BOSTON</LOC>
  </PERSON>
</COMP>
JAVA如何將SQLSERVER數(shù)據(jù)庫(kù)里的數(shù)據(jù)寫入XML文檔

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.apache.crimson.tree.XmlDocument;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.ParserConfigurationException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.xml.sax.SAXException;

public class test2
{
 static Connection conn=null;
 static String sql;
 static String url="jdbc:microsoft:sqlserver://127.0.0.1:1433;databasename=pubs";
 public static void main(String[] args)
 {
  try
  {
   Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
   conn=DriverManager.getConnection(url,"sa","");
   Statement st=conn.createStatement();
   ResultSet rs=st.executeQuery("select * from jobs");
   
   DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
   DocumentBuilder builder=factory.newDocumentBuilder();
   Document doc=builder.newDocument();
   
   Element comp=doc.createElement("COMP");
   
   while(rs.next())
   {
    Element person=doc.createElement("PERSON");
    
    Element job_id=doc.createElement("JOB_ID");
    job_id.appendChild(doc.createTextNode(String.valueOf(rs.getInt(1))));
    person.appendChild(job_id);
    
    Element job_desc=doc.createElement("JOB_DESC");
    job_desc.appendChild(doc.createTextNode(rs.getString(2)));
    person.appendChild(job_desc);
    
    Element min_lvl=doc.createElement("MIN_LVL");
    min_lvl.appendChild(doc.createTextNode(String.valueOf(rs.getInt(3))));
    person.appendChild(min_lvl);
    
    Element max_lvl=doc.createElement("MAX_LVL");
    max_lvl.appendChild(doc.createTextNode(String.valueOf(rs.getInt(4))));
    person.appendChild(max_lvl);
    
    comp.appendChild(person);
   }
   rs.close();
   st.close();
   conn.close();
   
   doc.appendChild(comp);
   
   ((XmlDocument)doc).write(new FileOutputStream(new File("jobs.xml")));
   
   System.out.println("操作成功?。。?);
  }catch(ClassNotFoundException e)
  {
   e.printStackTrace();
  }catch(SQLException e1)
  {
   e1.printStackTrace();
  }catch(ParserConfigurationException e2)
  {
   e2.printStackTrace();
  }catch(FileNotFoundException e3)
  {
   e3.printStackTrace();
  }catch(IOException e4)
  {
   e4.printStackTrace();
  }
 }
}

java解析xml字符串
import java.util.*;
import test.*;

public class MyDOMBean implements java.io.Serializable {
        Vector vec = new Vector();

          public MyDOMBean() {
           }

  public Vector getMappingValueNode(String strIndex,String strArea)
    {
        NodeIterator keys = null;
        Document doc = null;
        try
        {
            DocumentBuilderFactory factory =
                    DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            doc = builder.parse("/opt/tomcat/jakarta-tomcat-5.0.28/webapps/Visual/WEB-INF/qa.xml");
            String xpath = "/root/" + strArea + "/*";
            keys = XPathAPI.selectNodeIterator(doc, xpath);

                Node key = null;

                int i = 0;
                
                
                while ((key = keys.nextNode()) != null)
                {
                    NodeIterator aKey = null;
                    NodeIterator pKey = null;
                    Node name = key.getFirstChild();
                    name = name.getNextSibling();
                    QuesAnswer qa = new QuesAnswer();
                    String tempQ = null;
                    tempQ = name.getFirstChild().getNodeValue().toString();
                    name = name.getNextSibling();
                    name = name.getNextSibling();
                    String strTempA = "./answer";
                    aKey = XPathAPI.selectNodeIterator(key,strTempA);
                    Node tempKeyA = null;
                           ArrayList listA = new ArrayList();
                    String tempP = null;
                    while((tempKeyA = aKey.nextNode()) != null){
                            listA.add(tempKeyA.getFirstChild().getNodeValue().toString());
                    }

                    String[] tempA = new String[listA.size()];
                    for(int l = 0;l<listA.size();l++){
                            tempA[l] = (String)listA.get(l);
                    }
                    String strTempP = "./pic";
                    pKey = XPathAPI.selectNodeIterator(key,strTempP);
                    Node tempKeyP = null;
                    while((tempKeyP = pKey.nextNode()) !=null){
                            tempP = tempKeyP.getAttributes().getNamedItem("file").getNodeValue();
                    }
                                            
                   
                    if(strIndex==null||strIndex.equals("")){
                            qa.setQuestion(tempQ);
                            qa.setAnswer(tempA);
                            qa.setPicture(tempP);
                            vec.add(qa);
                          }else{
                                  if (tempQ.indexOf(strIndex)>= 0){
                                    qa.setQuestion(tempQ);
                                    qa.setAnswer(tempA);
                                    qa.setPicture(tempP);                                   
                                    vec.add(qa);
                            }else{
                                    for(int h = 0;h<tempA.length;h++){
                                            if(tempA[h].indexOf(strIndex)>=0){
                                                    qa.setQuestion(tempQ);
                                                    qa.setAnswer(tempA);
                                                    qa.setPicture(tempP);
                                                    vec.add(qa);
                                                    break;
                                            }               
                                    }
                            }
                    }
                   
                 }
         
        
        }catch(Exception ex)
        {
            System.out.println("[Error] Can not get mapping Value.");
            System.out.println(ex);
        }
                return vec;
               
    }

}
2、
package test;

public class QuesAnswer{
        private String question = null;
        private String[] answer = null;
        private String picture = null;

        public void setQuestion(String ques){
                this.question = ques;
        }
       
        public void setAnswer(String[] answer){
                this.answer = answer;
        }

        public String getQuestion(){
                return this.question;
        }
       
        public String[] getAnswer(){
                return this.answer;
        }
       
        public void setPicture(String picture){
                this.picture = picture;
        }
       
        public String getPicture(){
                return this.picture;
        }
}
3、
XML



<?xml version="1.0" encoding="GB2312" ?>
<root>
<resume1>
<qa id="01">
   <question>問題:我的PDA不能聯(lián)結(jié)到靈視系統(tǒng)服務(wù)器。
</question>
   <answer>回答:請(qǐng)檢查是否已經(jīng)播號(hào)聯(lián)結(jié)(移動(dòng)用戶撥,聯(lián)通用戶撥#777,小靈通用戶撥ISP服務(wù)號(hào)碼)。
</answer>  
</qa>  
<qa id="02">
   <question>問題:我的PC不能聯(lián)結(jié)到靈視系統(tǒng)服務(wù)器。ssssss
   </question>
   <answer>回答:請(qǐng)確認(rèn);
        1. 網(wǎng)線已連接且工作正常。
        2. MPEG-4_Player目錄下Decoder.ini文件中ip地址和端口號(hào)是否正確。
        </answer>  
</qa>   
<qa id="03">
   <question>問題:</question>
   <answer>回答1:</answer>  
   <answer>回答2:</answer>  
   <answer>回答3:</answer>  
   <answer>回答4:</answer>  
   <answer>回答5:</answer>
   <pic file="jiejuefangan-1.jpg"/>
</qa>   
<qa id="04">
   <question>問題:</question>
   <answer>回答:</answer>  
</qa>   
</resume1>

<resume2>
<qa id="01">
   <question>問題:</question>
   <answer>回答:</answer>  
</qa>  
<qa id="02">
   <question>問題:</question>
   <answer>回答:</answer>
   <answer>回答1:</answer>  
   <answer>回答2:</answer>  
   <answer>回答3:</answer>  
   <answer>回答4:</answer>  
   <answer>回答5:</answer>
</qa>   
<qa id="03">
   <question>問題:</question>
   <answer>回答:</answer>  
</qa>   
<qa id="04">
   <question>問題:</question>
   <answer>回答:</answer>  
</qa>   
</resume2>
</root>




三羽 2009-05-18 13:47 發(fā)表評(píng)論
]]>
tomcat配置為系統(tǒng)服務(wù)http://www.tkk7.com/tunaic/archive/2009/03/18/260396.html三羽三羽Wed, 18 Mar 2009 02:48:00 GMThttp://www.tkk7.com/tunaic/archive/2009/03/18/260396.htmlhttp://www.tkk7.com/tunaic/comments/260396.htmlhttp://www.tkk7.com/tunaic/archive/2009/03/18/260396.html#Feedback0http://www.tkk7.com/tunaic/comments/commentRss/260396.htmlhttp://www.tkk7.com/tunaic/services/trackbacks/260396.html操作步驟:
1、在“開始”→“運(yùn)行”中輸入cmd 命令,進(jìn)入MS-DOS界面
2、cd 到tomcat的bin目錄下
      C:\> cd tomcat/bin
3、運(yùn)行命令service install, 就可以把tomcat注冊(cè)成系統(tǒng)服務(wù)了
      c:\tomcat\bin> service install
      運(yùn)行命令service uninstall,就可以刪除服務(wù)。
      c:\tomcat\bin> service uninstall

      當(dāng)然,這樣注冊(cè)出來的服務(wù)啟動(dòng)類型是手動(dòng)的;若想設(shè)置為開機(jī)自動(dòng)啟動(dòng),則需要修改bin目錄下的service.bat文件。
      打開此文件,在倒數(shù)第三行左右的那句輸出
           echo The service '%SERVICE_NAME%' has been installed.
      這句是輸出服務(wù)安裝成功,在這之前加一句
            sc config %SERVICE_NAME% start= auto
      就OK了,以后開機(jī)后tomcat服務(wù)就自動(dòng)啟動(dòng)了
備注:
      啟動(dòng)/停止tomcat服務(wù)的命令,如下:
            啟動(dòng)tomcat服務(wù): c:\tomcat> net start tomcat6
            停止tomcat服務(wù): c:\tomcat> net stop tomcat6
或者
      打開“服務(wù)”對(duì)話框下進(jìn)行手動(dòng)點(diǎn)擊“啟動(dòng)”|“停止”按鈕來操作。


linux+jdk6+tomcat6
 
一、安裝前的準(zhǔn)備和相關(guān)說明
下載JDKtomcat
    
我下載的是
     apache-tomcat-6.0.24.tar.gz
     jdk-6u18-linux-i586-rpm.bin

    
查看系統(tǒng)版本
[root@www ~]# uname -a
Linux www.digican-rfid.com 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:54 EDT 2009 i686 i686 i386 GNU/Linux
[root@www ~]#
相關(guān)說明:
網(wǎng)站目錄為:/data/webapps
log
目錄為:/data/logs


二、安裝JDK
[root@www ~]# cd /software
[root@www software]# chmod +x jdk-6u18-linux-i586-rpm.bin
[root@www software]# ./jdk-6u18-linux-i586-rpm.bin
[root@www software]# vi /etc/profile
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
export PATH前增加以下內(nèi)容
JAVA_HOME=/usr/java/jdk1.6.0_18
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
CATALINA_HOME=/usr/local/tomcat6
PATH=$PATH:/usr/local/tomcat6/bin/
export PATH 的后面增加以下內(nèi)容
JAVA_HOME CLASSPATH CATALINA_HOME
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[root@www software]# set   
查看輸出中有沒有java的變量
[root@www software]# java -version
測(cè)試java
三、安裝tomcat
[root@www software]# chmod +x apache-tomcat-6.0.24.tar.gz
[root@www software]# cd /usr/local
[root@www local]# tar -xzvf /software/apache-tomcat-6.0.24.tar.gz
[root@www local]# ln -s apache-tomcat-6.0.24 tomcat6
[root@www local]# cd tomcat6
[root@www tomcat6]# vi /etc/profile
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
export PATH前增加以下內(nèi)容
CATALINA_HOME=/usr/local/tomcat6
CATALINA_BASE=/usr/local/tomcat6
PATH=$PATH:/usr/local/tomcat6/bin/
export PATH 的后面增加以下內(nèi)容
CATALINA_HOME CATALINA_BASE
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[root@www tomcat6]# set   
查看輸出中有沒有java的變量
[root@www tomcat6]# startup.sh
啟動(dòng)tomcat
[root@www tomcat6]# netstat -ln | grep 80
要保證出現(xiàn)下面一行   
tcp        0      0 :::8080                       :::*                        LISTEN   
在瀏覽器里輸入 http://localhsot:8080 應(yīng)該會(huì)出來tomcat的標(biāo)志
[root@www tomcat6]# shutdown.sh
停止tomcat
[root@www tomcat6]# vi conf/server.xml
更改以下幾行
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    <Engine name="Catalina" defaultHost="www.digican-rfid.com">   
更改默認(rèn)主機(jī)
   
<Host name="www.digican-rfid.com" appBase="/data/webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
          <Context path="" docBase="/data/webapps/company" reloadable="true" caseSensitive="false" debug="0"/>
更改主機(jī)頭和網(wǎng)站目錄
         
      <Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />                  
更改端口
      
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

[root@www tomcat6]# vi conf/tomcat-users.xml
更改以下幾行
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<user username="tomcat" password="admin" roles="admin,manager"/>
增加tomcat管理用戶
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[root@www tomcat6]# mkdir -pv /data/logs
[root@www tomcat6]# cp -R /usr/local/tomcat6/webapps /data
[root@www tomcat6]# rm -rf /usr/local/tomcat6/webapps
[root@www tomcat6]# ln -s /data/webapps /usr/local/tomcat6/webapps
[root@www tomcat6]# startup.sh
啟動(dòng)tomcat
[root@www tomcat6]# netstat -ln | grep 80
要保證出現(xiàn)下面一行   
tcp        0      0 :::80                       :::*                        LISTEN   
在瀏覽器里輸入 http://localhsot 應(yīng)該會(huì)出來自定義的網(wǎng)站
[root@www tomcat6]# shutdown.sh
停止tomcat
[root@www tomcat6]#
tomcat安裝完成
四、設(shè)置tomcat開機(jī)自啟動(dòng)
以下文章參考了網(wǎng)上的文章,但經(jīng)過自己試驗(yàn)和整理。
linux
自動(dòng)啟動(dòng)程序的方法很多,但是有時(shí)某些程序要設(shè)置環(huán)境變量的就會(huì)引起麻煩。
tomcat
啟動(dòng)時(shí)需要設(shè)置JAVA_HOME,CLASSPATH等環(huán)境變量,
很多文章說設(shè)置好環(huán)境變量,把/path/startup.sh放到rc.local中就可以實(shí)現(xiàn)自動(dòng)啟動(dòng)了,
但是實(shí)際操作發(fā)現(xiàn),很多的linux版本因?yàn)榘踩颍?/font>rc.local中忽略了export命令,也就是說在這里設(shè)置的export都是無效的,同時(shí),放在rc.local中默認(rèn)會(huì)以root用戶運(yùn)行,只要在遠(yuǎn)程運(yùn)行一個(gè)jsp文件就可能會(huì)刪除系統(tǒng)文件,是極不安全的方式。
以下方法經(jīng)過我的驗(yàn)證,可以實(shí)現(xiàn)。
Linux下,Tomcat可以作為一個(gè)守護(hù)進(jìn)程來啟動(dòng)以及停止,這個(gè)必須借助于項(xiàng)目commons-daemon中的jsvc工具。Tomcat安裝完后就帶有這個(gè)工具的源碼{tomcat}/bin/jsvc.tar.gz。按照下列命令安裝這個(gè)工具:
[root@www ~]# cd /usr/local/tomcat6/bin/
[root@www bin]# tar zxvf /usr/local/tomcat6/bin/jsvc.tar.gz
[root@www bin]# cd jsvc-src
[root@www jsvc-src]# chmod +x configure
[root@www jsvc-src]# ./configure --with-java=/usr/java/jdk1.6.0_18/
[root@www jsvc-src]# make
[root@www jsvc-src]# ./jsvc -help
jsvc工具本身帶了一個(gè)腳本(在native目錄下)用來啟動(dòng)和停止Tomcat守護(hù)進(jìn)程,但是在試驗(yàn)中發(fā)現(xiàn)該腳本無法設(shè)置為自動(dòng)啟動(dòng),顯示的錯(cuò)誤信息是:tomcat 服務(wù)不支持 chkconfig,因此修改了此腳本,可以從此處下載:tomcat.txt
程序代碼:(網(wǎng)上大部分代碼有錯(cuò)誤,經(jīng)修改運(yùn)行OK

[root@www jsvc-src]# tar -xzvf bin/jsvc.tar.gz
[root@www jsvc-src]# cp /usr/local/tomcat6/bin/jsvc-src/native/Tomcat5.sh /etc/rc.d/init.d/tomcatd
[root@www jsvc-src]# useradd tomcat
[root@www jsvc-src]# chown -R tomcat /usr/local/tomcat6
[root@www jsvc-src]# vi /etc/rc.d/init.d/tomcatd
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#!/bin/sh
##############################################################################
#
#   Copyright 2004 The Apache Software Foundation.
#
#   Licensed under the Apache License, Version 2.0 (the "License");
#   you may not use this file except in compliance with the License.
#   You may obtain a copy of the License at
#
#       http://www.apache.org/licenses/LICENSE-2.0
#
#   Unless required by applicable law or agreed to in writing, software
#   distributed under the License is distributed on an "AS IS" BASIS,
#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#   See the License for the specific language governing permissions and
#   limitations under the License.
##############################################################################
#
# Small shell script to show how to start/stop Tomcat using jsvc
# If you want to have Tomcat running on port 80 please modify the server.xml
# file:
#
#    <!-- Define a non-SSL HTTP/1.1 Connector on port 80 -->
#    <Connector className="org.apache.catalina.connector.http.HttpConnector"
#               port="80" minProcessors="5" maxProcessors="75"
#               enableLookups="true" redirectPort="8443"
#               acceptCount="10" debug="0" connectionTimeout="60000"/>
#
# That is for Tomcat-6.0.x (Apache Tomcat/6.0)
#
#
#chkconfig:345 87 13
#description: Tomcat Daemon
#
以上兩行是chkconfig 用的,如果沒有,chkconfig 就不支持此服務(wù)
# processname: jsvc
# pidfile: /var/run/jsvc.pid
prog=tomcat
# Adapt the following lines to your configuration
JAVA_HOME=/usr/java/jdk1.6.0_18
CATALINA_HOME=/usr/local/tomcat6
DAEMON_HOME=$CATALINA_HOME/bin
TOMCAT_USER=tomcat
# for multi instances adapt those lines.
TMP_DIR=/tmp
CATALINA_OPTS=
PID_FILE=/var/run/jsvc.pid
CATALINA_BASE=$CATALINA_HOME
#CATALINA_OPTS="-Djava.library.path=/home/jfclere/jakarta-tomcat-connectors/jni/native/.libs"
CLASSPATH=$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/bin/commons-daemon.jar:$CATALINA_HOME/bin/bootstrap.jar
#case "$1" in
start(){
     echo -n "Starting $prog: "
    #
    # Start Tomcat
    #
#   $DAEMON_HOME/src/native/unix/jsvc \
    $DAEMON_HOME/jsvc-src/jsvc \
    -user $TOMCAT_USER \
    -home $JAVA_HOME \
    -Dcatalina.home=$CATALINA_HOME \
    -Djava.io.tmpdir=$TMP_DIR \
    -pidfile $PID_FILE \
    -outfile $CATALINA_HOME/logs/catalina.out \
    -errfile '&1' \
    $CATALINA_OPTS \
    -cp $CLASSPATH \
    org.apache.catalina.startup.Bootstrap
    #
    # To get a verbose JVM
    #-verbose \
    # To get a debug of jsvc.
    #-debug \
   RETVAL=$?
[ $RETVAL = 0 ] && touch /var/lock/subsys/jsvc
[ $RETVAL = 0 ] && echo success || echo failure
echo return $RETVAL
}
stop(){
     echo -n "Stopping $prog: "
    #
    # Stop Tomcat
    #
    PID=`cat /var/run/jsvc.pid`
    kill $PID
    RETVAL=$?
    [ $RETVAL=0 ] && rm /var/lock/subsys/jsvc
    [ $RETVAL=0 ] && echo success || echo failure
    echo
    return $RETVAL
    }
    case "$1" in
    start)
    start
    ;;
    stop)
    stop
    ;;
    *)
    echo "Usage $0 start/stop"
    exit 1;;
    esac
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[root@www ~]# chmod +x /etc/rc.d/init.d/tomcatd
來驗(yàn)證守護(hù)進(jìn)程是否可以正常啟動(dòng)和停止。
[root@www ~]# /etc/rc.d/init.d/tomcat start|stop
啟動(dòng)或停止tomcat

[root@www ~]# service tomcat start|stop
接下來就是把這個(gè)腳本設(shè)置成系統(tǒng)啟動(dòng)時(shí)自動(dòng)執(zhí)行,系統(tǒng)關(guān)閉時(shí)自動(dòng)停止,使用如下命令:
[root@www ~]# chkconfig --add tomcatd
重新啟動(dòng)系統(tǒng)后可以啟動(dòng)的過程中看到Starting Tomcat ..... [OK]的信息,這樣就完成設(shè)置過程。


]]>
struts hibernate spring整合總結(jié)http://www.tkk7.com/tunaic/archive/2009/02/11/254290.html三羽三羽Wed, 11 Feb 2009 09:51:00 GMThttp://www.tkk7.com/tunaic/archive/2009/02/11/254290.htmlhttp://www.tkk7.com/tunaic/comments/254290.htmlhttp://www.tkk7.com/tunaic/archive/2009/02/11/254290.html#Feedback0http://www.tkk7.com/tunaic/comments/commentRss/254290.htmlhttp://www.tkk7.com/tunaic/services/trackbacks/254290.html閱讀全文

]]>
Tomcat 配置集錦http://www.tkk7.com/tunaic/archive/2008/09/27/231527.html三羽三羽Sat, 27 Sep 2008 08:13:00 GMThttp://www.tkk7.com/tunaic/archive/2008/09/27/231527.htmlhttp://www.tkk7.com/tunaic/comments/231527.htmlhttp://www.tkk7.com/tunaic/archive/2008/09/27/231527.html#Feedback0http://www.tkk7.com/tunaic/comments/commentRss/231527.htmlhttp://www.tkk7.com/tunaic/services/trackbacks/231527.html1.下載http://www.eu.apache.org/dist/jakarta/tomcat-5/
這里注意,在jakarta-tomcat-5.0.28.exe以前是有默認(rèn)的admin模塊,在jakarta-tomcat-5.5.9.exe則沒
有安裝默認(rèn)的admin模塊,這時(shí)
http://127.0.0.1:8080/admin打開時(shí)則會(huì)出現(xiàn) Tomcat's administration web application is no longer installed by default. Download and install the "admin" package to use it.
因此我們現(xiàn)在需要下載"admin"package 包, 把jakarta-tomcat-5.5.x.zip 與 jakarta-tomcat-5.5.x-compat.zip 與 jakarta-tomcat-5.5.x-admin.zip 三個(gè)文件解壓在同一個(gè)目錄中 (如果使用jdk1.4,才需
要compat.zip用jdk1.5就可以免了這個(gè)。)
2.修改jakarta-tomcat-5.5.x\conf\tomcat-users.xml.
添加管理員賬號(hào)lizongbo,密碼為lizongbopass.
新xml如下:
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="role1" password="tomcat" roles="role1"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="lizongbo" password="lizongbopass" roles="admin,manager"/>
</tomcat-users>
有時(shí)在%CATALINA_HOME%\server\webapps\admin\WEB-INF\web.xml里面也要做些修改
<!-- Security is active on entire directory -->
<security-constraint>
<display-name>Tomcat Server Configuration Security Constraint</display-name>
<web-resource-collection>
<web-resource-name>Protected Area</web-resource-name>
<!-- Define the context-relative URL(s) to be protected -->
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.do</url-pattern>
<url-pattern>*.html</url-pattern>
</web-resource-collection>
<auth-constraint>
<!-- Anyone with one of the listed roles may access this area -->
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<!-- Login configuration uses form-based authentication -->
<login-config>
<auth-method>FORM</auth-method>
<realm-name>Tomcat Server Configuration Form-Based Authentication Area</realm-name>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/error.jsp</form-error-page>
</form-login-config>
</login-config>
<!-- Security roles referenced by this web application -->
<security-role>
<description>
The role that is required to log in to the Administration Application
</description>
<role-name>admin</role-name>
</security-role>
無論是 Authetication ( 身份驗(yàn)證 還是 Authorization ( 權(quán)限管控 都只有設(shè)置相關(guān)的 admin ROLE, 當(dāng)
你想要新增或修改相關(guān)的 AA, 就必須修改這一個(gè)文件, 來符合你的環(huán)境.
3.修改jakarta-tomcat-5.5.x\conf\server.xml來解決編碼問題。
(給Connector 添加URIEncoding參數(shù),參考
http://blog.csdn.net/darkxie/archive/2004/10/25/TOMCATAPP.aspx)
(可以設(shè)置成GB18030)
<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="200"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK"
compression="on" compressionMinSize="2048"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml"/>
<Connector port="8009"
enableLookups="false" redirectPort="8443" protocol="AJP/1.3" URIEncoding="GBK"/>
4.啟用支持gzip壓縮.
(
http://www.linuxaid.com.cn/forum/showdoc.jsp?l=1&i=81169)
添加下列屬性
compression="on"
compressionMinSize="2048"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml"
5.設(shè)置虛擬主機(jī)。
在jakarta-tomcat-5.5.x\下建立文件夾vhost\
www.mydomain.com。
然后修改jakarta-tomcat-5.5.x\conf\server.xml
<Engine defaultHost="localhost" name="Catalina">
<Host appBase="vhost/www.mydomain.com" name="
http://www.mydomain.com/">
</Host>
<Host appBase="webapps" name="localhost">
</Host>
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"/>
</Engine>
6.添加數(shù)據(jù)庫(kù)驅(qū)動(dòng),更新mail.jar和actiovation.jar
復(fù)制mysql-connector-java-3.0.16-ga-bin.jar,pg74.215.jdbc3.jar到 jakarta-tomcat-5.5.x\common\lib\
還有javamail 1.3.2的mail.jar,jaf-1_0_2的 activation.jar
msSQl 2000 JDBC sp3,msbase.jar,msutil,jar,mssqlserver.jar
7.配置SSL
參考
http://jakarta.apache.org/tomcat/tomcat-5.5-doc/ssl-howto.html
D:\j2sdk1.4.2_06\bin>%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA
輸入keystore密碼: lizongbossl
您的名字與姓氏是什么?
[tomcat5.5.x]: tomcat5.5.x
您的組織單位名稱是什么?
[jakarta]: jakarta
您的組織名稱是什么?
[apache]: apache
您所在的城市或區(qū)域名稱是什么?
[hzcity]: hzcity
您所在的州或省份名稱是什么?
[gdp]: gdp
該單位的兩字母國(guó)家代碼是什么
[CN]: CN
CN=tomcat5.5.x, OU=jakarta, O=apache, L=hzcity, ST=gdp, C=CN 正確嗎?
[否]: y
輸入<tomcat>的主密碼
(如果和 keystore 密碼相同,按回車):
(必須密碼一致,因此直接回車)
然后再把userhome(例如:C:\Documents and Settings\lizongbo\)下的.keystore復(fù)制到
tomcat的conf\目錄下。
(例如:D:\jakarta-tomcat-5.5.x\conf\.keystore
配置jakarta-tomcat-5.5.x\conf\server.xml
加上
<Connector port="8443"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="conf/.keystore"
keystorePass="lizongbossl"> <!--與先前設(shè)置的密碼一致-->
</Connector>
8.禁止文件目錄列表,
修改jakarta-tomcat-5.5.x\conf\web.xml,把listing設(shè)置為false
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
9.指定了自己的javaEncoding
(參考
http://gceclub.sun.com.cn/staticcontent/html/sunone/app7/app7-dg-webapp/ch6/ch6-4.html
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>javaEncoding</param-name>
<param-value>GB18030</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
10.添加rar,iso等的mime-type映射
避免在瀏覽器里直接打開。
<mime-mapping>
<extension>mht</extension>
<mime-type>text/x-mht</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rar</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
<mime-mapping>
<extension>iso</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ape</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rmvb</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ico</extension>
<mime-type>image/x-icon</mime-type>
</mime-mapping>
10.1對(duì)html靜態(tài)頁(yè)面設(shè)置編碼
<!-- 修改下面兩行以支持靜態(tài)超文本的自動(dòng)編碼
-->
<mime-mapping>
<extension>htm</extension>
<mime-type>text/html;charset=gb2312</mime-type>
</mime-mapping>
<mime-mapping>
<extension>html</extension>
<mime-type>text/html;charset=gb2312</mime-type>
</mime-mapping>
</web-app>
11.添加welcome-file-list,并調(diào)整順序。
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>

12.環(huán)境變量影響tomcat啟動(dòng)問題
(1)java_home路徑不能有";"號(hào) 否則會(huì)啟動(dòng)不了。
(2)java_home = C:\Java\jdk1.6.0_11
          classpath    = C:\Java\jdk1.6.0_11\lib;C:\Java\jdk1.6.0_11\jre\lib
          path           = .;C:\Java\jdk1.6.0_11\bin 
(3)tomcat 解壓版調(diào)jvm:在catalina.bat中加入:set JAVA_OPTS= -XX:PermSize=128m -XX:MaxPermSize=256m -Xms400m -Xmx400m;安裝版在 tomcat6w.exe的java標(biāo)簽中加入-XX:MaxNewSize=256m
-XX:MaxPermSize=256m  并設(shè)置其pool等參數(shù)。eclipse設(shè)置方法在java--jvm中加入:-Xms256m -Xmx256m -XX:MaxNewSize=256m -XX:MaxPermSize=256m


13.將程序啟動(dòng)的控制臺(tái)輸出成文本
在startup.bat 后面end前加下面內(nèi)容
call "%EXECUTABLE%" run %CMD_LINE_ARGS% >> ..\logs\catalina.txt

]]>
主站蜘蛛池模板: 无码国产精品一区二区免费式直播 | 亚洲国产精品综合福利专区| 国产亚洲福利在线视频| 一级做性色a爰片久久毛片免费| 8x网站免费入口在线观看| 日本一区二区三区日本免费| 亚洲av综合色区| 亚洲国产精品久久久久秋霞小 | 亚洲人成色77777在线观看大| 亚洲精品视频久久| 永久免费观看黄网站| 免费可以看黄的视频s色| 久久亚洲欧洲国产综合| 2017亚洲男人天堂一| 久久免费视频一区| 日韩精品免费电影| 亚洲2022国产成人精品无码区| 色偷偷亚洲第一综合网| 国产高清免费视频| 国产亚洲综合色就色| 青青青亚洲精品国产| 久久九九兔免费精品6| 国产亚洲一区二区手机在线观看| 亚洲精品伦理熟女国产一区二区| 久久爰www免费人成| 亚洲精品老司机在线观看| 亚洲卡一卡二卡乱码新区| 国产精品免费高清在线观看| jizzjizz亚洲| 亚洲欧美国产日韩av野草社区| 最近2019中文字幕免费直播| 久久久久一级精品亚洲国产成人综合AV区| 亚洲欧美日韩综合俺去了| 妻子5免费完整高清电视| 久久精品国产亚洲av麻| caoporn国产精品免费| 国产真人无遮挡作爱免费视频| 精品久久久久久亚洲精品| 久久免费的精品国产V∧| av在线亚洲欧洲日产一区二区| 亚洲AV无码专区在线电影成人|