国产丝袜一区,欧美日韩免费电影,久久久久国产精品人http://www.aygfsteel.com/tunaic/category/34882.htmlIdeal is the beacon. Without ideal, there is no secure direction; without direction ,there is no life. <br> 理想是指路明燈。沒有理想,就沒有堅定的方向;沒有方向,就沒有生活。<br> CTRL+T eclipsezh-cnFri, 02 Dec 2011 00:57:29 GMTFri, 02 Dec 2011 00:57:29 GMT60部署程序svn及eclipsehttp://www.aygfsteel.com/tunaic/archive/2010/01/21/310397.html三羽三羽Thu, 21 Jan 2010 07:26:00 GMThttp://www.aygfsteel.com/tunaic/archive/2010/01/21/310397.htmlhttp://www.aygfsteel.com/tunaic/comments/310397.htmlhttp://www.aygfsteel.com/tunaic/archive/2010/01/21/310397.html#Feedback1http://www.aygfsteel.com/tunaic/comments/commentRss/310397.htmlhttp://www.aygfsteel.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 發表評論
]]>
最新版整合Apache2.2.9和Tomcat6.0.18http://www.aygfsteel.com/tunaic/archive/2009/10/22/299296.html三羽三羽Thu, 22 Oct 2009 02:11:00 GMThttp://www.aygfsteel.com/tunaic/archive/2009/10/22/299296.htmlhttp://www.aygfsteel.com/tunaic/comments/299296.htmlhttp://www.aygfsteel.com/tunaic/archive/2009/10/22/299296.html#Feedback0http://www.aygfsteel.com/tunaic/comments/commentRss/299296.htmlhttp://www.aygfsteel.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.aygfsteel.com/tunaic/archive/2009/10/14/298161.html三羽三羽Wed, 14 Oct 2009 02:44:00 GMThttp://www.aygfsteel.com/tunaic/archive/2009/10/14/298161.htmlhttp://www.aygfsteel.com/tunaic/comments/298161.htmlhttp://www.aygfsteel.com/tunaic/archive/2009/10/14/298161.html#Feedback0http://www.aygfsteel.com/tunaic/comments/commentRss/298161.htmlhttp://www.aygfsteel.com/tunaic/services/trackbacks/298161.html閱讀全文

