锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
鍘嬬緝澶勭悊鐨勫伐搴忔槸鍦ㄨ繃婊ら摼閲岄潰澶勭悊鐨?鍦ㄨ嚜宸辯殑搴旂敤鐨剋eb.xml閲岄潰鎻忚堪:
GzipFilter
compressionFilters.CompressionFilter
GzipFilter
*
榪欓噷CompressionFilter鏄疐ilter鎺ュ彛鐨勭被,鍦ㄥ疄鐜癲oFilter鏂規硶鐨勬椂鍊?
wrappedResponse = new CompressionServletResponseWrapper((HttpServletResponse)response);
chain.doFilter(request, wrappedResponse);
瀹為檯涓婃槸鐢–ompressionServletResponseWrapper鏉ュ鐞嗘湇鍔″櫒绔殑response,鎴戜滑閮界煡閬搄sp鏄劇ず鐨勫唴瀹規槸 response閲岄潰鐨刼ut杈撳嚭鐨勬祦浜х敓鍑烘潵鐨?閭d箞鐢–ompressionServletResponseWrapper灝唎ut鐨勬祦閲囩敤gzip鍘嬬緝涓嬪氨鍙互瀹屾垚浠誨姟浜?CompressionResponseStream stream = new CompressionResponseStream(response);
鍦–ompressionResponseStream閲岄潰灝唎utputstream灝佽浜嗕竴涓?BR>GZIPOutputStream gzipstream = new GZIPOutputStream(output);
response.addHeader("Content-Encoding", "gzip");
鍏蜂綋浠g爜搴旇鍦ㄧ綉涓婁篃鑳芥壘鍒頒簡.
緙栬呮寜錛氱幇鍦ㄥ紑鍙慗ava Web搴旂敤錛屽緩绔嬪拰閮ㄧ講Web鍐呭鏄竴浠跺緢綆鍗曠殑宸ヤ綔銆備嬌鐢↗akarta
Tomcat浣滀負Servlet鍜孞SP瀹瑰櫒鐨勪漢宸茬粡閬嶅強鍏ㄤ笘鐣屻俆omcat鍏鋒湁鍏嶈垂銆佽法騫沖彴絳夎澶氱壒鎬э紝騫朵笖鏇存柊寰楀緢蹇紝鐜板湪闈炲父鐨勬祦琛屻?
浣犳墍闇瑕佸仛鐨勫氨鏄細鎸夌収浣犵殑闇姹傞厤緗甌omcat錛屽彧瑕佷綘姝g‘閰嶇疆錛孴omcat涓鑸兘鑳介傚悎浣犵殑瑕佹眰銆傚笇鏈涘浣犳湁鎵甯姪銆?
1錛?閰嶇疆緋葷粺綆$悊錛圓dmin Web Application錛?
澶у鏁板晢涓氬寲鐨凧2EE鏈嶅姟鍣ㄩ兘鎻愪緵涓涓姛鑳藉己澶х殑綆$悊鐣岄潰錛屼笖澶ч兘閲囩敤鏄撲簬鐞嗚В鐨刉eb搴旂敤鐣岄潰銆俆omcat鎸夌収鑷繁鐨勬柟寮忥紝鍚屾牱鎻愪緵涓涓垚鐔熺殑綆$悊宸ュ叿錛屽茍涓斾笣姣笉閫婁簬閭d簺鍟嗕笟鍖栫殑绔炰簤瀵規墜銆俆omcat鐨凙dmin
Web Application鏈鍒濆湪4.1鐗堟湰鏃跺嚭鐜幫紝褰撴椂鐨勫姛鑳藉寘鎷鐞哻ontext銆乨ata
source銆乽ser鍜実roup絳夈傚綋鐒朵篃鍙互綆$悊鍍忓垵濮嬪寲鍙傛暟錛寀ser銆乬roup銆乺ole鐨勫縐嶆暟鎹簱綆$悊絳夈傚湪鍚庣畫鐨勭増鏈腑錛岃繖浜涘姛鑳藉皢寰楀埌寰堝ぇ鐨勬墿灞曪紝浣嗙幇鏈夌殑鍔熻兘宸茬粡闈炲父瀹炵敤浜嗐?
Admin Web Application琚畾涔夊湪鑷姩閮ㄧ講鏂囦歡錛欳ATALINA_BASE/webapps/admin.xml
銆傦紙璇戣呮敞錛欳ATALINA_BASE鍗硉omcat瀹夎鐩綍涓嬬殑server鐩綍錛?
浣犲繀欏葷紪杈戣繖涓枃浠訛紝浠ョ‘瀹欳ontext涓殑docBase鍙傛暟鏄粷瀵硅礬寰勩備篃灝辨槸璇達紝CATALINA_BASE/webapps/admin.xml
鐨勮礬寰勬槸緇濆璺緞銆備綔涓哄彟澶栦竴縐嶉夋嫨錛屼綘涔熷彲浠ュ垹闄よ繖涓嚜鍔ㄩ儴緗叉枃浠訛紝鑰屽湪server.xml鏂囦歡涓緩绔嬩竴涓狝dmin Web
Application鐨刢ontext錛屾晥鏋滄槸涓鏍風殑銆備綘涓嶈兘綆$悊Admin Web
Application榪欎釜搴旂敤錛屾崲鑰岃█涔嬶紝闄や簡鍒犻櫎CATALINA_BASE/webapps/admin.xml 錛屼綘鍙兘浠涔堥兘鍋氫笉浜嗐?
濡傛灉浣犱嬌鐢║serDatabaseRealm錛堥粯璁わ級錛屼綘灝嗛渶瑕佹坊鍔犱竴涓猽ser浠ュ強涓涓猺ole鍒癈ATALINA_BASE/conf/tomcat-users.xml
鏂囦歡涓備綘緙栬緫榪欎釜鏂囦歡錛屾坊鍔犱竴涓悕鍙渁dmin鈥濈殑role 鍒拌鏂囦歡涓紝濡備笅錛?
<role name="admin"/>
浣犲悓鏍烽渶瑕佹湁涓涓敤鎴鳳紝騫朵笖榪欎釜鐢ㄦ埛鐨勮鑹叉槸鈥渁dmin鈥濄傝薄瀛樺湪鐨勭敤鎴烽偅鏍鳳紝娣誨姞涓涓敤鎴鳳紙鏀瑰彉瀵嗙爜浣垮叾鏇村姞瀹夊叏錛夛細
<user name="admin" password="deep_dark_secret" roles="admin"/>
褰撲綘瀹屾垚榪欎簺姝ラ鍚庯紝璇烽噸鏂板惎鍔═omcat錛岃闂?A href="http://localhost:8080/admin">http://localhost:8080/admin錛屼綘灝嗙湅鍒頒竴涓櫥褰曠晫闈€侫dmin
Web Application閲囩敤鍩轟簬瀹瑰櫒綆$悊鐨勫畨鍏ㄦ満鍒訛紝騫墮噰鐢ㄤ簡Jakarta
Struts妗嗘灦銆備竴鏃︿綘浣滀負鈥渁dmin鈥濊鑹茬殑鐢ㄦ埛鐧誨綍綆$悊鐣岄潰錛屼綘灝嗚兘澶熶嬌鐢ㄨ繖涓鐞嗙晫闈㈤厤緗甌omcat銆?
2錛庨厤緗簲鐢ㄧ鐞嗭紙Manager Web Application錛?
Manager Web Application璁╀綘閫氳繃涓涓瘮Admin Web
Application鏇翠負綆鍗曠殑鐢ㄦ埛鐣岄潰錛屾墽琛屼竴浜涚畝鍗曠殑Web搴旂敤浠誨姟銆?
Manager Web Application琚瀹氫箟鍦ㄤ竴涓嚜鍔ㄩ儴緗叉枃浠朵腑錛?
CATALINA_BASE/webapps/manager.xml 銆?
浣犲繀欏葷紪杈戣繖涓枃浠訛紝浠ョ‘淇漜ontext鐨刣ocBase鍙傛暟鏄粷瀵硅礬寰勶紝涔熷氨鏄CATALINA_HOME/server/webapps/manager鐨勭粷瀵硅礬寰勩傦紙璇戣呮敞錛欳ATALINA_HOME鍗硉omcat瀹夎鐩綍錛?
濡傛灉浣犱嬌鐢ㄧ殑鏄疷serDatabaseRealm錛岄偅涔堜綘闇瑕佹坊鍔犱竴涓鑹插拰涓涓敤鎴峰埌CATALINA_BASE/conf/tomcat-users.xml鏂囦歡涓傛帴涓嬫潵錛岀紪杈戣繖涓枃浠訛紝娣誨姞涓涓悕涓衡渕anager鈥濈殑瑙掕壊鍒拌鏂囦歡涓細
<role name=鈥漨anager鈥?gt;
浣犲悓鏍烽渶瑕佹湁涓涓鑹蹭負鈥渕anager鈥濈殑鐢ㄦ埛銆傚儚宸茬粡瀛樺湪鐨勭敤鎴烽偅鏍鳳紝娣誨姞涓涓柊鐢ㄦ埛錛堟敼鍙樺瘑鐮佷嬌鍏舵洿鍔犲畨鍏級錛?
<user name="manager" password="deep_dark_secret" roles="manager"/>
鐒跺悗閲嶆柊鍚姩Tomcat錛岃闂?A href="http://localhost/manager/list">http://localhost/manager/list錛屽皢鐪嬪埌涓涓緢鏈寸礌鐨勬枃鏈瀷綆$悊鐣岄潰錛屾垨鑰呰闂?A href="http://localhost/manager/html/list">http://localhost/manager/html/list錛屽皢鐪嬪埌涓涓狧MTL鐨勭鐞嗙晫闈€備笉綆℃槸鍝鏂瑰紡閮借鏄庝綘鐨凪anager
Web Application鐜板湪宸茬粡鍚姩浜嗐?
Manager
application璁╀綘鍙互鍦ㄦ病鏈夌郴緇熺鐞嗙壒鏉冪殑鍩虹涓婏紝瀹夎鏂扮殑Web搴旂敤錛屼互鐢ㄤ簬嫻嬭瘯銆傚鏋滄垜浠湁涓涓柊鐨剋eb搴旂敤浣嶄簬/home/user/hello涓嬪湪錛屽茍涓旀兂鎶婂畠瀹夎鍒?
/hello涓嬶紝涓轟簡嫻嬭瘯榪欎釜搴旂敤錛屾垜浠彲浠ヨ繖涔堝仛錛屽湪絎竴涓枃浠舵涓緭鍏モ?hello鈥濓紙浣滀負璁塊棶鏃剁殑path錛夛紝鍦ㄧ浜屼釜鏂囨湰妗嗕腑杈撳叆鈥渇ile:/home/user/hello鈥濓紙浣滀負Config
URL錛夈?
Manager
application榪樺厑璁鎬綘鍋滄銆侀噸鏂板惎鍔ㄣ佺Щ闄や互鍙婇噸鏂伴儴緗蹭竴涓獁eb搴旂敤銆傚仠姝竴涓簲鐢ㄤ嬌鍏舵棤娉曡璁塊棶錛屽綋鏈夌敤鎴峰皾璇曡闂繖涓鍋滄鐨勫簲鐢ㄦ椂錛屽皢鐪嬪埌涓涓?03鐨勯敊璇??鈥?03
- This application is not currently available鈥濄?
縐婚櫎涓涓獁eb搴旂敤錛屽彧鏄寚浠嶵omcat鐨勮繍琛屾嫹璐濅腑鍒犻櫎浜嗚搴旂敤錛屽鏋滀綘閲嶆柊鍚姩Tomcat錛岃鍒犻櫎鐨勫簲鐢ㄥ皢鍐嶆鍑虹幇錛堜篃灝辨槸璇達紝縐婚櫎騫朵笉鏄寚浠庣‖鐩樹笂鍒犻櫎錛夈?
3錛庨儴緗蹭竴涓獁eb搴旂敤
鏈変袱涓姙娉曞彲浠ュ湪緋葷粺涓儴緗瞱eb鏈嶅姟銆?
1> 鎷瘋礉浣犵殑WAR鏂囦歡鎴栬呬綘鐨剋eb搴旂敤鏂囦歡澶癸紙鍖呮嫭璇eb鐨勬墍鏈夊唴瀹癸級鍒癈ATALINA_BASE/webapps鐩綍涓嬨?
2>
涓轟綘鐨剋eb鏈嶅姟寤虹珛涓涓彧鍖呮嫭context鍐呭鐨刋ML鐗囨柇鏂囦歡錛屽茍鎶婅鏂囦歡鏀懼埌CATALINA_BASE/webapps鐩綍涓嬨傝繖涓獁eb搴旂敤鏈韓鍙互瀛樺偍鍦ㄧ‖鐩樹笂鐨勪換浣曞湴鏂廣?
濡傛灉浣犳湁涓涓猈AR鏂囦歡錛屼綘鑻ユ兂閮ㄧ講瀹冿紝鍒欏彧闇瑕佹妸璇ユ枃浠剁畝鍗曠殑鎷瘋礉鍒癈ATALINA_BASE/webapps鐩綍涓嬪嵆鍙紝鏂囦歡蹇呴』浠モ?war鈥濅綔涓烘墿灞曞悕銆備竴鏃omcat鐩戝惉鍒拌繖涓枃浠訛紝瀹冨皢錛堢己鐪佺殑錛夎В寮璇ユ枃浠跺寘浣滀負涓涓瓙鐩綍錛屽茍浠AR鏂囦歡鐨勬枃浠跺悕浣滀負瀛愮洰褰曠殑鍚嶅瓧銆傛帴涓嬫潵錛孴omcat灝嗗湪鍐呭瓨涓緩绔嬩竴涓猚ontext錛屽氨濂借薄浣犲湪server.xml鏂囦歡閲屽緩绔嬩竴鏍楓傚綋鐒訛紝鍏朵粬蹇呴渶鐨勫唴瀹癸紝灝嗕粠server.xml涓殑DefaultContext鑾峰緱銆?
閮ㄧ講web搴旂敤鐨勫彟涓縐嶆柟寮忔槸鍐欎竴涓狢ontext
XML鐗囨柇鏂囦歡錛岀劧鍚庢妸璇ユ枃浠舵嫹璐濆埌CATALINA_BASE/webapps鐩綍涓嬨備竴涓狢ontext鐗囨柇騫墮潪涓涓畬鏁寸殑XML鏂囦歡錛岃屽彧鏄竴涓猚ontext鍏冪礌錛屼互鍙婂璇ュ簲鐢ㄧ殑鐩稿簲鎻忚堪銆傝繖縐嶇墖鏂枃浠跺氨鍍忔槸浠巗erver.xml涓垏鍙栧嚭鏉ョ殑context鍏冪礌涓鏍鳳紝鎵浠ヨ繖縐嶇墖鏂鍛藉悕涓衡渃ontext鐗囨柇鈥濄?
涓句釜渚嬪瓙錛屽鏋滄垜浠兂閮ㄧ講涓涓悕鍙玀yWebApp.war鐨勫簲鐢紝璇ュ簲鐢ㄤ嬌鐢╮ealm浣滀負璁塊棶鎺у埗鏂瑰紡錛屾垜浠彲浠ヤ嬌鐢ㄤ笅闈㈣繖涓墖鏂細
<!--
Context fragment for deploying MyWebApp.war
-->
<Context path="/demo" docBase="webapps/MyWebApp.war"
debug="0" privileged="true">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Context>
鎶婅鐗囨柇鍛藉悕涓衡淢yWebApp.xml鈥濓紝鐒跺悗鎷瘋礉鍒癈ATALINA_BASE/webapps鐩綍涓嬨?
榪欑context鐗囨柇鎻愪緵浜嗕竴縐嶄究鍒╃殑鏂規硶鏉ラ儴緗瞱eb搴旂敤錛屼綘涓嶉渶瑕佺紪杈憇erver.xml錛岄櫎闈炰綘鎯蟲敼鍙樼己鐪佺殑閮ㄧ講鐗規э紝瀹夎涓涓柊鐨剋eb搴旂敤鏃朵笉闇瑕侀噸鍚姩Tomcat銆?BR> 4錛庨厤緗櫄鎷熶富鏈猴紙Virtual Hosts錛?
鍏充簬server.xml涓淗ost鈥濊繖涓厓绱狅紝鍙湁鍦ㄤ綘璁劇疆铏氭嫙涓繪満鐨勬墠闇瑕佷慨鏀廣傝櫄鎷熶富鏈烘槸涓縐嶅湪涓涓獁eb鏈嶅姟鍣ㄤ笂鏈嶅姟澶氫釜鍩熷悕鐨勬満鍒訛紝瀵規瘡涓煙鍚嶈岃█錛岄兘濂借薄鐙韓浜嗘暣涓富鏈恒傚疄闄呬笂錛屽ぇ澶氭暟鐨勫皬鍨嬪晢鍔$綉绔欓兘鏄噰鐢ㄨ櫄鎷熶富鏈哄疄鐜扮殑錛岃繖涓昏鏄洜涓鴻櫄鎷熶富鏈鴻兘鐩存帴榪炴帴鍒癐nternet騫舵彁渚涚浉搴旂殑甯﹀錛屼互淇濋殰鍚堢悊鐨勮闂搷搴旈熷害錛屽彟澶栬櫄鎷熶富鏈鴻繕鑳芥彁渚涗竴涓ǔ瀹氱殑鍥哄畾IP銆?
鍩轟簬鍚嶅瓧鐨勮櫄鎷熶富鏈哄彲浠ヨ寤虹珛鍦ㄤ換浣晈eb鏈嶅姟鍣ㄤ笂錛屽緩绔嬬殑鏂規硶灝辨槸閫氳繃鍦ㄥ煙鍚嶆湇鍔″櫒錛圖NS錛変笂寤虹珛IP鍦板潃鐨勫埆鍚嶏紝騫朵笖鍛婅瘔web鏈嶅姟鍣ㄦ妸鍘誨線涓嶅悓鍩熷悕鐨勮姹傚垎鍙戝埌鐩稿簲鐨勭綉欏電洰褰曘傚洜涓鴻繖綃囨枃绔犱富瑕佹槸璁睺omcat錛屾垜浠笉鍑嗗浠嬬粛鍦ㄥ悇縐嶆搷浣滅郴緇熶笂璁劇疆DNS鐨勬柟娉曪紝濡傛灉浣犲湪榪欐柟闈㈤渶瑕佸府鍔╋紝璇峰弬鑰冦奃NS
and Bind銆嬩竴涔︼紝浣滆呮槸Paul Albitz and Cricket Liu
(O'Reilly)銆備負浜嗙ず鑼冩柟渚匡紝鎴戝皢浣跨敤涓涓潤鎬佺殑涓繪満鏂囦歡錛屽洜涓鴻繖鏄祴璇曞埆鍚嶆渶綆鍗曠殑鏂規硶銆?
鍦═omcat涓嬌鐢ㄨ櫄鎷熶富鏈猴紝浣犻渶瑕佽緗瓺NS鎴栦富鏈烘暟鎹備負浜嗘祴璇曪紝涓烘湰鍦癐P璁劇疆涓涓狪P鍒悕灝辮凍澶熶簡錛屾帴涓嬫潵錛屼綘闇瑕佸湪server.xml涓坊鍔犲嚑琛屽唴瀹癸紝濡備笅錛?
<Server port="8005" shutdown="SHUTDOWN" debug="0">
<Service name="Tomcat-Standalone">
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8080" minProcessors="5" maxProcessors="75"
enableLookups="true" redirectPort="8443"/>
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8443" minProcessors="5" maxProcessors="75"
acceptCount="10" debug="0" scheme="https" secure="true"/>
<Factory className="org.apache.coyote.tomcat4.CoyoteServerSocketFactory"
clientAuth="false" protocol="TLS" />
</Connector>
<Engine name="Standalone" defaultHost="localhost" debug="0">
<!-- This Host is the default Host -->
<Host name="localhost" debug="0" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="ROOT" debug="0"/>
<Context path="/orders" docBase="/home/ian/orders" debug="0"
reloadable="true" crossContext="true">
</Context>
</Host>
<!-- This Host is the first "Virtual Host": http://www.example.com/ -->
<Host name="<Context path="" docBase="."/>
</Host>
</Engine>
</Service>
</Server>
Tomcat鐨剆erver.xml鏂囦歡錛屽湪鍒濆鐘舵佷笅錛屽彧鍖呮嫭涓涓櫄鎷熶富鏈猴紝浣嗘槸瀹冨鏄撹鎵╁厖鍒版敮鎸佸涓櫄鎷熶富鏈恒傚湪鍓嶉潰鐨勪緥瀛愪腑灞曠ず鐨勬槸涓涓畝鍗曠殑server.xml鐗堟湰錛屽叾涓矖浣撻儴鍒嗗氨鏄敤浜庢坊鍔犱竴涓櫄鎷熶富鏈恒傛瘡涓涓狧ost鍏冪礌蹇呴』鍖呮嫭涓涓垨澶氫釜context鍏冪礌錛屾墍鍖呭惈鐨刢ontext鍏冪礌涓繀欏繪湁涓涓槸榛樿鐨刢ontext錛岃繖涓粯璁ょ殑context鐨勬樉紺鴻礬寰勫簲璇ヤ負絀猴紙渚嬪錛宲ath=鈥濃濓級銆?
5錛庨厤緗熀紜楠岃瘉錛圔asic Authentication錛?
瀹瑰櫒綆$悊楠岃瘉鏂規硶鎺у埗鐫褰撶敤鎴瘋闂彈淇濇姢鐨剋eb搴旂敤璧勬簮鏃訛紝濡備綍榪涜鐢ㄦ埛鐨勮韓浠介壌鍒傚綋涓涓獁eb搴旂敤浣跨敤浜咮asic
Authentication錛圔ASIC鍙傛暟鍦╳eb.xml鏂囦歡涓璦uto-method鍏冪礌涓緗級錛岃屾湁鐢ㄦ埛璁塊棶鍙椾繚鎶ょ殑web搴旂敤鏃訛紝Tomcat灝嗛氳繃HTTP
Basic
Authentication鏂瑰紡錛屽脊鍑轟竴涓璇濇錛岃姹傜敤鎴瘋緭鍏ョ敤鎴峰悕鍜屽瘑鐮併傚湪榪欑楠岃瘉鏂規硶涓紝鎵鏈夊瘑鐮佸皢琚互64浣嶇殑緙栫爜鏂瑰紡鍦ㄧ綉緇滀笂浼犺緭銆?
娉ㄦ剰錛氫嬌鐢˙asic
Authentication閫氳繃琚涓烘槸涓嶅畨鍏ㄧ殑錛屽洜涓哄畠娌℃湁寮哄仴鐨勫姞瀵嗘柟娉曪紝闄ら潪鍦ㄥ鎴風鍜屾湇鍔″櫒绔兘浣跨敤HTTPS鎴栬呭叾浠栧瘑鐮佸姞瀵嗙爜鏂瑰紡錛堟瘮濡傦紝鍦ㄤ竴涓櫄鎷熺浜虹綉緇滀腑錛夈傝嫢娌℃湁棰濆鐨勫姞瀵嗘柟娉曪紝緗戠粶綆$悊鍛樺皢鑳藉鎴幏錛堟垨婊ョ敤錛夌敤鎴風殑瀵嗙爜銆備絾鏄紝濡傛灉浣犳槸鍒氬紑濮嬩嬌鐢═omcat錛屾垨鑰呬綘鎯沖湪浣犵殑web搴旂敤涓祴璇曚竴涓嬪熀浜庡鍣ㄧ殑瀹夊叏綆$悊錛孊asic
Authentication榪樻槸闈炲父鏄撲簬璁劇疆鍜屼嬌鐢ㄧ殑銆傚彧闇瑕佹坊鍔犲拰涓や釜鍏冪礌鍒頒綘鐨剋eb搴旂敤鐨剋eb.xml鏂囦歡涓紝騫朵笖鍦–ATALINA_BASE/conf/tomcat-users.xml
鏂囦歡涓坊鍔犻傚綋鐨勫拰鍗沖彲錛岀劧鍚庨噸鏂板惎鍔═omcat銆?
涓嬮潰渚嬪瓙涓殑web.xml鎽樿嚜涓涓勘涔愰儴浼氬憳緗戠珯緋葷粺錛岃緋葷粺涓彧鏈塵ember鐩綍琚繚鎶よ搗鏉ワ紝騫朵嬌鐢˙asic
Authentication榪涜韜喚楠岃瘉銆傝娉ㄦ剰錛岃繖縐嶆柟寮忓皢鏈夋晥鐨勪唬鏇緼pache web鏈嶅姟鍣ㄤ腑鐨?htaccess鏂囦歡銆?
<!--
Define the Members-only area, by defining
a "Security Constraint" on this Application, and
mapping it to the subdirectory (URL) that we want
to restrict.
-->
<security-constraint>
<web-resource-collection>
<web-resource-name>
Entire Application
</web-resource-name>
<url-pattern>/members/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>member</role-name>
</auth-constraint>
</security-constraint>
<!-- Define the Login Configuration for this Application -->
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>My Club Members-only Area</realm-name>
</login-config>
6錛庨厤緗崟鐐圭櫥褰曪紙Single Sign-On錛?
涓鏃︿綘璁劇疆浜唕ealm鍜岄獙璇佺殑鏂規硶錛屼綘灝遍渶瑕佽繘琛屽疄闄呯殑鐢ㄦ埛鐧誨綍澶勭悊銆備竴鑸鏉ワ紝瀵圭敤鎴瘋岃█鐧誨綍緋葷粺鏄竴浠跺緢楹葷儲鐨勪簨鎯咃紝浣犲繀欏誨敖閲忓噺灝戠敤鎴風櫥褰曢獙璇佺殑嬈℃暟銆備綔涓虹己鐪佺殑鎯呭喌錛屽綋鐢ㄦ埛絎竴嬈¤姹傚彈淇濇姢鐨勮祫婧愭椂錛屾瘡涓涓獁eb搴旂敤閮戒細瑕佹眰鐢ㄦ埛鐧誨綍銆傚鏋滀綘榪愯浜嗗涓獁eb搴旂敤錛屽茍涓旀瘡涓簲鐢ㄩ兘闇瑕佽繘琛屽崟鐙殑鐢ㄦ埛楠岃瘉錛岄偅榪欑湅璧鋒潵灝辨湁鐐瑰儚浣犲湪涓庝綘鐨勭敤鎴鋒悘鏂椼傜敤鎴蜂滑涓嶇煡閬撴庢牱鎵嶈兘鎶婂涓垎紱葷殑搴旂敤鏁村悎鎴愪竴涓崟鐙殑緋葷粺錛屾墍鏈変粬浠篃灝變笉鐭ラ亾浠栦滑闇瑕佽闂灝戜釜涓嶅悓鐨勫簲鐢紝鍙槸寰堣糠鎯戯紝涓轟粈涔堟昏涓嶅仠鐨勭櫥褰曘?
Tomcat 4鐨勨渟ingle
sign-on鈥濈壒鎬у厑璁哥敤鎴峰湪璁塊棶鍚屼竴铏氭嫙涓繪満涓嬫墍鏈墂eb搴旂敤鏃訛紝鍙渶鐧誨綍涓嬈°備負浜嗕嬌鐢ㄨ繖涓姛鑳斤紝浣犲彧闇瑕佸湪Host涓婃坊鍔犱竴涓猄ingleSignOn
Valve鍏冪礌鍗沖彲錛屽涓嬫墍紺猴細
<Valve className="org.apache.catalina.authenticator.SingleSignOn"
debug="0"/>
鍦═omcat鍒濆瀹夎鍚庯紝server.xml鐨勬敞閲婇噷闈㈠寘鎷琒ingleSignOn
Valve閰嶇疆鐨勪緥瀛愶紝浣犲彧闇瑕佸幓鎺夋敞閲婏紝鍗沖彲浣跨敤銆傞偅涔堬紝浠諱綍鐢ㄦ埛鍙鐧誨綍榪囦竴涓簲鐢紝鍒欏浜庡悓涓铏氭嫙涓繪満涓嬬殑鎵鏈夊簲鐢ㄥ悓鏍鋒湁鏁堛?
浣跨敤single sign-on valve鏈変竴浜涢噸瑕佺殑闄愬埗錛?
1>
value蹇呴』琚厤緗拰宓屽鍦ㄧ浉鍚岀殑Host鍏冪礌閲岋紝騫朵笖鎵鏈夐渶瑕佽繘琛屽崟鐐歸獙璇佺殑web搴旂敤錛堝繀欏婚氳繃context鍏冪礌瀹氫箟錛夐兘浣嶄簬璇ost涓嬨?
2> 鍖呮嫭鍏變韓鐢ㄦ埛淇℃伅鐨剅ealm蹇呴』琚緗湪鍚屼竴綰ost涓垨鑰呭祵濂椾箣澶栥?
3> 涓嶈兘琚玞ontext涓殑realm瑕嗙洊銆?
4>
浣跨敤鍗曠偣鐧誨綍鐨剋eb搴旂敤鏈濂戒嬌鐢ㄤ竴涓猅omcat鐨勫唴緗殑楠岃瘉鏂瑰紡錛堣瀹氫箟鍦╳eb.xml涓殑涓級錛岃繖姣旇嚜瀹氫箟鐨勯獙璇佹柟寮忓己錛孴omcat鍐呯疆鐨勭殑楠岃瘉鏂瑰紡鍖呮嫭basic銆乨igest銆乫orm鍜宑lient-cert銆?
5>
濡傛灉浣犱嬌鐢ㄥ崟鐐圭櫥褰曪紝榪樺笇鏈涢泦鎴愪竴涓涓夋柟鐨剋eb搴旂敤鍒頒綘鐨勭綉绔欎腑鏉ワ紝騫朵笖榪欎釜鏂扮殑web搴旂敤浣跨敤瀹冭嚜宸辯殑楠岃瘉鏂瑰紡錛岃屼笉浣跨敤瀹瑰櫒綆$悊瀹夊叏錛岄偅浣犲熀鏈笂灝辨病鎷涗簡銆備綘鐨勭敤鎴鋒瘡嬈$櫥褰曞師鏉ユ墍鏈夊簲鐢ㄦ椂闇瑕佺櫥褰曚竴嬈★紝騫朵笖鍦ㄨ姹傛柊鐨勭涓夋柟搴旂敤鏃惰繕寰楀啀鐧誨綍涓嬈°傚綋鐒訛紝濡傛灉浣犳嫢鏈夎繖涓涓夋柟web搴旂敤鐨勬簮鐮侊紝鑰屼綘鍙堟槸涓涓▼搴忓憳錛屼綘鍙互淇敼瀹冿紝浣嗛偅鎭愭曚篃涓嶅鏄撳仛銆?
6> 鍗曠偣鐧誨綍闇瑕佷嬌鐢╟ookies銆?BR> 7錛庨厤緗敤鎴峰畾鍒剁洰褰曪紙Customized User Directores錛?
涓浜涚珯鐐瑰厑璁鎬釜鍒敤鎴峰湪鏈嶅姟鍣ㄤ笂鍙戝竷緗戦〉銆備緥濡傦紝涓鎵澶у鐨勫闄㈠彲鑳芥兂緇欐瘡涓浣嶅鐢熶竴涓叕鍏卞尯鍩燂紝鎴栬呮槸涓涓狪SP甯屾湜緇欎竴浜泈eb絀洪棿緇欎粬鐨勫鎴鳳紝浣嗚繖鍙堜笉鏄櫄鎷熶富鏈恒傚湪榪欑鎯呭喌涓嬶紝涓涓吀鍨嬬殑鏂規硶灝辨槸鍦ㄧ敤鎴峰悕鍓嶉潰鍔犱竴涓壒孌婂瓧絎︼紙~錛夛紝浣滀負姣忎綅鐢ㄦ埛鐨勭綉绔欙紝姣斿錛?
http://www.cs.myuniversity.edu/~username
http://members.mybigisp.com/~username
Tomcat鎻愪緵涓ょ鏂規硶鍦ㄤ富鏈轟笂鏄犲皠榪欎簺涓漢緗戠珯錛屼富瑕佷嬌鐢ㄤ竴瀵圭壒孌婄殑Listener鍏冪礌銆侺istener鐨刢lassName灞炴у簲璇ユ槸org.apache.catalina.startup.UserConfig錛寀serClass灞炴у簲璇ユ槸鍑犱釜鏄犲皠綾諱箣涓銆傚鏋滀綘鐨勭郴緇熸槸Unix錛屽畠灝嗘湁涓涓爣鍑嗙殑/etc/passwd鏂囦歡錛岃鏂囦歡涓殑甯愬彿鑳藉琚繍琛屼腑鐨凾omcat寰堝鏄撶殑璇誨彇錛岃鏂囦歡鎸囧畾浜嗙敤鎴風殑涓葷洰褰曪紝浣跨敤PasswdUserDatabase
鏄犲皠綾匯?
<Listener className="org.apache.catalina.startup.UserConfig"
directoryName="public_html"
userClass="org.apache.catalina.startup.PasswdUserDatabase"/>
web鏂囦歡闇瑕佹斁緗湪鍍?home/users/ian/public_html 鎴栬?
/users/jbrittain/public_html涓鏍風殑鐩綍涓嬮潰銆傚綋鐒朵綘涔熷彲浠ユ敼鍙榩ublic_html 鍒板叾浠栦換浣曞瓙鐩綍涓嬨?
瀹為檯涓婏紝榪欎釜鐢ㄦ埛鐩綍鏍規湰涓嶄竴瀹氶渶瑕佷綅浜庣敤鎴蜂富鐩綍涓嬮噷闈€傚鏋滀綘娌℃湁涓涓瘑鐮佹枃浠訛紝浣嗕綘鍙堟兂鎶婁竴涓敤鎴峰悕鏄犲皠鍒板叕鍏辯殑鍍?home涓鏍風洰褰曠殑瀛愮洰褰曢噷闈紝鍒欏彲浠ヤ嬌鐢℉omesUserDatabase綾匯?
<Listener className="org.apache.catalina.startup.UserConfig"
directoryName="public_html" homeBase="/home"
userClass="org.apache.catalina.startup.HomesUserDatabase"/>
榪欐牱涓鏉ワ紝web鏂囦歡灝卞彲浠ヤ綅浜庡儚/home/ian/public_html 鎴栬?
/home/jasonb/public_html涓鏍風殑鐩綍涓嬨傝繖縐嶅艦寮忓Windows鑰岃█鏇村姞鏈夊埄錛屼綘鍙互浣跨敤涓涓儚c:\home榪欐牱鐨勭洰褰曘?
榪欎簺Listener鍏冪礌錛屽鏋滃嚭鐜幫紝鍒欏繀欏誨湪Host鍏冪礌閲岄潰錛岃屼笉鑳藉湪context鍏冪礌閲岄潰錛屽洜涓哄畠浠兘鐢ㄥ簲鐢ㄤ簬Host鏈韓銆?
8錛庡湪Tomcat涓嬌鐢–GI鑴氭湰
Tomcat涓昏鏄綔涓篠ervlet/JSP瀹瑰櫒錛屼絾瀹冧篃鏈夎澶氫紶緇焪eb鏈嶅姟鍣ㄧ殑鎬ц兘銆傛敮鎸侀氱敤緗戝叧鎺ュ彛錛圕ommon
Gateway
Interface錛屽嵆CGI錛夊氨鏄叾涓箣涓錛孋GI鎻愪緵涓緇勬柟娉曞湪鍝嶅簲嫻忚鍣ㄨ姹傛椂榪愯涓浜涙墿灞曠▼搴忋侰GI涔嬫墍浠ヨ縐頒負閫氱敤錛屾槸鍥犱負瀹冭兘鍦ㄥぇ澶氭暟紼嬪簭鎴栬剼鏈腑琚皟鐢紝鍖呮嫭錛歅erl錛孭ython錛宎wk錛孶nix
shell
scripting絳夛紝鐢氳嚦鍖呮嫭Java銆傚綋鐒訛紝浣犲ぇ姒備笉浼氭妸涓涓狫ava搴旂敤紼嬪簭褰撲綔CGI鏉ヨ繍琛岋紝姣曠珶榪欐牱澶繃鍘熷銆備竴鑸岃█錛屽紑鍙慡ervlet鎬昏姣擟GI鍏鋒湁鏇村ソ鐨勬晥鐜囷紝鍥犱負褰撶敤鎴風偣鍑諱竴涓摼鎺ユ垨涓涓寜閽椂錛屼綘涓嶉渶瑕佷粠鎿嶄綔緋葷粺灞傚紑濮嬭繘琛屽鐞嗐?
Tomcat鍖呮嫭涓涓彲閫夌殑CGI Servlet錛屽厑璁鎬綘榪愯閬楃暀涓嬫潵鐨凜GI鑴氭湰銆?
涓轟簡浣縏omcat鑳藉榪愯CGI錛屼綘蹇呴』鍋氬涓嬪嚑浠朵簨錛?
1. 鎶妔ervlets-cgi.renametojar
錛堝湪CATALINA_HOME/server/lib/鐩綍涓嬶級鏀瑰悕涓簊ervlets-cgi.jar銆傚鐞咰GI鐨剆ervlet搴旇浣嶄簬Tomcat鐨凜LASSPATH涓嬨?
2. 鍦═omcat鐨凜ATALINA_BASE/conf/web.xml 鏂囦歡涓紝鎶婂叧浜?
CGI鐨勯偅孌電殑娉ㄩ噴鍘繪帀錛堥粯璁ゆ儏鍐典笅錛岃孌典綅浜庣241琛岋級銆?
3.
鍚屾牱錛屽湪Tomcat鐨凜ATALINA_BASE/conf/web.xml鏂囦歡涓紝鎶婂叧浜庡CGI榪涜鏄犲皠鐨勯偅孌電殑娉ㄩ噴鍘繪帀錛堥粯璁ゆ儏鍐典笅錛岃孌典綅浜庣299琛岋級銆傛敞鎰忥紝榪欐鍐呭鎸囧畾浜咹TML閾炬帴鍒癈GI鑴氭湰鐨勮闂柟寮忋?
4. 浣犲彲浠ユ妸CGI鑴氭湰鏀劇疆鍦╓EB-INF/cgi
鐩綍涓嬶紙娉ㄦ剰錛學EB-INF鏄竴涓畨鍏ㄧ殑鍦版柟錛屼綘鍙互鎶婁竴浜涗笉鎯寵鐢ㄦ埛鐪嬭鎴栧熀浜庡畨鍏ㄨ冭檻涓嶆兂鏆撮湶鐨勬枃浠舵斁鍦ㄦ澶勶級錛屾垨鑰呬綘涔熷彲浠ユ妸CGI鑴氭湰鏀劇疆鍦╟ontext涓嬬殑鍏朵粬鐩綍涓嬶紝騫朵負CGI
Servlet璋冩暣cgiPathPrefix鍒濆鍖栧弬鏁般傝繖灝辨寚瀹氱殑CGI Servlet鐨勫疄闄呬綅緗紝涓斾笉鑳戒笌涓婁竴姝ユ寚瀹氱殑URL閲嶅悕銆?
5. 閲嶆柊鍚姩Tomcat錛屼綘鐨凜GI灝卞彲浠ヨ繍琛屼簡銆?
鍦═omcat涓紝CGI紼嬪簭緙虹渷鏀劇疆鍦╓EB-INF/cgi鐩綍涓嬶紝姝e鍓嶉潰鎵鎻愮ず鐨勯偅鏍鳳紝WEB-INF鐩綍鍙椾繚鎶ょ殑錛岄氳繃瀹㈡埛绔殑嫻忚鍣ㄦ棤娉曠鎺㈠埌鍏朵腑鍐呭錛屾墍浠ュ浜庢斁緗惈鏈夊瘑鐮佹垨鍏朵粬鏁忔劅淇℃伅鐨凜GI鑴氭湰鑰岃█錛岃繖鏄竴涓潪甯稿ソ鐨勫湴鏂廣備負浜嗗吋瀹瑰叾浠栨湇鍔″櫒錛屽敖綆′綘涔熷彲浠ユ妸CGI鑴氭湰淇濆瓨鍦ㄤ紶緇熺殑/cgi-bin鐩綍錛屼絾瑕佺煡閬擄紝鍦ㄨ繖浜涚洰褰曚腑鐨勬枃浠舵湁鍙兘琚綉涓婂ソ濂囩殑鍐叉氮鑰呯湅鍒般傚彟澶栵紝鍦║nix涓紝璇風‘瀹氳繍琛孴omcat鐨勭敤鎴鋒湁鎵цCGI鑴氭湰鐨勬潈闄愩?
9錛庢敼鍙楾omcat涓殑JSP緙栬瘧鍣紙JSP Compiler錛?
鍦═omcat
4.1錛堟垨鏇撮珮鐗堟湰錛屽ぇ姒傦級錛孞SP鐨勭紪璇戠敱鍖呭惈鍦═omcat閲岄潰鐨凙nt紼嬪簭鎺у埗鍣ㄧ洿鎺ユ墽琛屻傝繖鍚搗鏉ユ湁涓鐐圭偣濂囨紝浣嗚繖姝f槸Ant鏈夋剰涓轟箣鐨勪竴閮ㄥ垎錛屾湁涓涓狝PI鏂囨。鎸囧寮鍙戣呭湪娌℃湁鍚姩涓涓柊鐨凧VM鐨勬儏鍐典笅錛屼嬌鐢ˋnt銆傝繖鏄嬌鐢ˋnt榪涜Java寮鍙戠殑涓澶т紭鍔褲傚彟澶栵紝榪欎篃鎰忓懗鐫浣犵幇鍦ㄨ兘澶熷湪Ant涓嬌鐢ㄤ換浣昷avac鏀寔鐨勭紪璇戞柟寮忥紝榪欓噷鏈変竴涓叧浜嶢pache
Ant浣跨敤鎵嬪唽鐨刯avac page鍒楄〃銆備嬌鐢ㄨ搗鏉ユ槸瀹規槗鐨勶紝鍥犱負浣犲彧闇瑕佸湪
鍏冪礌涓畾涔変竴涓悕瀛楀彨鈥渃ompiler鈥濓紝騫朵笖鍦╲alue涓湁涓涓敮鎸佺紪璇戠殑緙栬瘧鍣ㄥ悕瀛楋紝紺轟緥濡備笅錛?
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>
org.apache.jasper.servlet.JspServlet
</servlet-class>
<init-param>
<param-name>logVerbosityLevel</param-name>
<param-value>WARNING</param-value>
</init-param>
<init-param>
<param-name>compiler</param-name>
<param-value>jikes</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
褰撶劧錛岀粰鍑虹殑緙栬瘧鍣ㄥ繀欏誨凡緇忓畨瑁呭湪浣犵殑緋葷粺涓紝騫朵笖CLASSPATH鍙兘闇瑕佽緗紝閭e鍐充簬浣犻夋嫨鐨勬槸浣曠緙栬瘧鍣ㄣ?
10錛庨檺鍒剁壒瀹氫富鏈鴻闂紙Restricting Access to Specific Hosts錛?
鏈夋椂錛屼綘鍙兘鎯抽檺鍒跺Tomcat
web搴旂敤鐨勮闂紝姣斿錛屼綘甯屾湜鍙湁浣犳寚瀹氱殑涓繪満鎴朓P鍦板潃鍙互璁塊棶浣犵殑搴旂敤銆傝繖鏍蜂竴鏉ワ紝灝卞彧鏈夐偅浜涙寚瀹氱殑鐨勫鎴風鍙互璁塊棶鏈嶅姟鐨勫唴瀹逛簡銆備負浜嗗疄鐜拌繖縐嶆晥鏋滐紝Tomcat鎻愪緵浜嗕袱涓弬鏁頒緵浣犻厤緗細RemoteHostValve
鍜孯emoteAddrValve銆?
閫氳繃閰嶇疆榪欎袱涓弬鏁幫紝鍙互璁╀綘榪囨護鏉ヨ嚜璇鋒眰鐨勪富鏈烘垨IP鍦板潃錛屽茍鍏佽鎴栨嫆緇濆摢浜涗富鏈?IP銆備笌涔嬬被浼肩殑錛屽湪Apache鐨刪ttpd鏂囦歡閲屾湁瀵規瘡涓洰褰曠殑鍏佽/鎷掔粷鎸囧畾銆?
渚嬪浣犲彲浠ユ妸Admin Web application璁劇疆鎴愬彧鍏佽鏈湴璁塊棶錛岃緗涓嬶細
<Context path="/path/to/secret_files" ...>
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127.0.0.1" deny=""/>
</Context>
濡傛灉娌℃湁緇欏嚭鍏佽涓繪満鐨勬寚瀹氾紝閭d箞涓庢嫆緇濅富鏈哄尮閰嶇殑涓繪満灝變細琚嫆緇濓紝闄ゆ涔嬪鐨勯兘鏄厑璁哥殑銆備笌涔嬬被浼鹼紝濡傛灉娌℃湁緇欏嚭鎷掔粷涓繪満鐨勬寚瀹氾紝閭d箞涓庡厑璁鎬富鏈哄尮閰嶇殑涓繪満灝變細琚厑璁革紝闄ゆ涔嬪鐨勯兘鏄嫆緇濈殑銆?
String <- int ""+int;
String <- Integer _Integer.toString();
int <- Integer _Integer.intValue();
int <- String Integer.parseInt(_str);
Integer <- String new Integer(Integer.parseInt(_str));
Integer <- int new Ingeger(_int);
鍏朵粬杞崲綾諱技銆?/P>