posted @ 2008-08-21 11:29 寒武紀 閱讀(1799) | 評論 (0) | 編輯 收藏
posted @ 2008-07-31 15:13 寒武紀 閱讀(2087) | 評論 (5) | 編輯 收藏
setQueryString(NameValuePair[] params)
void
setQueryString(String queryString)
posted @ 2008-07-16 10:31 寒武紀 閱讀(5207) | 評論 (2) | 編輯 收藏
Jakarta的httpclient3.1是最新版本,項目中需要用程序模擬瀏覽器的GET和POST動作。在使用過程中遇到不少問題。 1. 帶附件的POST提交 最開始都是使用MultipartPostMethod這個類,現在已經廢棄這個類了。API說明:Deprecated. Use MultipartRequestEntity in conjunction with PostMethod instead. 使用PostMethod可以實現的功能,就沒有必要再弄一個MultipartPostMethod了。下面是一段最簡單的示例:
MultipartRequestEntity
PostMethod
posted @ 2008-06-11 15:18 寒武紀 閱讀(6928) | 評論 (8) | 編輯 收藏
posted @ 2008-06-03 17:27 寒武紀 閱讀(6869) | 評論 (3) | 編輯 收藏
Eclipse3.3出來很久了,一直都使用英文版,剛好看到有網友介紹Eclipse的一個Project,叫Babel,官方的描述這樣:Eclipse is a global community. It is in everyone's interest to ensure that Eclipse is available and translated in as many locales as possible. 項目的主頁地址是:http://www.eclipse.org/babel/ 。按照說明從這里可以下載安裝到語言包。 直接從Eclipse3.3的菜單"Help --> Software Updates --> Find and Insatll...",新建一個遠程站點,URL為 http://download.eclipse.org/technology/babel/update-site/ ,然后直接在線安裝。在彈出的語言選擇界面上選擇中文簡體。如下圖:
網絡情況如果正常的話,安裝應該不會有問題的,中間可能會彈出幾次下載jar文件失敗的對話框,繼續retry就行。 最后重啟一下,可以看到都變成中文界面的。 原來是3.3的Eclipse,怎么變成3.2呢?原因估計是語言插件的版本是3.2的導致的,所以你看到有一些地方漢化并不完全,像Error Log視圖的標題,項目右鍵菜單,以及一些頂級菜單都沒有完全漢化。 希望以后Babel項目后面更新跟得上主版本的變化,不過習慣了英文版的,其實也是差不多的。
posted @ 2008-05-30 15:44 寒武紀 閱讀(13945) | 評論 (13) | 編輯 收藏
readPassword()
posted @ 2008-05-23 09:41 寒武紀 閱讀(4134) | 評論 (1) | 編輯 收藏
剛好最近項目中需要用到一點加密的東西,java安全類庫提供了一個java.security.MessageDigest類,此 MessageDigest 類為應用程序提供信息摘要算法的功能,如 MD5 或 SHA 算法。信息摘要是安全的單向哈希函數,它接收任意大小的數據,并輸出固定長度的哈希值。有現成的當然是最好的,省事省力。 MD5的非常有實際應用性。有網友給出這樣的描述,可以參照一下:http://blog.csdn.net/Daping_Zhang/archive/2005/05/28/382688.aspx 該類的getInstance(String algorithm) 方法返回一個MessageDigest的實體,加密的一系統的digest()方法和update(byte input)方法。加密后返回一個byte[],16位,我們經常見到很多開源網站的下載地址會有一個[md5]的鏈接,打開其實就是一小段文本內容。例如: MD5 (commons-logging-1.1.1-bin.zip) = f88520ed791673aed6cc4591bc058b55 這是Jakarta的logging組件下載時提供的MD5摘要信息,是對這個zip包進行全文加密生成的摘要,摘要碼就是后面的f88520ed791673aed6cc4591bc058b55,如果你下載以后,按照MD5的算法生成自己的摘要,如果這二個摘要一樣,就證明這個文件是沒有被人篡改過的。 遇到的問題是Java的MessageDigest類執行后返回的byte[16]得轉換成十六進制的字符串,如果直接用new String(byte[]),得到的結果將是不正確的。算法有很多網友提供了,照搬了。比較有趣的是,commons-logging提供的那個MD5居然和我自己生成的不一樣(難道文件被修改過?),后來嘗試了其它地方提供的MD5碼,都沒有問題。 有很多相關的現成代碼,搜集了一下整理如下(經過驗證):
getInstance(String algorithm)
digest()
update(byte input)方法。加密后返回一個byte[],16位,我們經常見到很多開源網站的下載地址會有一個[md5]的鏈接,打開其實就是一小段文本內容。例如:
posted @ 2008-05-08 15:02 寒武紀 閱讀(6544) | 評論 (2) | 編輯 收藏
一般而言,我們平常接觸的大多數項目都應該是單純使用B/S或是C/S,除非在特殊場合,否則比較少混合使用B/S,C/S架構。首先說一下對這二種架構特點的一些個人理解。B/S應該是目前很多項目都應用的架構,瀏覽器的方式使得用戶的使用十分方便,用戶可以何時何地通過Internet訪問URL而進行相應的工作,升級維護也能比較集中,缺點就是瀏覽器的表現能力受限以及常常受非議的安全性問題,如果軟件的應用范圍區域不集中,而且用戶經常變換地點進行訪問,那么這種架構是非常適合的。C/S架構的C端有非常強的處理能力,所以在交互表現和安全方面可以做得比瀏覽器強,但是缺點也是非常明顯的,安裝部署、升級維護、版本兼容都是比較頭大的事情,一般的適用場景是集中的辦公室場所,用戶使用范圍相對穩定,以及一些對業務處理非常復雜的場合,為了降低服務器的負荷,同樣需要C模式的支持。 以前接觸過的電信領域,就有過混合架構的軟件。但是都是非常寵大,一直都對其實現方案比較感興趣,但是都沒有機會進一步了解。最近搜索了一下相關的資料,總結一下混合應用的一些想法(只針對Java方向)。 ①混合架構的問題集中點。服務端共享,客戶端采用不同的表現方式,共享的應該是業務層接口,持久層應該是屏蔽的。應用層的消息傳遞就是整個應用的關鍵所在,雖然像Jakarta提供的httpClient這種模仿瀏覽器的組件,但是畢竟是模仿,在很多方面的功能還是缺失的。 ②最傳統的方式是采用EJB做為服務,這個寵然大物容易讓人害怕,不過在分布式的系統中它還是有應用優勢的,像電信和金融這種行業應用還是比較廣的,而且現成的中間件和應用服務器商都比較多,像Oracel、BEA、IBM、Sun都有成熟的應用產品,當然開發的成本和人力投入也是恐龍級數據的。 ③有網友說在C端直接訪問數據庫,B/S結構不變,也就是通過數據庫進行共享。這種方式是不可取的,二個缺點:把服務器的業務邏輯搬到了C端上,嚴格上講是不安全的,升級維護也非常麻煩;并發控制的壓力都在數據庫上。 ④采用RMI,這個老古董相信應該很多人都不使用了,因為它的使用要一連串的手續,比如服務接口定義必須實現Remote接口,服務Server在實現時必須繼承UnicastRemoteobject類,必須使用rmic指令產生stub和skeleton等,設置上繁雜。 ⑤Spring 遠程服務。這個應該說是比較可取的,大家都比較喜歡輕量級的東西。就如第一點所說的,通過遠程服務,我們可以在客戶直接調用服務端的服務接口,就像本地調用一樣,Spring對遠程服務提供了好幾種實現方案。 ⑥WebService。適合異構環境,但是WSDL的這種方式相對來說會比較耗費資料,因為標準定義除了業務內容外,還有許多另外的說明內容。 Spring遠程服務實現方案介紹: ⑴Spring + RMI。Spring把傳統的RMI方式的繁雜設置去掉,只要配置Bean文件就和定義服務接口可以。RMI的服務啟動和管理都交給Spring來處理。RMI訪問的缺點就是對防火墻的穿透力比較差。 ⑵Spring + Caucho的Hessian、Burlap。Hessian使用Http將對象以中性的二進制消息進行傳送,而不像RMI使用Java的序列化格式(這種序列化是專制的,不是Sun提供的序列化機制),由于是二進制消息,所以不受限于某種實現語言,傳輸時所需要的帶寬較小是其優點。Burlap是以XML文件格式傳送對象,XML文件有較高可讀性,應用程序只要能解釋XML就能接收消息,當然也不限于某種語言,但是組裝XML和解釋XML都需要消耗資源,當傳輸大數據時性能應該存在問題。 ⑶Spring + Http Invoker。由于Hessian的序列化機制不是正統的Java序列化機制,所以當遇到傳輸復雜的業務模型時,就會存在各種問題,為此,Spring又提供了Http Invoker,同樣是使用Http傳送對象,而且是使用Java的序列化機制。相比RMI,Http對防火墻的穿透力要強。 后來嘗試了最后的這種Http Invoker方式,是在Spring2.0版本下嘗試的,開發非常簡單,網上也有大量的資料介紹。應該說從這里入口可以做一些嘗試。目前遇到的一個項目就需要混合架構,B/S采用Spring2 + Struts2 + Hiberntae3,瀏覽器只提供一些查詢功能和數據展現,C端采用Eclipse的RCP平臺,共享服務器的業務接口,調用就采用Http Invoker遠程服務,復雜的業務功能都集中在C端上。
posted @ 2008-05-06 12:43 寒武紀 閱讀(13767) | 評論 (25) | 編輯 收藏
1. 驅動器 如果安裝了DB2客戶端,則到安裝目錄下的sqllib/java目錄下面找到二個jar包:db2jcc.jar和db2jcc_license_cu.jar,把它們添加到你的classpath中去,有的人說用db2java.zip也可以連接,但是我嘗試了,總是無法連接。如果沒有這二個jar包,到網上搜索一下,有些網友已經上傳了。驅動器名稱是:com.ibm.db2.jcc.DB2Driver。 2. URL寫法 連接的URL正確寫法是:jdbc:db2://[IP地址]:[端口]/[數據庫名],例如:jdbc:db2://99.1.99.114:50000/dwsdemo,要確保URL正確,你可以先在DB2的命令行測試一下是否能正確連接上。 有個不太明白的地方就是為什么IBM提供的驅動器包命名有的地方是大寫,比如:COM.ibm.db2.app
posted @ 2008-04-17 11:14 寒武紀 閱讀(7276) | 評論 (8) | 編輯 收藏
Powered by: BlogJava Copyright © 寒武紀