三羽 2009-10-14 10:44 發表評論
]]>
工程打war包方法http://www.aygfsteel.com/tunaic/archive/2009/08/27/292808.html三羽三羽Thu, 27 Aug 2009 05:58:00 GMThttp://www.aygfsteel.com/tunaic/archive/2009/08/27/292808.htmlhttp://www.aygfsteel.com/tunaic/comments/292808.htmlhttp://www.aygfsteel.com/tunaic/archive/2009/08/27/292808.html#Feedback0http://www.aygfsteel.com/tunaic/comments/commentRss/292808.htmlhttp://www.aygfsteel.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.aygfsteel.com/tunaic/archive/2009/05/18/271318.html三羽三羽Mon, 18 May 2009 05:57:00 GMThttp://www.aygfsteel.com/tunaic/archive/2009/05/18/271318.htmlhttp://www.aygfsteel.com/tunaic/comments/271318.htmlhttp://www.aygfsteel.com/tunaic/archive/2009/05/18/271318.html#Feedback0http://www.aygfsteel.com/tunaic/comments/commentRss/271318.htmlhttp://www.aygfsteel.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 發表評論
]]>
將圖片文件寫入數據庫BLOBhttp://www.aygfsteel.com/tunaic/archive/2009/05/18/271317.html三羽三羽Mon, 18 May 2009 05:51:00 GMThttp://www.aygfsteel.com/tunaic/archive/2009/05/18/271317.htmlhttp://www.aygfsteel.com/tunaic/comments/271317.htmlhttp://www.aygfsteel.com/tunaic/archive/2009/05/18/271317.html#Feedback0http://www.aygfsteel.com/tunaic/comments/commentRss/271317.htmlhttp://www.aygfsteel.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   {  
  //   連接數據庫  
  //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);  
   
  //   獲取源照片數據  
   
  BLOB     blob   =   null;  
  Blob     blob2   =   null;  
  String   fileName   =   "c:\\01.jpg";  
  File   f   =   new   File(fileName);  
   
   
  //   先插入一條記錄,用于后面獲得一個Blob對象  
  PreparedStatement   pstmt   =   conn.prepareStatement("insert   into   javatest(PICNAME,content)   values(?,empty_blob())");  
  pstmt.setString(1,"Yzl");    
  pstmt.executeUpdate();  
  pstmt.close();  
   
  //   獲得Blob對象(由于Blob是接口,不能實例化,所以只好用這種曲折方法獲得)  
  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值,用于提交到數據庫  
  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);  
           
          //   關閉資源          
          fin.close();  
          out.close();  
           
          //   插入數據庫  
          pstmt   =   conn.prepareStatement("update   javatest   set   content=?   where   PICNAME=?");  
          pstmt.setBlob(1,blob);  
          pstmt.setString(2,"Yzl");  
          pstmt.executeUpdate();  
          pstmt.close();  
           
          //   提交  
          conn.commit();  
           
          //   獲取數據庫中的照片          
  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("數據庫中照片的字節數:"+in.available());                       //   此句總是為   0   不知道為什么,有誰知道嗎?  
   
          //   輸出  
          in.read(data);  
          fout.write(data);  
           
          //   關閉資源          
          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 發表評論
]]>
數據庫xml互相操作?。?!http://www.aygfsteel.com/tunaic/archive/2009/05/18/271316.html三羽三羽Mon, 18 May 2009 05:47:00 GMThttp://www.aygfsteel.com/tunaic/archive/2009/05/18/271316.htmlhttp://www.aygfsteel.com/tunaic/comments/271316.htmlhttp://www.aygfsteel.com/tunaic/archive/2009/05/18/271316.html#Feedback0http://www.aygfsteel.com/tunaic/comments/commentRss/271316.htmlhttp://www.aygfsteel.com/tunaic/services/trackbacks/271316.htmlJAVA如何將XML文檔里的數據寫入oracle數據庫

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數據庫里的數據寫入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數據庫里的數據寫入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不能聯結到靈視系統服務器。
</question>
   <answer>回答:請檢查是否已經播號聯結(移動用戶撥,聯通用戶撥#777,小靈通用戶撥ISP服務號碼)。
</answer>  
</qa>  
<qa id="02">
   <question>問題:我的PC不能聯結到靈視系統服務器。ssssss
   </question>
   <answer>回答:請確認;
        1. 網線已連接且工作正常。
        2. MPEG-4_Player目錄下Decoder.ini文件中ip地址和端口號是否正確。
        </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 發表評論
]]>
tomcat配置為系統服務http://www.aygfsteel.com/tunaic/archive/2009/03/18/260396.html三羽三羽Wed, 18 Mar 2009 02:48:00 GMThttp://www.aygfsteel.com/tunaic/archive/2009/03/18/260396.htmlhttp://www.aygfsteel.com/tunaic/comments/260396.htmlhttp://www.aygfsteel.com/tunaic/archive/2009/03/18/260396.html#Feedback0http://www.aygfsteel.com/tunaic/comments/commentRss/260396.htmlhttp://www.aygfsteel.com/tunaic/services/trackbacks/260396.html操作步驟:
1、在“開始”→“運行”中輸入cmd 命令,進入MS-DOS界面
2、cd 到tomcat的bin目錄下
      C:\> cd tomcat/bin
3、運行命令service install, 就可以把tomcat注冊成系統服務了
      c:\tomcat\bin> service install
      運行命令service uninstall,就可以刪除服務。
      c:\tomcat\bin> service uninstall

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


linux+jdk6+tomcat6
 
一、安裝前的準備和相關說明
下載JDK,tomcat
    
我下載的是
     apache-tomcat-6.0.24.tar.gz
     jdk-6u18-linux-i586-rpm.bin

    
