锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
Log4J鐨勯厤緗枃浠?Configuration File)灝辨槸鐢ㄦ潵璁劇疆璁板綍鍣ㄧ殑綰у埆銆佸瓨鏀懼櫒鍜屽竷灞鐨勶紝瀹冨彲鎺ey=value鏍煎紡鐨勮緗垨xml鏍煎紡鐨勮緗俊鎭傞氳繃閰嶇疆錛屽彲浠ュ垱寤哄嚭Log4J鐨勮繍琛岀幆澧冦?br /> 浣滆?matrix 鏉ヨ嚜:Matrix 2005 灝辮榪囧幓浜?jiǎn)銆?br />
1. 閰嶇疆鏂囦歡
Log4J閰嶇疆鏂囦歡鐨勫熀鏈牸寮忓涓嬶細(xì)
#閰嶇疆鏍筁ogger
log4j.rootLogger聽
=
聽
[
level
]
聽
,
聽appenderName1
,
聽appenderName2
,
聽鈥?br />
#閰嶇疆鏃ュ織淇℃伅杈撳嚭鐩殑鍦癆ppender
log4j.appender.appenderName聽
=
聽fully.qualified.name.of.appender.class聽
銆銆log4j.appender.appenderName.option1聽
=
聽value1聽
銆銆鈥β?br />
銆銆log4j.appender.appenderName.optionN聽
=
聽valueN聽
#閰嶇疆鏃ュ織淇℃伅鐨勬牸寮忥紙甯冨眬錛?br />
log4j.appender.appenderName.layout聽
=
聽fully.qualified.name.of.layout.class聽
銆銆log4j.appender.appenderName.layout.option1聽
=
聽value1聽
銆銆鈥β?br />
銆銆log4j.appender.appenderName.layout.optionN聽
=
聽valueN聽
鍏朵腑 [level] 鏄棩蹇楄緭鍑虹駭鍒紝鍏辨湁5綰э細(xì)
FATAL聽聽聽聽聽
0
聽
ERROR聽聽聽聽聽
3
聽
WARN聽聽聽聽聽聽
4
聽
INFO聽聽聽聽聽聽
6
聽
DEBUG聽聽聽聽聽
7
Appender
涓烘棩蹇楄緭鍑虹洰鐨勫湴錛孡og4j鎻愪緵鐨刟ppender鏈変互涓嬪嚑縐嶏細(xì)
org.apache.log4j.ConsoleAppender錛堟帶鍒跺彴錛夛紝
org.apache.log4j.FileAppender錛堟枃浠訛級(jí)錛?br />
org.apache.log4j.DailyRollingFileAppender錛堟瘡澶╀駭鐢熶竴涓棩蹇楁枃浠訛級(jí)錛?br />
org.apache.log4j.RollingFileAppender錛堟枃浠跺ぇ灝忓埌杈炬寚瀹氬昂瀵哥殑鏃跺欎駭鐢熶竴涓柊鐨勬枃浠訛級(jí)錛?br />
org.apache.log4j.WriterAppender錛堝皢鏃ュ織淇℃伅浠ユ祦鏍煎紡鍙戦佸埌浠繪剰鎸囧畾鐨勫湴鏂癸級(jí)
Layout錛氭棩蹇楄緭鍑烘牸寮忥紝Log4j鎻愪緵鐨刲ayout鏈変互涓嬪嚑縐嶏細(xì)
org.apache.log4j.HTMLLayout錛堜互HTML琛ㄦ牸褰㈠紡甯冨眬錛夛紝
org.apache.log4j.PatternLayout錛堝彲浠ョ伒媧誨湴鎸囧畾甯冨眬妯″紡錛夛紝
org.apache.log4j.SimpleLayout錛堝寘鍚棩蹇椾俊鎭殑綰у埆鍜屼俊鎭瓧絎︿覆錛夛紝
org.apache.log4j.TTCCLayout錛堝寘鍚棩蹇椾駭鐢熺殑鏃墮棿銆佺嚎紼嬨佺被鍒瓑絳変俊鎭級(jí)
鎵撳嵃鍙傛暟: Log4J閲囩敤綾諱技C璇█涓殑printf鍑芥暟鐨勬墦鍗版牸寮忔牸寮忓寲鏃ュ織淇℃伅錛屽涓?
銆銆%m聽聽 杈撳嚭浠g爜涓寚瀹氱殑娑堟伅
銆銆%p聽聽 杈撳嚭浼樺厛綰э紝鍗矰EBUG錛孖NFO錛學(xué)ARN錛孍RROR錛孎ATAL聽
銆銆%r聽聽 杈撳嚭鑷簲鐢ㄥ惎鍔ㄥ埌杈撳嚭璇og淇℃伅鑰楄垂鐨勬縐掓暟聽
銆銆%c聽聽 杈撳嚭鎵灞炵殑綾葷洰錛岄氬父灝辨槸鎵鍦ㄧ被鐨勫叏鍚嵚?br />
銆銆%t聽聽 杈撳嚭浜х敓璇ユ棩蹇椾簨浠剁殑綰跨▼鍚嵚?br />
銆銆%n聽聽 杈撳嚭涓涓洖杞︽崲琛岀錛學(xué)indows騫沖彴涓衡淺r\n鈥濓紝Unix騫沖彴涓衡淺n鈥澛?br />
銆銆%d聽聽 杈撳嚭鏃ュ織鏃墮棿鐐圭殑鏃ユ湡鎴栨椂闂達(dá)紝榛樿鏍煎紡涓篒SO8601錛屼篃鍙互鍦ㄥ叾鍚庢寚瀹氭牸寮忥紝姣斿錛?d{yyy聽MMM聽dd聽HH:mm:ss
,
SSS}錛岃緭鍑虹被浼鹼細(xì)2002騫?0鏈?8鏃ヂ?/span>
22
錛?/span>
10
錛?/span>
28
錛?/span>
921
聽
銆銆%l聽聽 杈撳嚭鏃ュ織浜嬩歡鐨勫彂鐢熶綅緗紝鍖呮嫭綾葷洰鍚嶃佸彂鐢熺殑綰跨▼錛屼互鍙?qiáng)鍦ㄤ唬鐮佷腑鐨勮鏁般備婦渚嬶細(xì)Testlog4.main(TestLog4.java:
10
)聽
2. 鍦ㄤ唬鐮佷腑鍒濆鍖朙ogger:
1錛夊湪紼嬪簭涓皟鐢?strong>BasicConfigurator.configure()鏂規(guī)硶錛氱粰鏍硅褰曞櫒澧炲姞涓涓狢onsoleAppender錛岃緭鍑烘牸寮忛氳繃PatternLayout璁句負(fù)"%-4r [%t] %-5p %c %x - %m%n"錛岃繕鏈夋牴璁板綍鍣ㄧ殑榛樿綰у埆鏄?strong>Level.DEBUG.
2錛夐厤緗斁鍦ㄦ枃浠墮噷錛岄氳繃鍛戒護(hù)琛屽弬鏁頒紶閫掓枃浠跺悕瀛楋紝閫氳繃PropertyConfigurator.configure(args[x])瑙f瀽騫墮厤緗紱
3錛夐厤緗斁鍦ㄦ枃浠墮噷錛岄氳繃鐜鍙橀噺浼犻掓枃浠跺悕絳変俊鎭紝鍒╃敤log4j榛樿鐨勫垵濮嬪寲榪囩▼瑙f瀽騫墮厤緗紱
4錛夐厤緗斁鍦ㄦ枃浠墮噷錛岄氳繃搴旂敤鏈嶅姟鍣ㄩ厤緗紶閫掓枃浠跺悕絳変俊鎭紝鍒╃敤涓涓壒孌婄殑servlet鏉ュ畬鎴愰厤緗?br />
3. 涓轟笉鍚岀殑 Appender 璁劇疆鏃ュ織杈撳嚭綰у埆錛?/strong>
褰撹皟璇曠郴緇熸椂錛屾垜浠線寰娉ㄦ剰鐨勫彧鏄紓甯哥駭鍒殑鏃ュ織杈撳嚭錛屼絾鏄氬父鎵鏈夌駭鍒殑杈撳嚭閮芥槸鏀懼湪涓涓枃浠墮噷鐨勶紝濡傛灉鏃ュ織杈撳嚭鐨勭駭鍒槸BUG錛侊紵閭e氨鎱㈡參鍘繪壘鍚с?br />榪欐椂鎴戜滑涔熻浼?xì)鎯宠鏄兘鎶婂紓甯镐俊鎭崟鐙緭鍑哄堫C竴涓枃浠墮噷璇ュ濂藉晩銆傚綋鐒跺彲浠ワ紝Log4j宸茬粡鎻愪緵浜?jiǎn)杩欐狅L(fēng)殑鍔熻兘錛屾垜浠彧闇瑕佸湪閰嶇疆涓慨鏀?strong>Appender鐨?font color="#990000">Threshold
灝辮兘瀹炵幇,姣斿涓嬮潰鐨勪緥瀛愶細(xì)
[閰嶇疆鏂囦歡]
###聽set聽log聽levels聽###
log4j.rootLogger
=
debug
,
聽stdout
,
聽D
,
聽E
###聽杈撳嚭鍒版帶鍒跺彴聽###
log4j.appender.stdout
=
org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target
=
System.out
log4j.appender.stdout.layout
=
org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern
=
聽%d{ABSOLUTE}聽%5p聽%c{
1
}:%L聽-聽%m%n
###聽杈撳嚭鍒版棩蹇楁枃浠堵?##
log4j.appender.D
=
org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File
=
logs/log.log
log4j.appender.D.Append
=
true
log4j.appender.D.Threshold
=
DEBUG聽##聽杈撳嚭DEBUG綰у埆浠ヤ笂鐨勬棩蹇?/strong>
log4j.appender.D.layout
=
org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern
=
%-d{yyyy-MM-dd聽HH:mm:ss}聽
[
%t:%r
]
-
[
%p
]
聽%m%n
###聽淇濆瓨寮傚父淇℃伅鍒板崟鐙枃浠堵?##
log4j.appender.D
=
org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File
=
logs/error.log聽##聽寮傚父鏃ュ織鏂囦歡鍚?br />
log4j.appender.D.Append
=
true
log4j.appender.D.Threshold
=
ERROR聽##聽鍙緭鍑篍RROR綰у埆浠ヤ笂鐨勬棩蹇?!!
log4j.appender.D.layout
=
org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern
=
%-d{yyyy-MM-dd聽HH:mm:ss}聽
[
%t:%r
]
-
[
%p
]
聽%m%n
[浠g爜涓嬌鐢╙
public
聽
class
聽TestLog4j聽
{
聽聽聽聽
public
聽
static
聽
void
聽main(String[]聽args)聽
{
聽聽聽聽聽聽聽聽PropertyConfigurator.configure(
"
D:/Code/conf/log4j.properties
"
);
聽聽聽聽聽聽聽聽Logger聽logger聽
=
聽Logger.getLogger(TestLog4j.
class
);
聽聽聽聽聽聽聽聽logger.debug(
"
debug
"
);
聽聽聽聽聽聽聽聽logger.error(
"
error
"
);
聽聽聽聽}
}
榪愯涓涓嬶紝鐪嬬湅寮傚父淇℃伅鏄笉鏄繚瀛樺湪浜?jiǎn)涓涓崟鐙殑鏂囦歡error.log涓?/font>
榪囧幓鐨勪竴騫達(dá)紝Mustang 娌¤兘鍑烘潵錛孍JB3鍒氬垰鎵嶆彁浜ゆ渶緇堣崏妗堬紝Ajax鍏磋搗浣嗘槸浜旇姳鍏棬涓嶇煡閬撳簲璇ョ敤璋侊紝Aspectj 5鍑烘潵浜?jiǎn)锛屼絾鏄~轟箯鎯婂枩銆?br />
鎴栬鎴戜滑浼?xì)璇村Q岃繃鍘葷殑2005錛孞ava鐣岀己涔忔垚緇╋紝浣嗘槸鍗存鏃犵枒闂紝Java閬ラ仴棰嗗厛浜庡叾浠栬璦銆備粠11鏈堢殑璇█鎺掕姒淛ava閬ラ仴棰嗗厛錛屽埌浠婂勾鐨凧ava鍥句功閿鍞粺璁′笂錛孞ava鍥句功閿鍞繪暟鏄疌#鐨?鍊嶏紝PHP鐨?.5鍊嶏紝Perl鐨?鍊嶏紝Ruby/Python鐨?鍊?
榪欒凍浠ヨ鎴戜滑瀵?006鍏呮弧鎯寵薄銆?br />
涓嶈繃錛岃繕鏄鎴戜滑鍏堝洖欏句笅2005鍚?...
1銆?005 涔?Java 瀵規(guī)墜
聽聽聽聽聽聽榪囧幓鐨?005錛孞ava鏃犵枒鏄渶鍙楁榪庣殑璇█銆備絾鏄疛ava涔熼潰涓村叾浠栬璦鐨勬寫鎴橈紝鍏朵腑Bruce A. Tate錛屽湪涓鏂囦腑錛屾彁鍑轟簡(jiǎn)鏈夊彲鑳芥寫鎴楯ava寮鍙戠殑4縐嶆妧鏈?/u>錛屽寘鎷姩鎬佽璦錛孋ontinuation錛孋onventions錛屽厓緙栫▼絳夈?br />
聽聽聽聽聽聽Ruby鍙互璇存槸鏈鏈夊彲鑳芥寫鎴楯ava鐨勮璦錛屽垰鍒氬彂甯冪殑Rails1.0寮曡搗浜?jiǎn)Fans鐨勭柉鐙?/u>銆俁ails浼?xì)涓嶄細(xì)鏄笅涓浠d紵澶х殑妗嗘灦錛熸湁鍙兘銆傝鍋氫竴涓夋嫨鐨勮瘽錛孯ails搴旇浼?xì)鏄湪鋴社敤Ruby鎴栨槸鍏朵粬鍔ㄦ佺紪紼嬭璦鐨勫厓緙栫▼妗嗘灦娼祦涓殑絎竴涓備絾鏄疛ava宸茬粡寮濮嬪紩榪汻uby鐨勭壒鎬т簡(jiǎn)錛屾瘮濡俆rails錛孏roovy銆?br />
2銆?005 涔?Java 鏂扮帺鎰?/span>
路Drools錛欴rools 鏄竴涓熀浜嶤harles Forgy's鐨凴ete綆楁硶鐨勶紝涓撲負(fù)Java璇█鎵璁捐鐨勮鍒欏紩鎿庛俁ete綆楁硶搴旂敤浜庨潰鍚戝璞$殑鎺ュ彛灝嗕嬌鍩轟簬鍟嗕笟瀵硅薄鐨勫晢涓氳鍒欑殑琛ㄨ揪鏇翠負(fù)鑷劧銆侱rools鏄敤Java鍐欑殑錛屼絾鑳藉悓鏃惰繍琛屽湪Java鍜?Net涓娿侱rools鎻愪緵浜?jiǎn)澹版槑寮徑E嬪簭璁捐(Declarative Programming),騫朵笖浣跨敤鍩熸弿榪拌璦(Domain Specific Languages (DSL))銆俉eb鍜屾寔涔呭眰妗嗘灦鎴戜滑宸茬粡鏈夊緢澶氶夋嫨浜?jiǎn)锛屼絾鏄鍦ㄤ腑闂村眰鐨勫晢鍔¢昏緫鏈夊ソ鐨勬鏋跺悧錛熶綘甯屾湜姣忔緇忕悊緇欎綘涓涓柊鐨勫懡浠ゅ氨涓嶅緱涓嶉噸緙栬瘧閭d簺澶嶆潅鐨刬f ... then 鎰忓ぇ鍒╅潰鏉′唬鐮佸悧錛?a target="_new">Drools- 鍟嗗姟閫昏緫妗嗘灦鐨勯夋嫨榪欑瘒鏂囩珷涓紝淇濈綏甯冩湕鎺ㄨ崘鐨凞rools鐨勮鍒欏紩鎿庢垨璁告槸瀹屾垚榪欑被浠誨姟鐨勬渶濂介夋嫨;涓轟綘鐨勫熀浜嶴PRING鐨勫簲鐢ㄥ鍔犵畝鍗曡鍒欏紩鎿?/u>鎻忚堪濡備綍涓烘祦琛岀殑Spring妗嗘灦寮鍙戠畝鍗曠殑瑙勫垯寮曟搸錛?a target="_new">鍦ㄤ綘鐨勪紒涓氱駭java搴旂敤涓嬌鐢―rools涓鏂囧垯鍚戜綘灞曠ず濡備綍鍦ㄤ紒涓氱駭Java搴旂敤涓嬌鐢―rools.
路Portlet錛氣淧ortlets鏄竴縐峎eb緇勪歡錛嶅氨鍍弒ervlets錛嶆槸涓撲負(fù)灝嗗悎鎴愰〉闈㈤噷鐨勫唴瀹硅仛闆嗗湪涓璧瘋(gè)岃璁$殑銆傞氬父璇鋒眰涓涓猵ortal欏甸潰浼?xì)寮曞彂澶氫釜portlets琚皟鐢ㄣ傛瘡涓猵ortlet閮戒細(xì)鐢熸垚鏍囪孌碉紝騫朵笌鍒殑portlets鐢熸垚鐨勬爣璁版緇勫悎鍦ㄤ竴璧峰祵鍏ュ埌portal欏甸潰鐨勬爣璁板唴銆傗濓紙鎽樿嚜Portlet瑙勮寖錛孞SR 168錛夈?005錛孭ortlet妗嗘灦灞傚嚭涓嶇┓銆?a target="_new">浠涔堟槸Portlet ?璁╀綘鐨凱ortlet涔嬫梾浠庤繖閲屽紑濮嬨?br />
路Ajax錛?005騫達(dá)紝榪樻湁浠涔堟瘮Ajax鏇寸伀鍛紵Ajax鍏磋搗, 浼犵粺Web妗嗘灦灝嗚蛋鍚戜綍鏂癸紵 寮曡搗騫挎硾璁ㄨ錛屼竴搴﹁浜烘劅鍙楀埌浜?jiǎn)Ajax鐨勫嚩鐚涗箣鍔褲傝櫧鐒禔jax鍜孞ava娌℃湁鐩存帴鍏崇郴錛屼絾鏄鏃犵枒闂瓵jax涔熸槸Java鐣屽叧蹇?jī)鐨勪笢瑗裤?a target="_new">Ajax: Web搴旂敤鐨勬柊鏂規(guī)硶浠嬬粛浜?jiǎn)杩欎釜灏嗕护錆h浠叴濂嬬殑鎶鏈?br />聽聽聽聽
Ajax鐨勫簲鐢ㄤ篃灞傚嚭涓嶇┓錛屾瘮濡侴oogle灝辨垚鍔熷湴浣跨敤浜?jiǎn)Ajax銆?a target="_new">鐢ˋJAX鏉ユ帶鍒朵功絳懼拰鍥為鎸夐挳鍛婅瘔鎴戜滑濡備綍鐢ˋJAX鏉ユ帶鍒朵功絳懼拰鍥為鎸夐挳銆?br />
涓緋誨垪妗嗘灦涔熼殢涔嬭屽嚭鏉ワ紝姣斿DWR, Ajaxanywhere錛孉jaxtags銆傚叾涓細(xì)DWR璁〢JAX濡傛綆鍗?/u>灞曠ずDWR濡備綍浣垮緱AJAX鐨勫簲鐢ㄦ棦綆鍗曞張蹇嵎銆?a target="_new">鍒濇帰AjaxTags灞曠ず濡備綍浣跨敤Ajaxtags榪涜Ajax寮鍙戙?br />
路SOA錛氬綋鐒?dòng)灱?005涓嶄粎鏄鏋訛紝2005榪樻湁SOA錛孊EA, IBM, ORACLE..... 涓瀹跺張涓瀹朵紒涓氬叕甯冧簡(jiǎn)浠栦滑鐨凷OA鏂規(guī), 瀹gО浠栦滑鐨勪駭鍝佹敮鎸丼OA鍔熻兘. SCA鍜孲DO涔熷皢緇勬垚鏂扮殑SOA緙栫▼妯″瀷銆?a target="_new">SCA鍜孲DO灝嗙粍鎴愭柊鐨凷OA緙栫▼妯″瀷璇存槑浜?jiǎn)濡備綍鍦ㄥ疄鐜颁簡(jiǎn)J2EE1.4瑙勮寖鐨勫簲鐢ㄦ湇鍔″櫒涔嬮棿錛屾瘮濡侽racle Application Server 10g錛屼嬌鐢↗2EE1.4寤虹珛鍙簰鎿嶄綔鐨勶紝杞諱究鐏墊椿鐨勬湇鍔★紱SOA鏋舵瀯涓殑浜嬩歡椹卞姩鏈嶅姟璁ㄨ浣跨敤Mule瀹炵幇涓涓珮鏁堢殑浜嬩歡椹卞姩鍜岄潰鍚戞湇鍔$殑騫沖彴錛?闈㈠SOA, 浣犲噯澶囧ソ浜?jiǎn)鍚?
路RPC錛歐eb搴旂敤鐨凴PC鏂瑰紡璋冪敤錛岄殢鐫Web2.0鐨勫叴璧鳳紝RPC鏂瑰紡閫愭笎鎴愪負(fù)Web璋冪敤鐨勪竴縐嶆柟寮忋?br />
路鍒嗗竷寮忕粍浠跺紑鍙?/b>錛氬湪涓涓垎甯冨紡搴旂敤褰撲腑錛屾彁渚涗竴涓粺涓瀵瑰鎺ュ彛錛岄氳繃鍙噸鐢ㄧ殑澶栭儴API鏉ユ弧瓚抽渶姹傘?a target="_new">Java緇勪歡寮鍙?涓涓蹇墊鏋?/u>鎻愬嚭浜?jiǎn)涓涓瀯寤烘蹇墊鏋跺湴瑙e喅鏂規(guī).
3銆侶ibernate緇х畫鍓嶈繘
聽聽聽聽Hibernate浠嶇劧鏄渶鍙楁榪庣殑浼佷笟綰у紑鍙戞寔涔呭眰鏂規(guī)錛孍jb 3.0 鐨勫嚭鐜版槸鍚︿細(xì)璁〩ibernate鐨勫彂灞曟湁浠涔堝彉鍖栧悧錛?榪欐棤鐤戞槸璁╁ぇ瀹墮兘鎰熷叴瓚g殑浜嬫儏銆傝繃鍘葷殑涓騫達(dá)紝鍏充簬Hibernate涔熸湁寰堝鏈夎叮鐨勪笢瑗匡細(xì)Hibernate 3 鐨凢ormulas灞曠幇formula鐨勫悇縐嶇壒寰佹槸濡備綍杈呭姪妯″紡杞崲鐨勶紱鑰?a target="_new">Magicgod鐨凥ibernate鐨勬濊?/u>鍒欐彁鍑轟簡(jiǎn)鎻愬埌浜?jiǎn)Hibernate鐨勪竴浜涘急鐐癸紱銆?br />
4銆係pring澶х儹
聽聽聽聽 娌℃湁浠涔堟枃绔狅紝姣?a target="_new">POJO搴旂敤妗嗘灦錛歋pring涓嶦JB3.0鐨勬瘮杈?/u> 澶哄緱鏇村鐨勪漢鐨勭溂鐞冧簡(jiǎn)銆係pring妗嗘灦铏界劧寰堟祦琛屼絾騫朵笉鏄竴涓爣鍑嗙殑寮婧愭鏋訛紝EJB3.0鏄敱Java Community Process (JCP)鍒惰鐨勬爣鍑嗘鏋訛紝涓烘墍鏈変富瑕佺殑J2EE鍘傚晢鏀寔銆備袱鑰呴兘澶ч噺鍦頒嬌鐢ㄤ簡(jiǎn)渚濊禆娉ㄥ叆銆?a target="_new">鍦⊿PRING涓疄鐜頒簨鍔℃殏鍋?/u>璁ㄨ浜?jiǎn)Spring鐨勪簨鍔$鐞嗙壒鎬с?a target="_new">鍦⊿pring涓厤緗瓾ibernate浜嬪姟鎺㈣浜?jiǎn)鎬庝箞鐢⊿pring鏉ヨ閰嶇粍浠跺強(qiáng)鍏朵簨鍔$鐞嗐?a target="_new">鐖變笂Spring鐨?涓悊鐢?/u>閲屼綔鑰呮弿榪頒簡(jiǎn)浠栦負(fù)浣曞枩嬈笂浜?jiǎn)Spring錛涜?a target="_new">浣跨敤EJB 3.0綆鍖栦紒涓氱駭Java寮鍙?/u>闃愯堪浜?jiǎn)濡備綍鋴社敤EJB 3.0 娉ㄩ噴鏉ュ紑鍙戣棔鍚堟澗鏁g殑POJO搴旂敤鍙?qiáng)瀹瑰櫒鏈嶅姟鍣ㄥ浣暯帯鐞哖OJO銆?br />
聽聽聽聽2006錛岀湅鏉ヨ繕鏈変竴鍦哄ぇ鎴樸?
5銆傚湪Eclipse鐨勫獎(jiǎng)瀛愪笅
聽聽聽聽 璋冩煡琛ㄧず錛岃秴榪?0%鐨勫紑鍙戣呬嬌鐢‥clipse榪涜寮鍙戙侲clipse姣棤鐤戦棶宸茬粡鍗犳嵁浜?jiǎn)IDE鐨勪富嫻佸競(jìng)鍦恒侲clipse鐨勫叴璧鳳紝涔熼棿鎺ュ紩璧蜂簡(jiǎn)Borland鐨勭鍘匯備絾鏄篃寮曡搗浜?jiǎn)IDE宸ュ叿鐨勭珵浜夊姞鍓э紝瀵瑰紑鍙戣呮槸浠朵笉鎶樹笉鎵g殑濂戒簨銆?a target="_new">鎴愪負(fù)Eclipse鐑敭楂樻墜鎻愬埌浜?jiǎn)閭d簺浼?xì)璁╀綘鐨勬墜鎸囧姩鐨勯蹇殑鐑敭緇勫悎銆傝繖鍙槸Eclipse蹇嵎鏂逛究鐨勪竴涓緝褰便傚垰鍙戝竷鐨刉TP,聽聽 濂界敤鐨凪yeclipse錛岄兘鎺ㄥ姩鐫Eclipse鐨勪笉鏂彂灞曪紝鎴栬榪欏氨鏄ぞ鍖虹殑鍔涢噺銆?br />
6銆侫NT錛?/span>
聽聽聽聽聽聽ANT浠嶇劧寰堝彈嬈㈣繋銆侫NT涓嶄粎浠呮槸涓涓狟uild宸ュ叿錛屽畠榪樺彲浠ヤ綔鏇村鐨勪簨鎯呫?a target="_new">浣跨敤Ant榪涜W(xué)eb寮鍙?/u>浠嬬粛WEB 搴旂敤紼嬪簭鐨勯儴緗詫紝鍖呮嫭get, serverdeploy, 鍜?scp絳夈?a target="_new">浣塊」鐩紑鍙戣嚜鍔ㄥ寲鎻忕粯浜?jiǎn)鐢ˋnt鑷姩鍖栦綘鐨勯」鐩兘甯︽潵鐨勫ソ澶勩?br />
7銆?006鐨凧ava鏈熷緟錛?/span>
路EJB3: EJB3鏈緇堣崏妗堟彁浜わ紝棰勭ず鐫EJB3鐨勫嵆灝嗗埌鏉ヤ簡(jiǎn)錛岀浉淇℃槑騫翠竴瀹氱▼搴︿笂鏄疎JB3騫達(dá)紝綆鍖栧紑鍙戞槸鍚︾湡鐨勫疄鑷沖悕褰掞紵
路Mustang: 涓嶇煡閬揗ustang 鐨勫嚭鐜幫紝浼?xì)缁橨ava鎬ц兘甯︽潵澶氬ぇ鐨勬敼鍙橈紝瀵勫瓨鍣ㄤ紭鍖栦笉鐭ラ亾鏄笉鏄兘甯︽潵闈╁懡鐨勬晥鏋滐紵
路JBI-ESB錛欽BI榪欎釜鎻愪簡(jiǎn)寰堝騫寸殑鍚嶈瘝錛岀粓浜庡湪浠婂勾澶х儹錛岀浉淇℃槑騫碕BI浠嶇劧浼?xì)鐟艟l彂灞曘?br />路JSF錛欽SF鏈夊お澶氬鎵嬩簡(jiǎn)錛孲truts錛孲pring mvc錛岀壒鍒槸Webwork鍔犲叆Struts涔嬪悗錛屼笉榪囩浉淇SF涔熸槸鍊煎緱鎴戜滑鏈熷緟
路AJAX錛氳櫧鐒舵湁寰堝AJAX妗嗘灦鍑烘潵錛屼絾鏄痥iller綰у埆鐨勬鏋舵槸璋佸憿錛?006浼?xì)鎻檽鍚楀Q?br />路Groovy錛氱ぞ鍖虹殑鍔涢噺浣垮緱Groovy瓚婃潵瓚婃垚鐔熷拰瀹屽杽浜?jiǎn)銆?br />路Rails錛歊uby铏界劧鍜孞ava鏃犲叧錛屼絾鏄垜鎯沖鏁頒漢閮藉湪鍏沖績(jī)Rails銆傛瘯绔烺ails榪樻槸鎴戜滑鎵鏈熷緟鐨勪笢瑗褲?br />路Spring2.0錛歋pring 2.0鏄庡勾鍒濆氨浼?xì)鍙戝竷浜?jiǎn)錛岀浉淇′細(xì)緇х畫甯﹀姩Spring紺懼尯鐨勭媯鐑?br />
鐩鎬俊鍦ㄦ墍鏈夋妧鏈璦涓紝Java鏄?006騫寸殑鐑偣鎵鍦紝璁╂垜浠叡鍚屾湡寰?006銆?br />
2006, A Happy New Java-year and Matrix-year!聽聽
ant 鏄痡akarta鐨勪竴涓紪璇戝伐鍏鳳紝濡傛灉浣犱簡(jiǎn)瑙inux/Unix涓嬬殑makefile浣犲氨寰堝鏄?
鐞嗚Вant鐨勭敤閫斾簡(jiǎn)銆俛nt鏈閫傚悎浣犱嬌鐢║ltraEdit(EditPlus)鍐檍ava紼嬪簭錛岀劧鍚庝綘浣跨敤ant鍘葷紪璇戯紝鍚屾椂javadoc ,鐢熸垚涓涓猨ar,war錛屽疄鐜版枃浠剁殑copy閮藉彲浠ュ湪build.xml閫氳繃涓嶅悓鐨則ager鍘誨疄鐜幫紝榪樻槸寰堟柟渚跨殑涓涓笢涓滃己鐑堟帹鑽愭槸浣跨敤銆?br />
浜岋細(xì)涓嬭澆
浣犲彲浠ヤ粠涓嬮潰鐨勫湴鍧涓嬭澆鍒癮nt,鐩墠鐗堟湰錛?.41
http://jakarta.apache.org/builds/jakarta-ant/release/v1.4.1/bin/
涓夛細(xì)瀹夎
a:)Windows
1:瑙e帇浣犱笅杞界殑鏂囦歡錛屼細(xì)鏈変竴涓猨akarta-ant(鐗堟湰鍙風(fēng)殑)鐩綍浜х敓錛屾妸浠栨敼鍚嶄負(fù)ant
2:copy ant 鐩綍鍒頒綘闇瑕佺殑浣嶇疆銆?
3:鍦ㄧ幆澧冨彉閲忎腑娣誨姞錛欰NT_HOME=ant鐨勫畨瑁呯洰褰曪紝path涓姞$ANT_HOME$\\u0008in;娉ㄦ剰浣犲悓鏃跺繀欏誨凡緇忓畨瑁呬簡(jiǎn)jdk,騫舵坊鍔犱簡(jiǎn)JAVA_HOME鐨勭幆澧冨彉閲忥紝鍚屾椂鏃﹑ath涓姞浜?JAVA_HOME$\\u0008in;
b:)Linux/Unix
1:瑙e帇浣犱笅杞界殑鏂囦歡錛屼細(xì)鏈変竴涓猨akarta-ant(鐗堟湰鍙風(fēng)殑)鐩綍浜х敓錛屾妸浠栨敼鍚嶄負(fù)ant
2:copy ant 鐩綍鍒頒綘闇瑕佺殑浣嶇疆銆?
3:鍦ㄧ幆澧冨彉閲忎腑娣誨姞錛欰NT_HOME=ant鐨勫畨瑁呯洰褰曪紝path涓姞$ANT_HOME$\\u0008in;娉ㄦ剰浣犲悓鏃跺繀欏誨凡緇忓畨瑁呬簡(jiǎn)jdk,騫舵坊鍔犱簡(jiǎn)JAVA_HOME鐨勭幆澧冨彉閲忥紝鍚屾椂鏃﹑ath涓姞浜?JAVA_HOME$\\u0008in;瀹炵幇淇敼鐜鍙橀噺浣犻渶瑕佷慨鏀?bash_profile鏂囦歡銆?
濡備笅
ANT_HOME=/usr/local/ant
JAVA_HOME=/usr/local/jdk
PATH=$PATH:$HOME/bin:/usr/local/ant/bin:/usr/local/jdk/bin
export PATH ANT_HOME JAVA_HOME
鍥?緙栧啓build.xml
build.xml鐩稿綋Linux涓嬬殑makefile,鍏蜂綋鐨勫疄鐜伴兘鍦╞uild.xml涓疄鐜般?
鎴戠粰緇欎緥瀛愯鏄庝竴涓嬨?
build.xml
================================================================
<project name="bingo" default="build" basedir="../.." >
<!--basedir璁懼畾宸ヤ綔鐩綍-->
<property name="version" value="1.0"/>
<!-- The base directory relative to which most targets are built -->
<property name="base" value="."/>
<!-- The directory where source files are stored. -->
<property name="java.source.dir" value="bingo/src"/>
<!--浠g爜淇濆瓨璺緞-->
<!-- Destination for compiled files -->
<property name="javac.dest" value="bingo/classes"/>
<!--class淇濆瓨璺緞-->
<!-- Destination for generated jar files -->
<property name="jar.dest" value="bingo/jar"/>
<!--jar鏂囦歡淇濆瓨璺緞-->
<!-- Destination for documentation files generated or not -->
<property name="docs" value="bingo/docs"/>
<!--javadoc鏂囦歡淇濆瓨璺緞-->
<!-- Destination for javadoc generated files -->
<property name="javadoc.dest" value="bingo/docs"/>
<!-- The stem where most log4j source code is located. -->
<property name="stem" value="com/bingo"/>
<property name="base-files" value="include"/>
<!-- Original manifest.mf file before filtering. -->
<property name="manifest.src" value="bingo/build/manifest.mf"/>
<!-- Some targets needs a more precise stem. -->
<property name="BSTEM" value="${java.source.dir}/${stem}"/>
<property name="tomcat.dir" value="c:/Apache/Tomcat"/>
<property name="webapp.dir" value="${tomcat.dir}/webapps/ROOT/WEB-INF/classes"/>
<!--List all Package used in this project -->
<property name="PackageList" value="
com.bingo,
com.bingo.database,
com.bingo.dbocw,
com.bingo.util,
com.bingo.taglibs.jndi,
com.bingo.finance.database,
com.bingo.finance.entity,
com.bingo.finance.manager" />
<!--浣犵殑project涓墍鏈夌殑鍖?->
<!-- List all jar or file used in this project -->
<property name="classpath" value="${classpath};
${base-files}/tomcat/servlet.jar;
${base-files}/tomcat/webserver.jar;
${base-files}/log4j/log4j.jar;
${base-files}/log4j/log4j-core.jar" />
<!--浣犻渶瑕佺敤鍒扮殑鍖?->
<target name="init">
<tstamp />
</target>
<target name="build" depends="init">
<echo>
Building...
</echo>
<mkdir dir="${javac.dest}" />
<javac srcdir="${java.source.dir}"
destdir="${javac.dest}"
classpath="${classpath}"
debug="on"/>
</target>
<!-- ================================================================= -->
<!-- Copy class files to tomcat dir. -->
<!-- ================================================================= -->
<target name="copy" depends="build">
<copy todir="${webapp.dir}/com/bingo">
<fileset dir="${javac.dest}/com/bingo">
<include name="*.class"/>
</fileset>
</copy>
<copy todir="${webapp.dir}/com/bingo/util">
<fileset dir="${javac.dest}/com/bingo/util">
<include name="*.class"/>
</fileset>
</copy>
<copy todir="${webapp.dir}/com/bingo/database">
<fileset dir="${javac.dest}/com/bingo/database">
<include name="*.class"/>
</fileset>
</copy>
<copy todir="${webapp.dir}/com/bingo/dbocw">
<fileset dir="${javac.dest}/com/bingo/dbocw">
<include name="*.class"/>
</fileset>
</copy>
<copy todir="${webapp.dir}/com/bingo/finance/database">
<fileset dir="${javac.dest}/com/bingo/finance/database">
<include name="*.class"/>
</fileset>
</copy>
<copy todir="${webapp.dir}/com/bingo/finance/entity">
<fileset dir="${javac.dest}/com/bingo/finance/entity">
<include name="*.class"/>
</fileset>
</copy>
<copy todir="${webapp.dir}/com/bingo/finance/manager">
<fileset dir="${javac.dest}/com/bingo/finance/manager">
<include name="*.class"/>
</fileset>
</copy>
</target>
聽
<!-- ================================================================= -->
<!-- Remove all generated (compiled) class files. -->
<!-- ================================================================= -->
<target name="clean" depends="init">
<delete dir="${javac.dest}/" />
</target>
<!-- ================================================================= -->
<!-- Remove all backup files. -->
<!-- ================================================================= -->
<target name="delete" depends="init">
<delete >
<fileset dir="${java.source.dir}/com/bingo">
<include name="*.bak"/>
</fileset>
</delete>
<delete >
<fileset dir="${java.source.dir}/com/bingo/util">
<include name="*.bak"/>
</fileset>
</delete>
<delete >
<fileset dir="${java.source.dir}/com/bingo/database">
<include name="*.bak"/>
</fileset>
</delete>
<delete >
<fileset dir="${java.source.dir}/com/bingo/finance/database">
<include name="*.bak"/>
</fileset>
</delete>
<delete >
<fileset dir="${java.source.dir}/com/bingo/finance/entity">
<include name="*.bak"/>
</fileset>
</delete>
<delete >
<fileset dir="${java.source.dir}/com/bingo/finance/manager">
<include name="*.bak"/>
</fileset>
</delete>
</target>
聽
<!-- ================================================================= -->
<!-- Remove the temporary manifest file, actual work is done in the -->
<!-- dependencies. -->
<!-- ================================================================= -->
<target name="prejar" depends="build">
<mkdir dir="${jar.dest}"/>
<filter token="version" value="${version}" />
<copy file="${manifest.src}" tofile="${jar.dest}/manifest.mf"
filtering="true"/>
</target>
<!-- ================================================================= -->
<!-- This target Create bingo.jar -->
<!-- ================================================================= -->
<target name="jar" depends="prejar">
<delete file="${jar.dest}/bingo.jar"/>
<jar jarfile="${jar.dest}/bingo.jar" basedir="${javac.dest}"
manifest="${jar.dest}/manifest.mf"
/>
</target>
<!-- ================================================================= -->
<!-- This target builds the javadoc files. -->
<!-- ================================================================= -->
<target name="javadoc" depends="build,init">
<mkdir dir="${javadoc.dest}" />
<javadoc sourcepath="${java.source.dir}"
destdir="${javadoc.dest}"
classpath="${classpath}"
packagenames="${PackageList}"
version="true"
protected="true"
author="true"
use="true"
windowtitle="Bingo Free Java Code Version ${version}"
header="Bingo Free Java Code${version}"
/>
</target>
</project>
涓錛氫粙緇?
log4j鏄痡akarta鐨勪竴涓」鐩富瑕佹槸涓轟簡(jiǎn)璋冭瘯浣跨敤鐨勶紝涓轟簡(jiǎn)涓嶈鏄湪紼嬪簭涓啓寰堝System.out.println();
鎴戜釜浜鴻寰楁槸涓涓笉閿欑殑宸ュ叿錛岀▼搴忚皟璇曞ソ浠ュ悗浣犲彲浠ュ叧鎺塴og4j.
浜岋細(xì)涓嬭澆
浣犲彲浠ヤ粠涓嬮潰鐨勫湴鍧涓嬭澆鍒癮nt,鐩墠鐗堟湰錛?.13
http://jakarta.apache.org/builds/jakarta-log4j/release/v1.1.3/
涓夛細(xì)瀹夎
log4j涓嶉渶瑕佸畨瑁咃紝浣犲彧闇瑕佹妸log4j.jar,log4j-core.jar鏀懼湪classpath涓綘灝卞彲浠ヤ嬌鐢ㄣ?
鍥涳細(xì)浣跨敤log4j
1:)copy log4j.jar,log4j-core.jar鍒癱lasspath涓紝鍦╰omcat4.03涓綘鍙互鎶婂畠鏀懼湪
tomcat_home\common\lib鐩綍涓嬨?
2:璁劇疆灞炴ф枃浠?
log4j闇瑕佺敤鍒頒竴涓猯og4j.properties鏂囦歡鍐呭濡備笅錛?
log4j.properties
=====================================
log4j.rootCategory=, A1
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
鏈綆鍗曠殑閰嶇疆錛屽鏋滃笇鏈涘緢澶嶆潅錛岃嚜宸辯湅鏂囨。銆?
3錛氬啓鍚姩鏂囦歡
log4j鐨勫垵濮嬪寲鏈夊嚑縐嶆柟寮忥紝鎴戜笅闈㈠彧鎻愪緵涓縐嶆柟寮忋?
InitServlet.java (涓涓猻ervlet)
==================================
import java.io.InputStream;
import java.io.IOException;
import java.util.Hashtable;
import java.util.Locale;
import java.util.MissingResourceException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.UnavailableException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.servlet.*;
import java.io.*;
public class InitServlet extends HttpServlet {
protected String config = "/log4j.properties";
public void init() throws ServletException {
ServletContext sct = getServletContext();
System.out.println("[Log4j]: The Root Path: " + sct.getRealPath("/"));
System.out.println("[Log4j]: InitServlet init start...");
org.apache.log4j.PropertyConfigurator.configure(sct.getRealPath("/") + getServletConfig().getInitParameter("log4j"));
System.out.println("[Log4j]: InitServlet init over.");
}
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
;
}
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
;
}
}
4:璁劇疆web.xml
涓婇潰鍐欑殑servlet鐨勫湪AppServer鍚姩鏄氨瑕佽繍琛岋紝鎵浠ヤ綘闇瑕侀厤緗竴涓媤eb.xml
鍔犱笂濡備笅鍐呭錛?
<servlet>
<servlet-name>init</servlet-name>
<servlet-class>com.InitServlet</servlet-class>
<init-param>
<param-name>log4j</param-name>
<param-value>/log4j.properties</param-value>
<!--鐩稿aplication鐨勮礬寰勫湪ROOT/log4j.properties鍙傜収涓婇潰-->
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
5:鍦ㄧ▼搴忎腑浣跨敤log4j;
private static org.apache.log4j.Category log =
org.apache.log4j.Category.getInstance(classname);
//classname java鏂囦歡鍚峔r
log.debug(".........");
log.error(".........");
.....
鍏蜂綋鐨勮繍鐢ㄤ綘鍙互鐪媗og4j鐨勬枃妗c?