锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
-arch [processor architecture] -application [id] -clean -configuration [cofigfile location] -data [workspace location] -debug [option file] -dev [classpath entry] -nosplash -vm [jre path] -vmargs [Java VM arguments] Java Excel鏄竴寮鏀炬簮鐮侀」鐩紝閫氳繃瀹僇ava寮鍙戜漢鍛樺彲浠ヨ鍙朎xcel鏂囦歡鐨勫唴瀹廣佸垱寤烘柊鐨凟xcel鏂囦歡銆佹洿鏂板凡緇忓瓨鍦ㄧ殑Excel鏂囦歡銆備嬌鐢ㄨAPI闈濿indows鎿嶄綔緋葷粺涔熷彲浠ラ氳繃綰疛ava搴旂敤鏉ュ鐞咵xcel鏁版嵁琛ㄣ傚洜涓烘槸浣跨敤Java緙栧啓鐨勶紝鎵浠ユ垜浠湪Web搴旂敤涓彲浠ラ氳繃JSP銆丼ervlet鏉ヨ皟鐢ˋPI瀹炵幇瀵笶xcel鏁版嵁琛ㄧ殑璁塊棶銆?/p> 鐜板湪鍙戝竷鐨勭ǔ瀹氱増鏈槸V2.0錛屾彁渚涗互涓嬪姛鑳斤細 鐜板湪榪樹笉鏀寔浠ヤ笅鍔熻兘錛屼絾涓嶄箙灝變細鎻愪緵浜嗭細 鍏蜂綋鐢ㄧ殑鏃跺欏緢綆鍗曪紝閬囧埌浠涔堜笉鎳傚緱鏌ヤ竴涓婣PI鏂囨。灝卞彲浠ヤ簡錛堜粖澶╂墠鍙戠幇鎴戜篃浼氱敤API浜嗭紝^_^錛夈?br />鍏充簬POI浣跨敤鏃跺嚭鐜扮殑闂鐜板湪榪樻病鏈夎В鍐籌紝涓嶇煡閬撴槸浠涔堝師鍥犮?/p> On Windows, this can be done via the following. For this document we assume that you have installed Axis in C:\axis. To store this information permanently in WinNT/2000/XP you will need to right click on "My Computer" and select "Properties". Click the "Advanced" tab and create the new environmental variables. It is often better to use WordPad to create the variable string and then paste it into the appropriate text field. Service here"鍗寵〃鏄?Web Service 鏈嶅姟绔▼搴忓畨瑁呭畬鎴? 涓涓嬶紝榪欓噷灝變笉鍐嶆弿榪頒簡銆?br />C:\>cd \
鍏跺疄錛孍clipse鏄竴涓彲浠ヨ繘琛岄潪甯哥伒媧婚厤緗殑緋葷粺錛岄櫎浜嗕互緙虹渷鐨勬柟寮忓惎鍔ㄤ互澶栵紝榪樺彲浠ユ寚瀹氬悇縐嶅弬鏁版潵瀹氬埗鍚姩鏂瑰紡銆傚湪鍙傝冧簡涓浜涜祫鏂欎箣鍚庯紝鎴戞葷粨浜嗕竴浜涙瘮杈冨父鐢ㄧ殑鍚姩鏃禖ommand Arguments錛屽鏋滄湁涓嶆紜殑鍦版柟甯屾湜澶у浜堜互鎸囧嚭銆?/p>
鎻忚堪錛氭寚瀹氭墍浣跨敤鐨勫鐞嗗櫒鐨勭被鍒?br />涓句緥錛歟clipse -arch x86鎴杄clipse -arch sparc
鎻忚堪錛氭寚瀹氳榪愯鐨勫簲鐢紝id涓烘墿灞昽rg.eclipse.core.applications鎵╁睍鐐圭殑鎻掍歡id鍔犳墿灞昳d
涓句緥錛氫緥濡傛湁涓彃浠秈d涓篹du.sdu.app錛屾墿灞昳d涓簃yapp錛屽垯eclipse -application edu.sdu.app.myapp錛屽氨浼氭墽琛屼綘鐨勬墿灞曞簲鐢?/p>
鎻忚堪錛氭竻絀烘彃浠剁紦瀛樺唴瀹?br />涓句緥錛歟clipse -clean錛屾湁鏃舵彃浠舵樉紺轟笉鍑烘潵鏄洜涓篍clipse灝嗘彃浠惰繘琛屼簡緙撳瓨浠ュ姞閫熷惎鍔ㄨ繃紼嬶紝鑻ユ寚瀹氭鍙傛暟鍒欎細娓呯┖緙撳瓨錛屼粠澶村姞杞?/p>
鎻忚堪錛氭寚瀹氶厤緗枃浠剁殑浣嶇疆錛屽湪鍚姩鏃朵嬌鐢ㄦ鐩綍涓嬬殑閰嶇疆鏂囦歡config.ini鏉ュ惎鍔?br />涓句緥錛歟clipse -configuration d:/eclipse/configuration
鎻忚堪錛氭寚瀹氬惎鍔ㄦ椂鐨刉orkspace浣嶇疆
涓句緥錛氫緥濡俉orkspace浣嶇疆璁懼湪D:/myworkspace錛屽垯eclipse -data D:/myworkspace
鎻忚堪錛氫互Debug鐘舵佸惎鍔‥clipse錛屾墍鏈夌殑Debug寮鍏沖湪.options鏂囦歡涓寚瀹?br />涓句緥錛歟clipse -debug d:/eclipse/.options
鎻忚堪錛氫互寮鍙戠姸鎬佸惎鍔‥clipse錛岃繖浼氭坊鍔犳墍鏈夋寚瀹氱殑璺緞浣滀負姣忎釜鎻掍歡鐨凜lasspath
涓句緥錛氫緥濡俥clipse -dev bin錛屼細灝嗕駭鐢熷湪bin鐩綍涓嬬殑鎵鏈夌被鍔犺澆鍒扮被璺緞涓紝榪欏湪寮鍙戞彃浠舵椂闈炲父鏈夌敤
鎻忚堪錛氭寚瀹氬惎鍔ㄦ椂涓嶆樉紺洪棯灞?br />涓句緥錛歟clipse -nosplash
鎻忚堪錛氭寚瀹氬惎鍔ㄦ椂鎵浣跨敤鐨凧ava铏氭嫙鏈?br />涓句緥錛氫緥濡傝浣跨敤鑷繁鐨凧ava铏氭嫙鏈猴紝鍒檈clipse -vm D:/j2sdk1.4.2_04/jre/bin/java.exe錛岃繖鏍瘋繕鏈変竴涓ソ澶勶紝灝辨槸鍙互寮鍚竴涓狢onsole錛岃兘澶熸樉紺烘帶鍒跺彴淇℃伅錛屽綋鐒惰嫢浣跨敤eclipse -vm D:/j2sdk1.4.2_04/jre/bin/javaw.exe鍒欎笉浼氬啀鏄劇ず鎺у埗鍙?/p>
鎻忚堪錛氭寚瀹氬惎鍔ㄦ椂瑕佷嬌鐢ㄧ殑Java铏氭嫙鏈哄弬鏁?br />涓句緥錛氫緥濡傝鎸囧畾浣跨敤鐨勫唴瀛樺閲忥紝鍒檈clipse -vmargs "-Xms256m -Xmx1024m"
娉細姝ゅ弬鏁頒竴瀹氳鏀懼湪鎵鏈夊弬鏁板彉閲忕殑鏈鍚庨潰
]]>
]]>
浠涔堟槸璁捐妯″紡
璁捐妯″紡鏄竴濂楄鍙嶅浣跨敤銆佸鏁頒漢鐭ユ檽鐨勩佺粡榪囧垎綾葷紪鐩殑銆佷唬鐮佽璁$粡楠岀殑鎬葷粨銆備嬌鐢ㄨ璁℃ā寮忔槸涓轟簡鍙噸鐢ㄤ唬鐮併佽浠g爜鏇村鏄撹浠栦漢鐞嗚В銆佷繚璇佷唬鐮佸彲闈犳с?br />
姣棤鐤戦棶錛岃璁℃ā寮忎簬宸變簬浠栦漢浜庣郴緇熼兘鏄璧㈢殑錛岃璁℃ā寮忎嬌浠g爜緙栧埗鐪熸宸ョ▼鍖栵紝璁捐妯″紡鏄蔣浠跺伐紼嬬殑鍩虹煶錛屽鍚屽ぇ鍘︾殑涓鍧楀潡鐮栫煶涓鏍楓?br />
GoF鐨勨滆璁℃ā寮忊濇槸絎竴嬈″皢璁捐妯″紡鎻愬崌鍒扮悊璁洪珮搴︼紝騫跺皢涔嬭鑼冨寲錛屾湰涔︽彁鍑轟簡23縐嶅熀鏈璁℃ā寮忥紝鑷錛屽湪鍙鐢ㄩ潰鍚戝璞¤蔣浠剁殑鍙戝睍榪囩▼涓紝鏂扮殑澶ч噺鐨勮璁℃ā寮忎笉鏂嚭鐜般?br />
璁捐妯″紡鍜屾鏋?br />鐜板湪錛屽彲澶嶇敤闈㈠悜瀵硅薄杞歡緋葷粺鐜板湪涓鑸垝鍒嗕負涓夊ぇ綾伙細搴旂敤紼嬪簭 宸ュ叿綆卞拰妗嗘灦(Framework),鎴戜滑騫蟲椂寮鍙戠殑鍏蜂綋杞歡閮芥槸搴旂敤紼嬪簭錛汮ava鐨凙PI灞炰簬宸ュ叿綆?鑰屾鏋舵槸鏋勬垚涓綾葷壒瀹氳蔣浠跺彲澶嶇敤璁捐鐨勪竴緇勭浉浜掑崗浣滅殑綾匯侲JB錛圗nterprise JavaBeans錛夋槸Java搴旂敤浜庝紒涓氳綆楃殑妗嗘灦.
妗嗘灦閫氬父瀹氫箟浜嗗簲鐢ㄤ綋緋葷殑鏁翠綋緇撴瀯 綾誨拰瀵硅薄鐨勫叧緋葷瓑絳夎璁″弬鏁幫紝浠ヤ究浜庡叿浣撳簲鐢ㄥ疄鐜拌呰兘闆嗕腑綺懼姏浜庡簲鐢ㄦ湰韜殑鐗瑰畾緇嗚妭銆傛鏋朵富瑕佽褰曡蔣浠跺簲鐢ㄤ腑鍏卞悓鐨勮璁″喅絳栵紝妗嗘灦寮鴻皟璁捐澶嶇敤錛屽洜姝ゆ鏋惰璁′腑蹇呯劧瑕佷嬌鐢ㄨ璁℃ā寮?
鍙﹀錛岃璁℃ā寮忔湁鍔╀簬瀵規鏋剁粨鏋勭殑鐞嗚В錛屾垚鐔熺殑妗嗘灦閫氬父浣跨敤浜嗗縐嶈璁℃ā寮?濡傛灉浣犵啛鎮夎繖浜涜璁℃ā寮忥紝姣棤鐤戦棶錛屼綘灝嗚繀閫熸帉鎻℃鏋剁殑緇撴瀯錛屾垜浠竴鑸紑鍙戣呭鏋滅獊鐒舵帴瑙JB J2EE絳夋鏋訛紝浼氳寰楃壒鍒毦瀛︼紝闅炬帉鎻★紝閭d箞杞屽厛鎺屾彙璁捐妯″紡錛屾棤鐤戞槸緇欎簡浣犲墫鏋怑JB鎴朖2EE緋葷粺鐨勪竴鎶婂埄鍣ㄣ?
EJB涓殑璁捐妯″紡
涓嬮潰鎴戜滑浠庤璁℃ā寮忕殑瑙掑害鐪嬬湅EJB鐨勬鏋舵槸鎬庢牱鐨勶紵鍦ㄨ繖涔嬪墠鍋囪浣犲凡緇忓ぇ姒備簡瑙d簡璁捐妯″紡銆備笓闂ㄧ殑璁捐妯″紡闃愯堪璇瘋鎴戠殑璁捐妯″紡涔嬬郴鍒?
EJB鏄噰鍙栧灞傜粨鏋勶紝鍘熷厛鎴戜滑鏁版嵁搴撳紑鍙戝熀鏈槸搴旂敤紼嬪簭(鍟嗕笟閫昏緫榪愮畻)鐩存帴璋冪敤鏁版嵁搴撻┍鍔紝鍦‥JB涓紝涓哄皢鍟嗕笟閫昏緫璁$畻鍜屾暟鎹簱鎴劧鍒嗗紑錛屼嬌鐢ㄥ涓粨鏋勫紡妯″紡:Adapter妯″紡鍜孊ridge妯″紡絳?榪欐牱鍋氱殑濂藉鏄劇劧鏈変笁涓細
1.鍒嗙浜嗗晢涓氶昏緫灞傚拰鏁版嵁璁塊棶灞?
2.鑳藉悓鏃舵敮鎸佸涓暟鎹簱錛?
3.浣嗘暟鎹簱綾誨瀷鏇存崲鏃訛紝涓嶄細璁捐鍒板晢涓氶昏緫浠g爜鐨勫ぇ閲忎慨鏀?
EJB涓皢瀵規暟鎹簱榪涜璋冪敤(濡傚彂鍑簊elect絳夎鍙?縐頒負浼氳瘽bean(Sessionbean),鑰屽皢瀵瑰簲鏁版嵁搴撲竴涓釜璁板綍鐨刡ean縐頒負瀹炰綋bean(Entity bean);鐢辮繖涓ょ綾誨瀷鐨刡ean瀹屾垚瀵規暟鎹簱鐨勮闂?
浼氳瘽bean涓鑸拰瀹㈡埛绔簲鐢ㄦ槸涓涓瀵瑰簲錛岃屽拰鏁版嵁搴撶鑱旂郴绱у瘑鐨勬槸瀹炰綋bean,EJB鍦ㄥ疄浣揵ean(鎴栫洿鎺ュ湪浼氳瘽bean)鍜屾暟鎹簱涔嬮棿浣跨敤浜咥dapter妯″紡鍜孊ridge妯″紡錛屾棤鎰忓湪瀹炰綋bean鍜屾暟鎹簱涔嬮棿鍙堝浜嗕竴灞傦紝縐頒箣涓篋AO(Data Access Object )錛孌AO瀹為檯灝辨槸璁捐妯″紡鐨勬販鍚堜綋.
鎴戜滑浠ava鐨勫疇鐗╁簵涓殑Catalog涓轟緥,榪欐槸涓撻棬澶勭悊瀹犵墿搴椾腑鐨勫疇鐗╃被鍒?鍦ㄥ鏁版嵁搴撹闂腑錛屾湁涓や釜涓昏紼嬪簭錛欳atalogEJB鍜孋atalogDAO,鎴戜滑浠庡叿浣撲唬鐮佷腑鐪嬬湅璁捐妯″紡鏄庝箞搴旂敤鐨?
Bridge妯″紡鍜孉dapter妯″紡
鎴戜滑棣栧厛鐪嬬湅CatalogEJB浠g爜錛?br />
public class CatalogEJB implements SessionBean {
銆銆protected CatalogDAO dao;
銆銆//浠嶥AO宸ュ巶涓幏鍙栦竴涓狣AO 榪欐槸璋冪敤宸ュ巶(factory)妯″紡鐨勪竴涓疄渚?br />銆銆public void ejbCreate() {
銆銆銆銆try {
銆銆銆銆銆銆dao = CatalogDAOFactory.getDAO();
銆銆銆銆}
銆銆銆銆catch (CatalogDAOSysException se) {
銆銆銆銆銆銆Debug.println("Exception getting dao " + se);
銆銆銆銆銆銆throw new EJBException(se.getMessage());
銆銆銆銆}
銆銆}
銆銆....
銆
}
鎴戜滑鍙戠幇鍦–atalogEJB涓茍娌℃湁閫氬父鐨勪細璇漛ean閭f牱鏈夊鏁版嵁搴撴搷浣滅殑"select .. from ."絳変箣綾籗QL鎿嶄綔璇彞錛岃繖浜涢兘琚皝瑁呭埌DAO鐨勫叿浣撳疄鐜頒腑(Concrete class).
鍦–atalog榪欎釜紺轟緥涓嬌鐢ㄤ簡璁捐妯″紡鐨凚ridge妯″紡,鍒ゆ柇鏄惁鏄煇縐嶆ā寮忥紝涓昏渚濇嵁鍏跺弬涓庤呯殑縐嶇被鍜岀浉浜掑叧緋伙紝鎴戜滑鍏堢湅鐪婤ridge妯″紡鐨勫畾涔夊拰鍙備笌鑰咃細
Bridge妯″紡鏄皢鎶借薄鍜岃涓哄垝鍒嗗紑鏉?鍚勮嚜鐙珛,浣嗚兘鍔ㄦ佺殑緇撳悎璧鋒潵錛堝ソ璞℃惌寤轟簡涓搴фˉ錛夈傚湪鏈緥涓紝鏄皢鍟嗕笟閫昏緫鍜屾暟鎹簱璁塊棶榪欐牱鐨勮涓哄垝鍒嗗紑鏉ワ紝鏁版嵁搴撹闂笓闂ㄦ斁緗湪DAO涓簡銆?br />
Bridge妯″紡闇瑕佷袱涓帴鍙?鎶借薄綾誨拰鎺ュ彛閫氱О涓烘帴鍙?錛屼竴涓敤鏉ュ皝瑁呮娊璞¢儴鍒嗭紝鏈緥涓槸灝佽鍟嗕笟閫昏緫錛屾槸CatalogEJB;榪樻湁涓涓槸灝佽琛屼負(Implementor)錛屾湰渚嬩腑鏄疌atalogDAO,鐪嬬湅CatalogDAO浠g爜錛?br />
public interface CatalogDAO {
銆銆public Category getCategory(String categoryID, Locale l)
銆銆throws CatalogDAOSysException;
銆銆public Page getCategories(int start, int count, Locale l)
銆銆throws CatalogDAOSysException;
銆銆public Product getProduct(String productID, Locale l)
銆銆throws CatalogDAOSysException;
銆銆public Page getProducts(String categoryID, int start, int count, Locale l)
銆銆throws CatalogDAOSysException;
銆銆public Item getItem(String itemID, Locale l)
銆銆throws CatalogDAOSysException;
銆銆public Page getItems(String productID, int start, int size, Locale l)
銆銆throws CatalogDAOSysException;
銆銆public Page searchItems(String query, int start, int size, Locale l)
銆銆throws CatalogDAOSysException;
}
Bridge妯″紡涓弬涓庤呰繕闇瑕佹湁琛屼負鎺ュ彛鐨勫叿浣撳疄鐜?ConcreteImplementor),鍦ㄦ湰渚嬩腑鏄疌atalogDAOImpl,铏界劧鍦ㄧ洰鍓嶅疇鐗╁簵涓彧鏈変竴涓狢oncreteImplementor,浣嗘槸鍙墿灞曚負鍒癕ysql XML絳夋暟鎹簮璁塊棶,姣斿浣犲彲浠ヨ嚜宸辨柊澧炰竴涓彨CatalogDAOImplMysql錛屼篃鏄綔涓篊atalogDAO鐨勫瓙綾匯?br />
鐪嬬湅CatalogDAO鐨勪竴涓瓙綾籆atalogDAOImpl鐨勪唬鐮侊細
public class CatalogDAOImpl implements CatalogDAO {
銆銆protected static DataSource getDataSource()
銆銆銆銆throws CatalogDAOSysException {
銆銆銆銆try {
銆銆銆銆銆銆InitialContext ic = new InitialContext();
銆銆銆銆銆銆return (DataSource) ic.lookup(JNDINames.CATALOG_DATASOURCE);
銆銆銆銆}
銆銆銆銆catch (NamingException ne) {
銆銆銆銆銆銆throw new CatalogDAOSysException("NamingException while looking "
銆銆銆銆銆銆銆銆+ "up DB context : "
銆銆銆銆銆銆銆銆+ ne.getMessage());
銆銆銆銆}
銆銆}
銆銆//鍏蜂綋Select璇彞鍦ㄨ繖閲屽嚭鐜幫紝榪欓噷涓昏鏄疧racle 鏁版嵁搴撶殑璁塊棶璇彞
銆銆public Category getCategory(String categoryID, Locale l)
銆銆throws CatalogDAOSysException {
銆銆銆銆Connection c = null;
銆銆銆銆PreparedStatement ps = null;
銆銆銆銆ResultSet rs = null;
銆銆銆銆Category ret = null;
銆銆銆銆try {
銆銆銆銆銆銆c = getDataSource().getConnection();
銆銆銆銆銆銆ps = c.prepareStatement("select a.catid, name, descn "
銆銆銆銆銆銆銆銆銆銆+ "from (category a join "
銆銆銆銆銆銆銆銆銆銆+ "category_details b on "
銆銆銆銆銆銆銆銆銆銆+ "a.catid=b.catid) "
銆銆銆銆銆銆銆銆銆銆+ "where locale = ? "
銆銆銆銆銆銆銆銆銆銆+ "and a.catid = ?",
銆銆銆銆銆銆ResultSet.TYPE_SCROLL_INSENSITIVE,
銆銆銆銆銆銆ResultSet.CONCUR_READ_ONLY);
銆銆銆銆銆銆ps.setString(1, l.toString());
銆銆銆銆銆銆ps.setString(2, categoryID);
銆銆銆銆銆銆rs = ps.executeQuery();
銆銆銆銆銆銆if (rs.first()) {
銆銆銆銆銆銆銆銆ret = new Category(rs.getString(1).trim(),
銆銆銆銆銆銆銆銆rs.getString(2),
銆銆銆銆銆銆銆銆rs.getString(3));
銆銆銆銆銆銆}
銆銆銆銆銆銆rs.close();
銆銆銆銆銆銆ps.close();
銆銆銆銆銆銆c.close();
銆銆銆銆銆銆return ret;
銆銆銆銆}
銆銆銆銆catch (SQLException se) {
銆銆銆銆銆銆throw new CatalogDAOSysException("SQLException: "
銆銆銆銆銆銆+ se.getMessage());
銆銆銆銆}
銆銆銆銆....
}
Bridge妯″紡鍙備笌鑰呮葷粨濡備笅錛?br />
鍟嗕笟閫昏緫鎶借薄綾?(CatalogEJB)
鎶借薄鐨勫晢涓氶昏緫鎿嶄綔.
瀵笵AOImplementor璋冪敤.
涓嶅叧蹇冩槸鍏蜂綋浠涔堟暟鎹簮琚嬌鐢?鏃犺鏄疧racle榪樻槸JDBC榪樻槸XML).
DAO(Data Access Object) (CatalogDAO)
瀵規暟鎹簮鐨勬娊璞℃搷浣滆涓?
鎻愪緵浜嗛潪甯告柟渚胯闂拰緇存姢綆$悊鏁版嵁鐨凙PI緇撴瀯.
DAOImplementor (CatalogDAOImpl 鏈夊彲鑳芥湁CatalogDAOImplSybase CatalogDAOImplMysql 絳?
瀹炵幇鍏蜂綋鐨凞AO鎺ュ彛鍐呭.
浣跨敤Adapter妯″紡錛屽皢鐗瑰畾鐨勬暟鎹簮椹卞姩鎺ュ彛閫傞厤鍒癉AO鎺ュ彛涓幓
鏁版嵁婧?( Oracle, or Sybase database via JDBC API)
鎻愪緵璁塊棶鍏蜂綋鏁版嵁搴撶殑椹卞姩鎺ュ彛錛屽鍖呮嫭榪炴帴姹犵瓑.
鍦ㄤ嬌鐢ㄦ暟鎹簮椹卞姩鎺ュ彛鏃訛紝闇瑕佷嬌鐢ˋdapter妯″紡錛孉dapter妯″紡灝嗕袱涓笉鐩稿叧鐨勭被綰犲悎鍦ㄤ竴璧蜂嬌鐢紝Adapter妯″紡瀹為檯鏄嬌鐢ㄧ粍鍚?composition)鍜岀戶鎵?inheritance)涓ょ鏂瑰紡鍐嶇敓綾伙紝鍦ㄨ憲鍚嶇殑"think in Java"鐨?綾誨啀鐢?涓撻棬鎻愬埌榪欎袱涓柟寮?
寰堟樉鐒訛紝濡傛灉浣犲Bridge妯″紡鍜孉dapter妯″紡鐔熸倝錛岄偅涔堝瀹犵墿搴椾腑鐨凜atalog鐞嗚В灝變細闈炲父蹇紝鍚屾牱錛屽湪瀹犵墿搴楀叾浠栭儴鍒嗗璁㈠崟 鐢ㄦ埛娉ㄥ唽 絳夐兘鑳借繀閫熺悊瑙c?br />
Factory妯″紡鍜孲ingleton妯″紡
璇ユā寮忕被浼糿ew錛屾槸鐢ㄦ潵鍒涘緩瀵硅薄鐨勶紝浣跨敤Factory妯″紡鏄負浜嗗疄鐜伴潰鍚戝璞$殑鍩烘湰鍘熷垯.灝佽(Encapsulation)鍜屽垎媧?Delegation);灝嗗垱寤哄璞′笌浣跨敤瀵硅薄榪涜鍒嗗伐銆傚洜姝ゅ湪騫蟲椂寮鍙戣繃紼嬩腑錛屽敖閲忎嬌鐢‵actory妯″紡鍒涘緩瀵硅薄銆?br />
鏈緥CatalogEJB涓槸浣跨敤Factory妯″紡鑾峰緱涓涓狣AO鐨勫叿浣撳疄渚嬪璞★紝瑙佷笂闈atalogEJB浠g爜涓敞閲娿傛垜浠湅鐪婥atalogDAOFactory鐨勪唬鐮?
public class CatalogDAOFactory {
銆銆public static CatalogDAO getDAO() throws CatalogDAOSysException {
銆銆銆銆CatalogDAO catDao = null;
銆銆銆銆try {
銆銆銆銆銆銆InitialContext ic = new InitialContext();
銆銆銆銆銆銆String className = (String) ic.lookup(JNDINames.CATALOG_DAO_CLASS);
銆銆銆銆銆銆catDao = (CatalogDAO) Class.forName(className).newInstance();
銆銆銆銆} catch (NamingException ne) {
銆銆銆銆銆銆...
銆銆銆銆}
銆銆銆銆return catDao;
}
鍦–atalogDAOFactory鍙互渚濇嵁緋葷粺鐨勯厤緗枃浠訛紝鍔ㄦ佽幏寰桪AO鐨勬柟娉曪紝涔嬫墍浠ラ噰鍙栧姩鎬佹柟寮忥紝褰撶劧渚夸簬鐢ㄦ埛鑷繁澧炲姞鑷繁鐨凞AO鏂瑰紡錛岃屼笉蹇呬慨鏀逛唬鐮侊紝鍙鐩存帴淇敼閰嶇疆鏂囦歡灝卞彲浠ャ?br />
濡傛灉鍦ㄨ繖閲屽彧闇瑕丆atalogDAOFactory浜х敓涓涓疄渚?鍙互閲囧彇Singleton妯″紡,Singleton鐨勭洰鐨勬槸鎺у埗綾誨疄渚嬪璞$殑鍒涘緩錛屽茍涓斿厑璁告暣涓▼搴忓彧鍦ㄤ竴鐐瑰瀹冭繘琛岃闂係ingleton鏈韓綾誨彧鑳藉垱寤轟竴涓?鏄崟綰跨▼銆?br />
public class CatalogDAOFactory {
銆銆private static CatalogDAO catDao = null;
銆銆public static CatalogDAO getIntance(){
銆銆銆銆if (catDao==null)
銆銆銆銆銆銆try {
銆銆銆銆銆銆銆銆InitialContext ic = new InitialContext();
銆銆銆銆銆銆銆銆String className =
銆銆銆銆銆銆銆銆 銆銆(String) ic.lookup(JNDINames.CATALOG_DAO_CLASS);
銆銆銆銆銆銆銆銆catDao = (CatalogDAO) Class.forName(className).newInstance();
銆銆銆銆銆銆} catch (NamingException ne) {
銆銆銆銆銆銆銆銆...
銆銆銆銆銆銆}
銆銆銆銆 }
銆銆銆銆return catDao;
銆銆}
}
閭d箞鍦–atalogEJB鐨勮皟鐢ㄤ粠
dao = CatalogDAOFactory.getDAO();
瑕佹敼涓?br />dao = CatalogDAOFactory.getIntance();
Facade妯″紡
鍦‥JB搴旂敤涓紝鏈変袱涓鐐癸紝榪欎竴绔槸鐢ㄦ埛绔紝鍙﹀涓绔槸EJB,閫氬父鍦ㄨ繖涓や釜绔偣闂翠細澧炲姞涓灞傦紝鐢ㄦ潵鏉炬暎涓や釜绔偣涔嬮棿鐨勮﹀悎錛屾瘮濡傚湪瀹犵墿搴椾緥瀛愪腑,鑰冭檻鍒頒笉鍚岃韓浠界殑鐢ㄦ埛鏈変笉鍚岀殑鎿嶄綔嫻佺▼錛屾瘮濡傞【瀹㈡敞鍐岃繘鍏ュ悗錛岄渶瑕佹祻瑙堢洰褰曪紝涓嬭鍗曪紝鑰屽晢搴楃鐞嗚呰繘鍏ュ悗闇瑕佺‘璁ゆ垨鑰呭惁瀹氳鍗曪紝鎴栬呮鏌ュ簱瀛樸傝繖浜涘姛鑳介渶瑕佸熷姪Session bean鍜孍ntity bean瀹屾垚銆?br />
浣嗘槸濡傛灉鐢ㄦ埛绔洿鎺ュ拰榪欎簺bean浜掑姩,浼氭湁浠ヤ笅闂:
1. 鐢ㄦ埛绔繀欏繪敞鎰忓拰榪欎簺beans鐨勬墍鏈夋湁鑱旂郴鎴栦簰鍔ㄧ殑浜嬫儏錛屾棤娉曢樆姝㈢敤鎴風鍙兘涓嶆伆褰撶殑浣跨敤榪欎簺beans.
2.濡傛灉EJB鐨凙PI鏀瑰姩錛岄偅涔堢敤鎴風鐨勪竴浜涗唬鐮佷篃瑕佷慨鏀廣傛棤鐤戞墿灞曟у緢宸?br />3.鍗充嬌榪欎簺beans閮藉湪鍚屼竴鍙版湇鍔″櫒涓婏紝鐢ㄦ埛绔繕鏄敤remote鏂瑰紡鏉ヨ皟鐢ㄥ畠浠紝閫犳垚緗戠粶鏃犳晠鎷ユ尋銆?br />
閭d箞鎴戜滑浣跨敤Facade妯″紡鏉ヨВ鍐寵繖涓棶棰橈紝Facade鐨勫畾涔夋槸涓哄瓙緋葷粺涓殑涓緇勬帴鍙f彁渚涗竴涓竴鑷寸殑鐣岄潰,寰堟樉鐒舵垜浠渶瑕佷負榪欎簺bean鎻愪緵涓涓粺涓鐨勫澶栫晫闈€傚涓嬪浘錛?br />
鍦ㄥ疇鐗╁簵涓紝ShoppingClientFacadeLocalEJB鏄潰瀵規墍鏈夌敤鎴風鎿嶄綔鐨勭粺涓鐣岄潰錛岀敤鎴風鎿嶄綔灝變笉鐩存帴鍜岄偅浜汦JB濡侰ustomerEJB鎴朣hoppingCartEJB鏈夎仈緋?鑰屾槸閮介氳繃ShoppingClientFacadeLocalEJB鏉ヨ仈緋葷殑銆備唬鐮佸涓嬶細
public class ShoppingClientFacadeLocalEJB implements SessionBean {
銆銆...
銆銆//鍜孋ustomerEJB鑱旂郴
銆銆public CustomerLocal getCustomer() throws FinderException {
銆銆銆銆if (userId == null) {
銆銆銆銆銆銆...
銆銆銆銆}
銆銆銆銆try {
銆銆銆銆銆銆InitialContext ic = new InitialContext();
銆銆銆銆銆銆Object o = ic.lookup("java:comp/env/ejb/petstore/local/customer");
銆銆銆銆銆銆CustomerLocalHome home =(CustomerLocalHome)o;
銆銆銆銆銆銆customer = home.findByPrimaryKey(userId);
銆銆銆銆} catch (javax.naming.NamingException nx) {
銆銆銆銆銆 ...
銆銆銆銆}
銆銆銆銆return customer;
銆銆}
銆銆.....
銆銆//鍜孲hoppingCartEJB鑱旂郴
銆銆public ShoppingCartLocal getShoppingCart() {
銆銆銆銆if (cart == null) {
銆銆銆銆銆銆try {
銆銆銆銆銆銆銆銆InitialContext ic = new InitialContext();
銆銆銆銆銆銆銆銆Object o = ic.lookup("java:comp/env/ejb/cart/Cart");
銆銆銆銆銆銆銆銆ShoppingCartLocalHome home =(ShoppingCartLocalHome)o;
銆銆銆銆銆銆銆銆cart = home.create();
銆銆銆銆銆銆} catch (javax.ejb.CreateException cx) {
銆銆銆銆銆銆銆...
銆銆銆銆銆銆}
銆銆銆銆}
銆銆銆銆return cart;
銆銆}
銆銆....
}
Facade妯″紡鍙備笌鑰咃細
SessionFacade (ShoppingClientFacadeLocalEJB)
鎻愪緵涓緇勬搷浣滄祦紼?
灝嗙湡姝e伐浣滃鎵樺埌EJB鐨刡ean.
EJB鐨刡ean (CustomerEJB, ShoppingCartEJB絳夌瓑)
鎵ц鍩烘湰鐨勫晢涓氶昏緫鎿嶄綔
娌℃湁浠諱綍瀵筍essionFacade鐨勮皟鐢?
榪欐牱涓嶄絾鍙墿灞曟уぇ澶у寮猴紝鏁堢巼涔熸彁楂樹簡錛岀敤鎴風鍙渶瑕佷竴嬈emote瀵筍essionFacade璋冪敤灝卞彲浠ヤ簡錛岃孲essionFacade浼氳嚜鍔ㄥ畾浣嶅埌涓庡畠鍚屼竴鍙版湇鍔″櫒鐨勯偅浜涢偦灞卋ean(CustomerEJB, ShoppingCartEJB絳夌瓑),鏃犵枒鍑忓皯緗戠粶鎷ユ尋錛屾彁楂樹簡閫熷害.
鎬葷粨
鍦‥JB鐨勫叿浣撲嬌鐢ㄤ腑錛屼嬌鐢ㄥ悎閫傜殑璁捐妯″紡錛屼笉浣嗕嬌浠g爜鍙噸鐢ㄦ?鍙嫇灞曟у寮猴紝鏈閲嶈鐨勬槸鑳芥彁楂樻晥鐜囧拰閫熷害錛屾垜浠煡閬揈JB妗嗘灦鐢變簬鑰冭檻澶у瀷緋葷粺涓簨鍔″畨鍏ㄧ瓑鍚勬柟闈㈤棶棰橈紝鏁堢巼鎬ц兘鏈夋墍嬈犵己錛岄偅涔堟垜浠湪鍏蜂綋闂鍏蜂綋搴旂敤鏃訛紝浣跨敤璁捐妯″紡鍙互寮ヨˉ榪欎釜闂銆?br />
渚嬪Proxy妯″紡鍙互涓烘垜浠湪璁塊棶宸ㄥぇ鐨勯渶瑕佽姳璐逛竴瀹氭椂闂存墠鑳藉睍寮鐨勫璞℃椂錛屾彁渚涗竴涓唬鐞嗭紝榪欐牱涓嶄細鍥犱負閭d釜宸ㄥぇ瀵硅薄鑰屽獎鍝嶅綋鍓嶈繍琛岄熷害錛孍JB涓殑閭d簺bean寰堟樉鐒跺睘浜庡法澶у璞★紙鍥犱負瀹冧滑鏈夊弽澶嶇殑鏁版嵁搴撴搷浣滐紝榪欎簺寰堣垂鏃墮棿銆曘?br />
Flyweight妯″紡鏄伩鍏嶅ぇ閲忔嫢鏈夌浉鍚屽唴瀹圭殑灝忕被鐨勫紑閿(濡傝楄垂鍐呭瓨),浣垮ぇ瀹跺叡浜竴涓被(鍏冪被).褰撲綘瑕佷粠EJB涓幏鍙栦竴緋誨垪瀛楃涓?鑰岃繖浜涘瓧絎︿覆涓偗瀹氭湁璁稿鏄噸澶嶇殑,閭d箞鎴戜滑鍙互灝嗚繖浜涢噸澶嶇殑瀛楃涓插偍瀛樺湪Flyweight姹?pool)涓互杈懼埌鍏變韓銆?br />
]]>class聽ReadExcelByJxl
{
public聽static聽void聽main(String聽[]聽args)
{
try
{
//鏋勫緩Workbook瀵硅薄,聽鍙Workbook瀵硅薄
聽聽聽聽//鐩存帴浠庢湰鍦版枃浠跺垱寤篧orkbook
//浠庤緭鍏ユ祦鍒涘緩Workbook
聽聽聽聽InputStream聽is聽=聽new聽FileInputStream("Electrolux_images_PM400download_complete.xls");
聽聽聽聽jxl.Workbook聽rwb聽=聽Workbook.getWorkbook(is);
聽聽聽聽
聽聽聽聽Sheet[]聽rs聽=聽rwb.getSheets();
聽聽聽聽for(int聽i聽=聽0;聽i聽<聽rs.length;聽i++)
聽聽聽聽
{
聽聽聽聽Cell聽cellUrl聽=聽rs[i].findCell("Location聽URI聽\n(to聽be聽entered聽by聽Dalian)");
聽聽聽聽int聽row聽=聽cellUrl.getRow();
聽聽聽聽int聽column聽=聽cellUrl.getColumn();
聽聽聽聽String聽loUri聽=聽rs[i].getCell(column聽+聽2,聽row).getContents();
聽聽聽聽System.out.println(loUri);
}
]]>
axis鐨勯厤緗緢綆鍗曪紝榪囩▼濡備笅
1. 灝哸xis-src-1_2_1榪欎釜鍖呰В鍘嬪悗錛屽皢axis-1_2_1\webapps涓媋xis鐨勬墍鏈変笢瑗挎嫹璐濆埌浣犲垰鍒氬緩绔嬬殑TOMCAT鐨剋ebapps涓嬨傜洰褰曠粨鏋勫涓嬶細
鐒跺悗鏌ョ湅涓涓嬩綘鐨刟xis鐨刉EB-INF鐨刲ib涓?.jar鏂囦歡鏄惁鍏紝搴旇鏈?涓?br />axis.jar
axis-ant.jar
commons-discovery-0.2.jar
commons-logging-1.0.4.jar
jaxrpc.jar
log4j-1.2.8.jar
saaj.jar
wsdl4j-1.5.1.jar
(涓瀹氱湅濂藉悇涓枃浠剁殑鏂囦歡鍚嶏紝涓浼氬皢閰嶇疆CLASSPATH)
axis鐨勫畨瑁呭悜瀵艱繕瑕佹眰鍏朵粬鐨勫嚑涓?jar鏂囦歡錛屽寘鎷瑇erces.jar錛屽拰mail.jar.榪欎簺閮藉彲浠ュ湪Apache緗戠珯涓婃壘鍒?
2. 鐒跺悗鍒癮xis-1_2_1鐩綍涓?鎵懼埌lib鏂囦歡澶?鎷瘋礉鍏朵腑鐨刟ctivation.jar鏂囦歡,鍒?br />Tomcat\webapps\axis\WEB-INF\lib,鍜屼笂闈㈢殑8涓猨ar鏂囦歡鍦ㄤ竴璧鳳紝灝監K浜嗐?br />3.鍓╀笅鐨勫氨鏄暣涓繃紼嬩腑鏈涓哄叧閿殑閮ㄥ垎錛屽鏋滃紕涓嶅ソ浣犻渶瑕佽蛋寰堝集璺殑銆?br />鍏充簬classpath聽鐨勮緗紝鍖呮嫭涓ら儴鍒嗐備竴. 鏈夊叧Tomcat鐨刢lasspath鐨勮緗紝榪欎竴閮ㄥ垎鏄渶瀹規槗琚拷瑙嗙殑錛屽緢澶氬叧浜巃xis鐨勫畨瑁呯殑鏂囩珷閮芥病鏈夎銆傝繖灝變嬌浣犲湪鍚庨潰閬囧埌寰堝闂錛岄鍏堝鏋滆繖閮ㄥ垎娌℃湁璁劇疆錛屽嵆浣夸綘鍚庨潰鍏充簬axis鐨刢lasspath璁劇疆鐨勫畬鍏ㄦ紜紝鍦ㄧ紪鍐欏鎴風嫻嬭瘯Web聽Service聽鏄篃浼氬嚭鐜伴敊璇傝屼笖榪欐椂鍊欙紝浣犵殑axis宸茬粡鍙互榪愯錛屼綘鍐欑殑綆鍗曠殑HelloWorld.jws涔熸病浠涔堥棶棰橈紝鑳界湅鍒扮浉搴旂殑SOAP娑堟伅銆備絾鏄綘鐨勫鎴風紼嬪簭鍗村嚭闂浜嗭紝浣犲彲浠ユ甯哥紪璇戯紝涓嶄細鍑虹幇閿欒銆備絾榪愯鏃朵細鍑虹幇璇稿Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/axis/client/Service姝ょ被鐨勫紓甯革紝榪欑閿欒閫氬父鏄渶浠や漢鐥涜嫤鐨勩?br />鍏充簬Tomcat鐨刢lasspath涓瑕佹敞鎰忥紝濡傛灉浣犳槸閫氳繃Windows瀹夎紼嬪簭瀹夎鏃訛紝榪欐槸浣犵殑緋葷粺涓凡緇忔湁浜員OMCAT_HOME錛屽拰JAVA_HOME 鐜鍙橀噺錛屾鏃朵綘瑕佸仛鐨勫氨鏄坊鍔燾lasspath鐜鍙橀噺錛堝鏋滀綘榪樻病鏈夋坊鍔犵殑璇濓紝鍏蜂綋鍋氭硶鎴戝氨涓嶇敤璇翠簡錛屽緢綆鍗曠殑鍩虹鐭ヨ瘑錛夛紝classpath鐨勮緗涓?br />classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar(.;鏄繀闇鐨勶紝瀹冩寚浠e綋鍓嶇洰褰?
鐒跺悗淇敼鐜鍙橀噺涓殑classpath錛屾妸tomat瀹夎鐩綍涓嬬殑common\lib涓嬬殑(鍙互鏍規嵁瀹為檯榪藉姞)servlet.jar榪藉姞鍒癱lasspath涓幓錛屼慨鏀瑰悗鐨刢lasspath濡備笅錛?
classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\common\lib\servlet.jar;
4.鎺ヤ笅鏉ュ氨鏄叧浜巃xis鐨勭幆澧冨彉閲忕殑璁劇疆浜嗭紝鍚戝涓婅鐨勫緢娓呮銆傚氨鎶婂師鏂囩洿鎺ヨ冭繃鏉?br />set AXIS_HOME=c:\axis
set AXIS_LIB=%AXIS_HOME%\lib
set AXISCLASSPATH=%AXIS_LIB%\axis.jar;%AXIS_LIB%\commons-discovery.jar;
%AXIS_LIB%\commons-logging.jar;%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\saaj.jar;
%AXIS_LIB%\log4j-1.2.8.jar;%AXIS_LIB%\xml-apis.jar;%AXIS_LIB%\xercesImpl.jar
娉ㄦ剰涓鐐癸紝.jar鏂囦歡瑕佷笌浣犵殑瑙e帇鐨刟xis鐩綍涓殑鏂囦歡鍚嶄竴鑷達紝鐢變簬鐗堟湰闂錛屾枃浠跺悕鍙兘涓嶄竴鑷淬?/font>5 . 嫻嬭瘯
灝嗘鏂囦歡鍛藉悕涓?wsTestService.jws 瀛樻斁鍒?br />Tomcat鐨刓webapp\axis\鐩綍涓?br />璁塊棶 http://localhost:8080/axis/wsTestService.jws, 鍑虹幇 "There is a Web
涓嬮潰鏄竴涓畝鍗曠殑WebService, 渚涙祴璇曚嬌鐢?/font>
錛堜唬鐮佹槸杞創錛屽懙鍛碉級import聽java.util.*;
聽
public聽class聽wsTestService
{
聽聽String聽strName聽=聽"Ryun";
聽聽int聽intAge聽=聽21;
聽聽List聽items聽=聽new聽ArrayList();
聽聽
聽聽public聽String聽getName()聽
{
聽聽聽聽return聽strName;
聽聽聽}
聽聽
聽聽public聽int聽getAge()聽
{
聽聽聽聽return聽intAge;
聽聽聽}
聽聽
聽聽public聽List聽getItems()聽
{
聽聽聽聽return聽items;
聽聽聽}
聽聽}
寮鍙戜竴涓?Web Service 瀹㈡埛绔▼搴?br />寤虹珛瀹㈡埛绔▼搴弚sTestClient.java
浠ヤ笅鏄鎴風鐨勬簮紼嬪簭, 鐢ㄤ簬鍚?Web Service Server 鎻愪氦鏈嶅姟璇鋒眰:import聽org.apache.axis.client.Call;
import聽org.apache.axis.client.Service;
聽
public聽class聽wsTestClient聽
{
聽聽public聽static聽void聽main(String聽args[])聽
{
聽聽聽聽System.out.println("Start聽invoking
");
聽聽聽聽try聽
{
聽聽聽聽聽聽String聽strUri聽=聽
"http://localhost:8080/axis/wsTestService.jws";
聽聽聽聽聽聽Service聽service聽=聽new聽Service();
聽聽聽聽聽聽Call聽call聽=聽(Call)
聽聽聽聽聽聽service.createCall();
聽聽聽聽聽聽call.setTargetEndpointAddress(new聽
java.net.URL(strUri));
聽聽聽聽聽聽call.setOperationName("getName");
聽聽聽聽聽聽String聽ret聽=聽""聽+聽call.invoke(new聽Object[]聽
{});
聽聽聽聽聽聽System.out.println("I聽am聽"聽+聽ret聽+聽".");
聽聽聽聽聽}
聽聽聽聽catch聽(Exception聽e)聽
{
聽聽聽聽聽聽System.err.println(e.toString());
聽聽聽聽聽}
聽聽聽聽System.out.println("Finished聽the聽invoking.");
聽聽聽聽}
}
C:\>javac wsTestClient.java
聽
C:\>java wsTestClient
Start invoking...
I am Ryun.
Finished the invoking.
瀹屾垚錛屽啀鍘誨涔狅紝紼嶅悗鎬葷粨
浣嗚繖鏃惰繕鏈変竴涓棶棰橈紝鎴戣繕娌℃湁瑙e喅錛屽叧浜巐og4j鐨勪竴涓獁arn錛屼笉鐭ラ亾璇ュ浣曢厤緗甽og4j錛屾噿寰楀啀鍘繪壘絳旀浜嗐俛xis鐨勭浉鍏抽棶棰樻悳绱簡涓ゅぉ浜嗘墠鏈変釜緇撴灉錛宭og4j鐨勯棶棰樹互鍚庢湁鏃墮棿鍐嶅紕鍚с?br />
]]>
2. 綾誨悕鍓嶄笉鑳芥湁淇グ絎︺?br />3. 綾諱腑涓嶈兘鏈夋瀯閫犳柟娉曪紝鍥犱負瀹冩病鏈夊悕瀛椼傚湪鏋勯犲璞℃槸浣跨敤鐖剁被鐨勬瀯閫犳柟娉曘傚鏋滃疄鐜版帴鍙o紝鍒欐帴鍙e悗闈㈢殑鍦嗘嫭鍙蜂笉鑳藉甫鍙傛暟銆?
class聽TestInnerAnonymous
{
聽聽public聽static聽void聽main(String[]聽args)
聽聽
{
聽聽聽聽聽Object聽obj聽=聽new聽Outer().makeTheInner(47);
聽聽聽聽聽System.out.println("Hello聽World"聽+聽obj.toString());
聽聽}
}
class聽Outer
{
聽聽private聽int聽size聽=聽5;
聽聽public聽Object聽makeTheInner(int聽localVar)
聽聽
{
聽聽聽聽final聽int聽fianlLocalVar聽=聽99;
聽聽聽聽return聽new聽Object()
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽public聽String聽toString()
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽return聽("InnerSize"聽+聽size聽+聽"finalLocalVar:"聽+聽finalLocalVar);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽};
聽聽}
}
娉ㄦ剰錛氬尶鍚嶇被灞炰簬鏂規硶鍐呭祵綾伙紝涓嶅彲浠ヤ嬌鐢ㄧ埗綾葷殑鎴愬憳
鎶借薄綾諱笌鎺ュ彛鐨勫尯鍒細
鎶借薄綾誨彲浠ユ湁闈炴娊璞$殑鏂規硶錛屾湁鏋勯犲嚱鏁般?br />鎶借薄綾繪槸瀹冩墍鏈夊瓙綾葷殑鍏叡灞炴х殑闆嗗悎錛屾娊璞$被涓嶈兘琚疄渚嬪寲錛屽畠鐨勬瀯閫犲嚱鏁版槸鎻愪緵緇欏畠鐨勫瓙綾昏皟鐢ㄧ殑銆?br />琚玜bstract鎵淇グ鐨勬柟娉曞彨鎶借薄鏂規硶錛屾牸寮忓涓?br />abstract returnType abstractMethod([paramlist]);
鎶借薄綾諱腑鍙互鍖呭惈鎶借薄鏂規硶錛屼篃鍙互涓嶅寘鍚玜bstract鏂規硶銆備絾鏄紝涓鏃︽煇涓被涓寘鍚簡鎶借薄鏂規硶錛屽垯榪欎釜綾誨繀欏誨0鏄庝負abstract綾匯傚嵆abstract鏂規硶蹇呴』浣嶄簬abstract綾諱腑銆?br />鎺ュ彛鏄柟娉曞拰甯擱噺鍊?/font>寰楅泦鍚堛?br />
]]>
涓嬮潰鐢ㄤ簡閫掑綊,鍙互娓呮鐨勭湅鍒頒綘鎵瑕佸垱寤虹殑琛ㄦ牸灞傛暟閮藉垱寤轟簡,鍙槸鍒版樉紺虹殑鏃跺?浠庣28灞備箣鍚庨兘涓嶈兘鏄劇ず鍑烘潵鑰屽凡.
鑷充簬涓轟粈涔堟樉紺轟笉鏉?鎴戜篃涓嶅緱鑰岀煡.
鐐瑰嚮涓嬮潰鐨勪唬鐮?鏌ョ湅緇撴灉:
聽
Platform
Location
Protocols
Programming language
Invocation patterns
Service versioning
Service model
Information model
Data format
聽
Enterprise services share some or all of these characteristics that impact what actions the service performs, how it does so, and whom it interacts with. These services can be reclassified in the SOA model and placed into new domains that describe what function they perform in the overall model. An analysis of the preceding list identifies at least four different domains of architecture, along with subdomains that influence where a service can exist and the function it performs. These domains and subdomains, discussed later in this chapter, are as follows:
Infrastructure services domain with subdomains
Utility business services
Service-level automation and orchestration
Resource virtualization
Middleware domain
Business services domain
Application services domain with subdomains
Application programming model subdomain
Off-the-shelf commercial software subdomain
Information management subdomain
It is essential to maintain a separation of concerns and domains. In an enterprise, these domains can have separate implementations using any permutation of packaged applications, custom applications, existing infrastructure, and external or outsourced services.
寮曠敤鍒漢鐨勮瘽"瀹冧笉鏄竴闂ㄦ妧鏈?鏇翠笉鑳芥妸瀹冨埢褰曞埌鍏夌洏鍘誨崠浠涔堢殑..瀹冩彁渚涚殑鏄竴縐嶆濇兂!灝辨兂OO鎬濇兂涓鏍?
IBM WebSphere Integration Developer, Version 6 software is Eclipse technology-based tooling designed to enable you to rapidly assemble business solutions based on a composite application development framework and using minimal programming skills.
Its graphically rich interface allows developers to create composite business applications by wiring service components with minimal skills and agnostic of underlying programming implementations. It has fully integrated testing, debug and deployment environment that allows you to easily deploy to WebSphere Process Server. Once deployed, you can dynamically change and adapt to changes with its rich features, such as business rules, selectors, and state machines.
WebSphere Process Server includes three layers:
聽聽 SOA core
聽聽 Supporting services
聽聽 Service components
Role resources matrix
Duration matrix
Availablity matrix
Decision probabilities