Apache HttpClient ( http://jakarta.apache.org/commons/httpclient/ ) 是一個(gè)純 Java 的HTTP 協(xié)議的客戶端編程工具包, 對(duì) HTTP 協(xié)議的支持相當(dāng)全面, 更多細(xì)節(jié)也可以參考IBM 網(wǎng)站上的這篇文章 HttpClient入門(mén) ( http://www-128.ibm.com/developerworks/cn/opensource/os-httpclient/ ).
????/** |
????/** |
<%@?page?contentType="text/html;charset=UTF-8"%> |
????public?static?void?main(String[]?args)?throws?Exception,?IOException?{ |
sudo /opt/lampp/lampp startapache
sudo /opt/lampp/lampp reloadapache
(在 httpd.conf 文件被修改后可以不重啟, 而是直接 reload 就可以了)sudo /opt/lampp/lampp stop
###############################################################################這個(gè)配置分為3個(gè)部分, 包括了 1)簡(jiǎn)單的反向代理, 2)非 session sticky 的 load balance, 以及 3)session sticky 的 load balance 三種方式的配置(這里假設(shè)兩個(gè) Tomcat 服務(wù)器的 HTTP 服務(wù)被配置在 8080 和 18080 端口), 其中第 2) 和 3) 的配置中 "nofailover=On" 適合于沒(méi)有 session 復(fù)制的情況下, 這種情況下, 如果其中一臺(tái) HTTP 服務(wù)器出錯(cuò), 那么原來(lái)分配在這個(gè)出錯(cuò)機(jī)器上的瀏覽器客戶端不會(huì)被自動(dòng)轉(zhuǎn)移到另外的服務(wù)器上, 必須重新啟動(dòng)瀏覽器才能將請(qǐng)求分配到另外一臺(tái)服務(wù)器上去.
# Reverse Proxy and Load Balance ##############################################
###############################################################################
# 1)簡(jiǎn)單的反向代理
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /1 http://localhost:8080/test
#ProxyPassReverse /1 http://localhost:8080/test
ProxyPass /2 http://localhost:18080/test
#ProxyPassReverse /2 http://localhost:18080/test
# 2)非 stickysession 的 balance
ProxyPass /3 balancer://non-sticky-cluster nofailover=On
<Proxy balancer://non-sticky-cluster>
BalancerMember http://localhost:8080/test
BalancerMember http://localhost:18080/test smax=10
</Proxy>
# 3)stickysession 的 balance
ProxyPass /4 balancer://sticky-cluster stickysession=STICK_PORT_TOKEN nofailover=On
<Proxy balancer://sticky-cluster>
BalancerMember http://localhost:8080/test route=8080
BalancerMember http://localhost:18080/test route=18080 loadfactor=2
</Proxy>
因?yàn)橐鲆粋€(gè)不對(duì)稱加密/解密相關(guān)的應(yīng)用(其實(shí)是想用在軟件的注冊(cè)控制方面), 本來(lái)的想法是去找找有沒(méi)有 RSA
加密/解密的源代碼的例子, 結(jié)果在 sourceforge 找到來(lái) bmrsa(RSA Cryptographic Text
Processor), 可以從 http://sourceforge.net/projects/bmrsa 訪問(wèn).
項(xiàng)目 README 里的描述:
This program is an exercise in prime number generation,
RSA key generation, RSA encryption and conversion between
decimal, hexadecimal, base64 and text. Take note that RSA
is generally not used to encrypt entire messages because it
is too slow. It is normally used to encrypt keys used in
other encryption algorithms or other relatively small
values. For more detailed documentation, execute bmrsa
from a command line without passing any arguments. You will
probably want to pipe the output through more like this
export PATH=.:$PATH
, 將當(dāng)前目錄加入 PATH;bmrsa -mkh -g 48 -f _keys.768-bit.txt
public mod=7ECF58B12DAB4557B9B39589D26CA444BDF96...
private key=3C4B0676352943057A3B6B0D54A8B0E56265B...
private p=ED66018402DEED19082ED5EA500B778DAFA7A0...
private q=88BF09780DC8C15C429AE72AC6F91B0795C4E68...
public mod=7ECF58B12DAB4557B9B39589D26CA444BDF96...
public key=BA562B6FEF44681C8937C54FCB985B205DAF0A...
NAME=thinkbase
URL =http://www.thinkbase.net
IP =218.81.120.31
bmrsa -mkh -mit -moh -pr -f _private-key.768-bit.txt <_demo.txt >_demo.enc.txt
bmrsa -mkh -mih -mot -pu -f _public-key.768-bit.txt <_demo.enc.txt具體的運(yùn)行界面參見(jiàn)下圖:
總是覺(jué)得編寫(xiě) JNI (Java Native Interface) 程序是件復(fù)雜的事情, 于是開(kāi)始漫無(wú)目的地搜索是否有簡(jiǎn)單一點(diǎn)的方法, 倒是有些商業(yè)軟件提供這樣的功能, 比如 http://www.jniwrapper.com 就提供了通過(guò) Java 直接調(diào)用 DLL 的功能(可惜是商業(yè)軟件, 哈哈).
搜索中無(wú)意到了 swig 的網(wǎng)站( http://www.swig.org ), 看到一個(gè)用 swig 產(chǎn)生 Java 模塊的例子(原來(lái)知道 swig 是因?yàn)?python 的緣故), 于是就照著例子自己嘗試了一下(比例子稍微復(fù)雜一點(diǎn), 另外我是用 mingw 上的 gcc 進(jìn)行編譯的).
源代碼包括 3 個(gè)文件, Example.c, Example.i, net/thinkbase/test/Test.java
:
/**?Example.c?****************************************************************/
|
/**?Example.i?****************************************************************/
|
/**?net/thinkbase/test/Test.java?*********************************************/
|
mkdir "net/thinkbase/test/swig"
mkdir ".out"
swig -java -package net.thinkbase.test.swig -outdir net/thinkbase/test/swig Example.i
gcc -c Example.c -o .out/Example.o -I%JAVA_HOME%/include -I%JAVA_HOME%/include/win32
gcc -c Example_wrap.c -o .out/Example_wrap.o -I%JAVA_HOME%/include -I%JAVA_HOME%/include/win32
gcc -shared .out/Example.o .out/Example_wrap.o -mno-cygwin -Wl,--add-stdcall-alias -o .out/Example.dll
javac -sourcepath . net/thinkbase/test/Test.java -d .out
java -cp .out -Djava.library.path=.out net.thinkbase.test.Test
配置適用于正式使用環(huán)境下的Tomcat Web服務(wù)器雙向SSL認(rèn)證
在 Tomcat 5.5 上的配置實(shí)例
Aspirin(阿司匹林, https://aspirin.dev.java.net/ ), 按照網(wǎng)站上的介紹, "Aspirin is an embeddable send-only SMTP server.".
為什么叫阿司匹林呢? 因?yàn)樗褪怯脕?lái)解決令人頭痛的發(fā)送郵件問(wèn)題的.
Aspirin 項(xiàng)目中使用了部分來(lái)自 Apache James (Apache 著名的郵件服務(wù)器項(xiàng)目, http://james.apache.org/ )的代碼, 通過(guò)建立一個(gè)小型的 SMTP 服務(wù)器, 實(shí)現(xiàn)了一個(gè)不需要外部 SMTP 服務(wù)器的, 簡(jiǎn)單的 mail 發(fā)送工具;
不依賴于外部 SMTP 服務(wù)器, 意味著我們?cè)谕ㄟ^(guò) Java 程序發(fā)送郵件時(shí), 可以不再需要安裝和配置 postfix, sendmail 等 email 服務(wù)器, 使應(yīng)用程序配置更簡(jiǎn)單, 更方便做到跨平臺(tái).
使用 Aspirin 發(fā)送郵件的代碼很簡(jiǎn)單, 代碼片斷如下:
...
|
類別標(biāo)簽: NTLM | subclipse | subversion | ubuntu
一開(kāi)始使用 subclipse (Eclipse 的 Subversion 插件)不能通過(guò) NTLM 認(rèn)證訪問(wèn) SVN 服務(wù)器, 始終報(bào)告如下圖所示的錯(cuò)誤(svn: HTTP authorization method 'NTLM' is not supported):
sudo dpkg -i libsvn-javahl_1.3.1-3ubuntu1_i386.deb進(jìn)行安裝, 卻被告知依賴的 libsvn0 還沒(méi)有被安裝, 直接用 apt-get install libsvn0 安裝后再次使用 dpkg -i 安裝下載的 libsvn-javahl_1.3.1-3ubuntu1_i386.deb, 卻被告知 libsvn0 版本不對(duì):
xxx@xxxlinux:~/Desktop$ sudo dpkg -i libsvn-javahl_1.3.1-3ubuntu1_i386.deb于是又從 http://packages.ubuntulinux.org/dapper/devel/libsvn-javahl 頁(yè)面上找到 libsvn-javahl 的依賴庫(kù) libsvn0 (= 1.3.1-3ubuntu1) 的 deb 文件, 然后安裝時(shí)又被告知依賴于其它的模塊(未安裝或者版本不對(duì)), 于是繼續(xù)使用 apt-get install 安裝這些模塊, 或者繼續(xù)在 http://packages.ubuntulinux.org/dapper/devel/ 下面各個(gè)依賴模塊的頁(yè)面上找到這些下一層的依賴模塊的 deb 安裝包, 如此循環(huán)往復(fù), 花了不少時(shí)間, 總算把 JavaHL 安裝好了.
選中了曾被取消選擇的軟件包 libsvn-javahl。
(正在讀取數(shù)據(jù)庫(kù) ... 系統(tǒng)當(dāng)前總共安裝有 60192 個(gè)文件和目錄。)
正在解壓縮 libsvn-javahl (從 libsvn-javahl_1.3.1-3ubuntu1_i386.deb) ...
dpkg:依賴關(guān)系問(wèn)題使得 libsvn-javahl 的配置工作不能繼續(xù):
libsvn-javahl 依賴于 libsvn0 (= 1.3.1-3ubuntu1);然而:
系統(tǒng)里的 libsvn0 的版本是 1.2.0-1ubuntu1.
dpkg:處理 libsvn-javahl (--install)時(shí)出錯(cuò):
依賴關(guān)系問(wèn)題 - 仍未被配置
在處理時(shí)有錯(cuò)誤發(fā)生:
libsvn-javahl
sudo ln -s /usr/lib/jni/libsvnjavahl-1.so libsvnjavahl-1.so然后再啟動(dòng) Eclipse, 進(jìn)入 SVN 的設(shè)置頁(yè)面, 果然現(xiàn)在可以選擇 "JavaHL (JNI)" 方式了:
首先說(shuō)一下, 這篇文章主要是針對(duì) Java 開(kāi)發(fā)者的, 如果是做 Windows 開(kāi)發(fā), 那么基本上沒(méi)有辦法把工作環(huán)境移植到 Ubuntu 上的(當(dāng)然也不能說(shuō)死, 也許以后可以使用 WINE 試試, 呵呵).
LANGUAGE="zh_CN:zh:en_US:en"
GST_ID3_TAG_ENCODING=GBK
LANG=zh_CN.GBK
LC_CTYLE=zh_CN.GBK