查看系統版本
[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 ~]#
相關說明:
網站目錄為:/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前增加以下內容
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 的后面增加以下內容
JAVA_HOME CLASSPATH CATALINA_HOME
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[root@www software]# set   
查看輸出中有沒有java的變量
[root@www software]# java -version
測試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前增加以下內容
CATALINA_HOME=/usr/local/tomcat6
CATALINA_BASE=/usr/local/tomcat6
PATH=$PATH:/usr/local/tomcat6/bin/
export PATH 的后面增加以下內容
CATALINA_HOME CATALINA_BASE
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[root@www tomcat6]# set   
查看輸出中有沒有java的變量
[root@www tomcat6]# startup.sh
啟動tomcat
[root@www tomcat6]# netstat -ln | grep 80
要保證出現下面一行   
tcp        0      0 :::8080                       :::*                        LISTEN   
在瀏覽器里輸入 http://localhsot:8080 應該會出來tomcat的標志
[root@www tomcat6]# shutdown.sh
停止tomcat
[root@www tomcat6]# vi conf/server.xml
更改以下幾行
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    <Engine name="Catalina" defaultHost="www.digican-rfid.com">   
更改默認主機
   
<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"/>
更改主機頭和網站目錄
         
      <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
啟動tomcat
[root@www tomcat6]# netstat -ln | grep 80
要保證出現下面一行   
tcp        0      0 :::80                       :::*                        LISTEN   
在瀏覽器里輸入 http://localhsot 應該會出來自定義的網站
[root@www tomcat6]# shutdown.sh
停止tomcat
[root@www tomcat6]#
tomcat安裝完成
四、設置tomcat開機自啟動
以下文章參考了網上的文章,但經過自己試驗和整理。
linux
自動啟動程序的方法很多,但是有時某些程序要設置環境變量的就會引起麻煩。
tomcat
啟動時需要設置JAVA_HOME,CLASSPATH等環境變量,
很多文章說設置好環境變量,把/path/startup.sh放到rc.local中就可以實現自動啟動了,
但是實際操作發現,很多的linux版本因為安全原因,rc.local中忽略了export命令,也就是說在這里設置的export都是無效的,同時,放在rc.local中默認會以root用戶運行,只要在遠程運行一個jsp文件就可能會刪除系統文件,是極不安全的方式。
以下方法經過我的驗證,可以實現。
Linux下,Tomcat可以作為一個守護進程來啟動以及停止,這個必須借助于項目commons-daemon中的jsvc工具。Tomcat安裝完后就帶有這個工具的源碼{tomcat}/bin/jsvc.tar.gz。按照下列命令安裝這個工具:
[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工具本身帶了一個腳本(在native目錄下)用來啟動和停止Tomcat守護進程,但是在試驗中發現該腳本無法設置為自動啟動,顯示的錯誤信息是:tomcat 服務不支持 chkconfig,因此修改了此腳本,可以從此處下載:tomcat.txt
程序代碼:(網上大部分代碼有錯誤,經修改運行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 就不支持此服務
# 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
來驗證守護進程是否可以正常啟動和停止。
[root@www ~]# /etc/rc.d/init.d/tomcat start|stop
啟動或停止tomcat

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


三羽 2009-03-18 10:48 發表評論
]]>
struts hibernate spring整合總結http://www.aygfsteel.com/tunaic/archive/2009/02/11/254290.html三羽三羽Wed, 11 Feb 2009 09:51:00 GMThttp://www.aygfsteel.com/tunaic/archive/2009/02/11/254290.htmlhttp://www.aygfsteel.com/tunaic/comments/254290.htmlhttp://www.aygfsteel.com/tunaic/archive/2009/02/11/254290.html#Feedback0http://www.aygfsteel.com/tunaic/comments/commentRss/254290.htmlhttp://www.aygfsteel.com/tunaic/services/trackbacks/254290.html閱讀全文

三羽 2009-02-11 17:51 發表評論
]]>
Tomcat 配置集錦http://www.aygfsteel.com/tunaic/archive/2008/09/27/231527.html三羽三羽Sat, 27 Sep 2008 08:13:00 GMThttp://www.aygfsteel.com/tunaic/archive/2008/09/27/231527.htmlhttp://www.aygfsteel.com/tunaic/comments/231527.htmlhttp://www.aygfsteel.com/tunaic/archive/2008/09/27/231527.html#Feedback0http://www.aygfsteel.com/tunaic/comments/commentRss/231527.htmlhttp://www.aygfsteel.com/tunaic/services/trackbacks/231527.html1.下載http://www.eu.apache.org/dist/jakarta/tomcat-5/
這里注意,在jakarta-tomcat-5.0.28.exe以前是有默認的admin模塊,在jakarta-tomcat-5.5.9.exe則沒
有安裝默認的admin模塊,這時
http://127.0.0.1:8080/admin打開時則會出現 Tomcat's administration web application is no longer installed by default. Download and install the "admin" package to use it.
因此我們現在需要下載"admin"package 包, 把jakarta-tomcat-5.5.x.zip 與 jakarta-tomcat-5.5.x-compat.zip 與 jakarta-tomcat-5.5.x-admin.zip 三個文件解壓在同一個目錄中 (如果使用jdk1.4,才需
要compat.zip用jdk1.5就可以免了這個。)
2.修改jakarta-tomcat-5.5.x\conf\tomcat-users.xml.
添加管理員賬號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>
有時在%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 ( 身份驗證 還是 Authorization ( 權限管控 都只有設置相關的 admin ROLE, 當
你想要新增或修改相關的 AA, 就必須修改這一個文件, 來符合你的環境.
3.修改jakarta-tomcat-5.5.x\conf\server.xml來解決編碼問題。
(給Connector 添加URIEncoding參數,參考
http://blog.csdn.net/darkxie/archive/2004/10/25/TOMCATAPP.aspx)
(可以設置成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.設置虛擬主機。
在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.添加數據庫驅動,更新mail.jar和actiovation.jar
復制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
您所在的城市或區域名稱是什么?
[hzcity]: hzcity
您所在的州或省份名稱是什么?
[gdp]: gdp
該單位的兩字母國家代碼是什么
[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復制到
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"> <!--與先前設置的密碼一致-->
</Connector>
8.禁止文件目錄列表,
修改jakarta-tomcat-5.5.x\conf\web.xml,把listing設置為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對html靜態頁面設置編碼
<!-- 修改下面兩行以支持靜態超文本的自動編碼
-->
<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,并調整順序。
<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.環境變量影響tomcat啟動問題
(1)java_home路徑不能有";"號 否則會啟動不了。
(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 解壓版調jvm:在catalina.bat中加入:set JAVA_OPTS= -XX:PermSize=128m -XX:MaxPermSize=256m -Xms400m -Xmx400m;安裝版在 tomcat6w.exe的java標簽中加入-XX:MaxNewSize=256m
-XX:MaxPermSize=256m  并設置其pool等參數。eclipse設置方法在java--jvm中加入:-Xms256m -Xmx256m -XX:MaxNewSize=256m -XX:MaxPermSize=256m


13.將程序啟動的控制臺輸出成文本
在startup.bat 后面end前加下面內容
call "%EXECUTABLE%" run %CMD_LINE_ARGS% >> ..\logs\catalina.txt

三羽 2008-09-27 16:13 發表評論
]]>
主站蜘蛛池模板: 玉溪市| 蓝田县| 高碑店市| 锦屏县| 搜索| 阿巴嘎旗| 莱州市| 上杭县| 浠水县| 高淳县| 枣庄市| 南木林县| 开江县| 察哈| 绥滨县| 大田县| 雷波县| 江达县| 敦化市| 绩溪县| 石首市| 垦利县| 二连浩特市| 富阳市| 黎城县| 嘉义县| 措勤县| 阿合奇县| 从江县| 伊川县| 宣武区| 弥勒县| 古田县| 贡山| 赣州市| 宜川县| 南通市| 太康县| 韩城市| 明星| 安庆市|