Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
ͨ¹ý½«ÐÐÒµ½â¾ö·½°¸²¿Êðµ½ÔÆÆ½Ì¨È·±£³ÖÐø½»¸¶
 
×÷ÕߣºÕÔ ×¿ À´Ô´£ºdeveloperworks ·¢²¼ÓÚ£º 2015-1-16
  2849  次浏览      29
 

ʹÓÃÒ»¸öÕæÊµµÄ¿Í»§³¡¾°·ÖÎöÃæÁÙµÄÄÑÌâ¼°Æä½â¾ö·½Ê½£¬ÒÔÈ·±£³ÖÐø²¿Êð¡£³ÖÐø½»¸¶ÒѾ­³ÉΪÔÚÔÆÆ½Ì¨ÉϽ»¸¶½â¾ö·½°¸Ò»ÖÖ³£¼ûģʽ¡£ÒªÈóÖÐø½»¸¶³ÉΪ¿ÉÄÜ£¬ËùÓй¹½¨¡¢²¿Êð¡¢²âÊÔÓë·¢²¼½×¶Î¶¼ÐèÒª×Ô¶¯Íê³É£¬ÒÔÌṩƵ·±µÄµü´ú£¬ÕâÑù¿ª·¢ÈËÔ±ºÍ²Ù×÷רҵÈËÔ±²ÅÄÜʱ¿ÌÁ˽â´úÂë±ä»¯ÓëȱÏÝÐÞ¸´¡£¹ý³Ì×Ô¶¯»¯³Ì¶ÈµÄÌá¸ßÒ²»áÌá¸ßÔÆ½»¸¶µÄЧÂÊ¡£Ó¦Óñ¾ÎÄÖеݲװÓ벿Êð¼¼Êõ¸Ä½øÁ˽â¾ö·½°¸°²×°³ÌÐò£¬ÈÃËü¸üÊʺÏÓÚ³ÖÐø²¿ÊðºÍ½»¸¶¡£±¾ÎÄÑÝʾÁËÒ»Öָıä½â¾ö·½°¸°²×°ÓëÅäÖÃÀ´Ö§³Ö³ÖÐø²¿ÊðµÄ·½·¨¡£

¼ò½é

Ëæ×ÅÔÆ¼ÆËã¼¼ÊõµÄ·¢Õ¹£¬ÔÆ»·¾³±»ÈÏΪÊÇÏò¿Í»§½»¸¶ÐÐÒµ½â¾ö·½°¸µÄ×îÓÐǰ;µÄ·½Ê½¡£ÎªÁËÈ·±£Èí¼þµÄ³ÖÐø½»¸¶£¬¿ª·¢¡¢²âÊÔÓëÔËÓªÍŶӱØÐëÏ໥Э×÷£¬ÔÚÒ»Æð¸ßЧ¹¤×÷¡£ÔÆ»·¾³·Ç³£ÊʺÏÕâÖÖÀàÐ͵Ľ»»¥¡£È»¶ø£¬ÒòΪ¿ª·¢½×¶ÎÉæ¼°µ½¸´Ôӵķֲ¼Ê½ÍØÆË£¬ºÜÈÝÒ׳ö´í£¬¶øÇÒͨ³£ÐèÒªÊÖ¶¯Åųý¹ÊÕÏ¡£ÔںܶàÇé¿öÏ£¬²¿ÊðÉè¼ÆÖ§³Öµ¥Ò»²¿Ê𣬲»Ö§³Ö³ÖÐø²¿Êð¡£Ó¦ÓóÖÐø½»¸¶Ô­ÔòµÄ²úÆ·²¿Êð½×¶Î¾­³£³ÉΪƿ¾±£¬Í¬Ê±»¹»á¸ø DevOps ¹ý³ÌµÄЧÂÊ´øÀ´¸ºÃæÓ°Ïì¡£

±¾ÎĽ«Ê¹ÓÃÒ»¸öÕæÊµµÄ¿Í»§³¡¾°À´·ÖÎöÃæÁÙµÄÄÑÌâ¼°Æä½â¾ö·½Ê½£¬ÒÔÈ·±£³ÖÐø²¿Êð¡£

ÖÂÁ¦ÓÚÐÐÒµ²¿Êð×Ô¶¯»¯µÄÈí¼þ¹¤³Ìʦ»á·¢ÏÖ±¾ÎĺÜÓÐÓô¦£¬¿ÉÒÔ°ïÖúËûÃÇʵÏÖÔÆÉϵijÖÐø½»¸¶¡£ÕâЩָµ¼¼Ù¶¨ÄúÓµÓв¿ÊðÐÐÒµ½â¾ö·½°¸ºÍ¿ª·¢½Å±¾·½ÃæµÄ¼¼ÇÉ¡£

³ÖÐø½»¸¶¹ý³Ì

³ÖÐø½»¸¶µÄÄ¿±êÊÇÈ·±£Äܹ»Ê¹ÓÃ×îÓÐЧºÍ°²È«µÄ·½·¨À´¿ª·¢¡¢²âÊÔ¡¢²¿ÊðÈí¼þ²¢½«Æä½»¸¶Éú²ú¡£¶ÔÈí¼þϵͳÈÎÒⲿ·ÖËù×öµÄ¸Ä¶¯£¬´Ó»ù´¡¼Ü¹¹²ã¡¢Ó¦Óò㵽¶¨ÖÆÊý¾Ý²ã£¬Í¨¹ýÒ»ÌõÌØ¶¨µÄ½»¸¶¹ÜµÀ³ÖÐøÓ¦ÓÃÓÚÉú²ú»·¾³¡£ÕâÖÖ·½·¨ÈÃÓû§ÏàÐÅ£¬²úÆ·»·¾³Äܹ»·ÃÎÊ×îз¢²¼µÄ´úÂë¡£

³£ÓõÄÄ£ÐÍÓë¿ò¼Ü

Èçͼ 1 ÖÐËùʾµÄͨÓÃÄ£Ð͹㷺ӦÓÃÓÚ´ó¶àÊý IBM ÐÐÒµ½â¾ö·½°¸µÄ½»¸¶ÖС£

ͼ 1. ³£ÓõijÖÐø½»¸¶Ä£ÐÍ

ͼ 1 ÑÝʾÁËÒ»Ìõ¶Ëµ½¶ËµÄ×Ô¶¯»¯Í¨µÀ£¬Ëü½«½â¾ö·½°¸¿ª·¢ÓëÉú²ú»·¾³ÁªÏµÆðÀ´¡£¸ÃͨµÀʹÓàJenkins ×÷ΪһÖÖ×Ô¶¯»¯ÒýÇæ£¬¿ÉÒÔ£º

1.¼ì²â´úÂë¸ü¸ÄºÍ´¥·¢³ÖÐø¹¹½¨¡£

2.½«¹¹½¨°æ±¾°²×°µ½ Blue Çø¡£Blue Çø±»ÈÏΪÊÇ DevOps ÍŶÓÔÚ±¾µØ½øÐй¹½¨È·ÈϵIJâÊÔ»·¾³¡£

3.ÔÚ Blue ÇøÉÏ¿ªÊ¼×Ô¶¯»¯²âÊÔ²¢È·ÈϲâÊÔ½á¹û¡£

4.µ± Blue Çø×¼±¸¾ÍÐ÷²¢¾­¹ýÈ·ÈϺ󣬴ӲâÊÔ»·¾³Çл»µ½ÔËÐеÄÉú²ú»·¾³£¨Red Çø£©¡£

³ÖÐø½»¸¶ÖеIJ¢·¢ÒòËØ

²½Öè 2 ÊDZ¾ÎĵÄÖ÷ÒªÖØµã¡£ÔÚ³ÖÐø½»¸¶¹ý³ÌÖУ¬×î¾ßÓÐÌôÕ½ÐԵķ½ÃæÊÇÈçºÎ¸ßЧµØÊµÏÖ³ÖÐø²¿Êð¡£²¿Êð½×¶Î±ØÐëÊÊÓ¦¸´Ôӵķֲ¼Ê½ÍØÆË¡¢²»¶Ï±ä»¯µÄ»ù´¡¼Ü¹¹ºÍÅäÖñä¸ü¡£ÕâЩ²¢·¢ÒòËØºÜÈÝÒ×µ¼Ö¿ͻ§Êý¾ÝµÄ¶ªÊ§¡£´«Í³µÄ½â¾ö·½°¸²¿ÊðÉè¼ÆÖ§³Öµ¥Ò»²¿Ê𣬵«²»Ö§³Ö³ÖÐø²¿Êð¡£

ΪÁ˼õÉÙ´íÎó£¬Èùý³Ì±äµÃ¸ü¼Ó¸ßЧ£¬²¢½ÚÊ¡ DevOps ʱ¼äÓ빤×÷Á¿£¬ÐèÒª×î´óÏ޶ȵØÌá¸ß½â¾ö·½°¸²¿ÊðÓëÅųý¹ÊÕϵÄ×Ô¶¯»¯³Ì¶È¡£ÎÒÃÇÒª×öµÄµÚÒ»²½ÊÇÁ˽âÔÚÕæÊµµÄ½â¾ö·½°¸²¿Ê𳡾°ÖпÉÄÜÓöµ½µÄÄÑÌâ¡£

ÐÐÒµ½â¾ö·½°¸²¿Êð°¸Àý

¿¼ÂÇÿÔÂÔÚÔÆÆ½Ì¨ÉϽ»¸¶Ò»¸öÐÐÒµ½â¾ö·½°¸µÄ³¡¾°¡£ÒòΪ DevOps ÍŶӱØÐëÔÚÉú²ú»·¾³Öв¿ÊðÿÔÂÒ»´ÎµÄ¹¹½¨£¬°²×°³ÌÐòÐèÒªÄܹ»ÔÚ²¿Êð¹ý³Ì¿ªÊ¼Ê±ÔËÐÐÔÚÉú²ú»·¾³ÖС£

³ÖÐø½»¸¶¹ý³ÌÖеij£¼ûÎÊÌâ

ÏÂÃæµÄÀý×Ó´Ó°²×°½Ç¶È˵Ã÷ÁËһЩ³£¼ûÎÊÌ⣺

1.ÎļþÌæ»»

2.×ÊÔ´¸üÐÂ

3.Êý¾Ý¿âÅäÖÃ

4.ÎļþÌæ»»

ͨ³£ÐèÒª¸üлòÌæ»»ÅäÖÃÎļþ¡£ÔÚÇåµ¥ 1 ÖУ¬°²×°³ÌÐòÔÚ°²×°Ê±Ìæ»»ÁËµÚ 3 ÐÐÖеÄռλ·û¡£µÚ 4 ÐÐÖÐµÄ URL ÊǸù¾ÝÔËÐÐʱµÄÓû§ÊäÈë½øÐÐÉèÖõġ£

Ò»¸öеÄÒªÇóÈð²×°³ÌÐòÔÚÉÔºóµÄÒ»´Îµü´úÖÐÔÚ°²×°Ê±Ìí¼ÓÒ»¸öÐ嵀 URL someURL¡£´«Í³µÄ½â¾ö·½°¸Êǽ« <someURL>@url@<someURL> ¸½¼Óµ½µÚ 4 Ðв¢ÍêÈ«Ìæ»»Õ¼Î»·û£¬µ«ÕâÖÖ·½·¨»áµ¼Ö´íÎó²¢¶ªÊ§ customizationURL µÄÓû§ÊäÈë¡£

Çåµ¥ 1. ´øÓÐÓÃÓÚÖ÷»úºÍ URL µÄʾÀýռλ·ûµÄ½Å±¾

1 <servers>
2 <server id="appServer">
3 <host>@host@</host>
4 <customizationURL>@cusUrl@</customizationURL>
5 </servers>

×ÊÔ´¸üÐÂ

¼Ù¶¨ÄúÓÐÒ»¸öʹÓà Java Naming and Directory Interface (JNDI) ´´½¨µÄÓ¦Ó÷þÎñÆ÷µ÷¶È³ÌÐò£¬Ãû½Ð test/schedulerA¡£Ïà¹ØµÄ±íÊÇʹÓÃǰ׺testA_ ½øÐд´½¨µÄ¡£¹ýÒ»¶Îʱ¼ä£¬ÄúÐèÒª½«Õâ¸öµ÷¶È³ÌÐòµÄ±íÇ°×ºÖØÃüÃûΪ testB_¡£Í¨³££¬Äú¿ÉÄÜ»áµ÷Óà WebSphere Application Server API AdminControl À´¸üжÔбíµÄµ÷¶È³ÌÐòÒýÓᣵ«¶Ô³ÖÐø¸üжøÑÔ£¬¾É±íÒѾ­´´½¨£¬¼´±ãÊǺÁÎÞÓô¦Ò²²»»áɾ³ý¡£µ±ÁíÒ»µ÷¶È³ÌÐòʹÓàtestA_ǰ׺ʱ£¬¾Í»á³öÏÖ´íÎó¡£

Êý¾Ý¿âÅäÖÃ

Êý¾Ý¿âÅäÖñä¸ü½«´øÀ´×î¾ßÓÐÌôÕ½ÐÔµÄÎÊÌâ¡£ÓÉÓÚ½â¾ö·½°¸±»¸üУ¬Êý¾Ý¿â»á×Ðϸ¼ì²é¶Ô±í½á¹¹¡¢Óû§È¨ÏÞ¡¢ÒÑ´æ´¢Êý¾ÝµÄ±ä¸üºÍÆäËû±ä¸ü¡£ÊÊÓ¦±ä»¯µÄÑ¡ÔñÖ®Ò»ÊÇÔÚ SAMPLE.TEST_TAB ±íÖвåÈëÒ»¸öеĠCOL_C ÁС£µ«ÔÚÏÂÒ»´Îµü´úÖУ¬±í½á¹¹½«»á·¢Éú±ä»¯¡£ÀýÈ磬ÐèҪɾ³ý COL_BÁС£Çåµ¥ 2 ÖÐÏÔʾÁËÒ»ÖÖÓ¦¶Ô±ä¸üµÄ´«Í³²¿Êðµ÷Õû£¬¼´ÔÚÊý¾Ý¿â½Å±¾ÖÐÌí¼ÓµÚ 6 ÐС£

Çåµ¥ 2. ʹÓÃÐÂÐÐɾ³ýÊý¾Ý¿âÖÐÒ»ÁеĽű¾

1 CREATE TABLE SAMPLE.TEST_TAB (  
2 "COL_A" INTEGER NOT NULL ,   
3  "COL_B" VARCHAR(100) )  
4 IN "USERSPACE1" ;   
5 ALTER TABLE SAMPLE.TEST_TAB  6 DROP COLUMN COL_B  7  ADD COLUMN COL_C INTEGER;

µ«ÔÚ³ÖÐø½»¸¶ÖУ¬Ìí¼ÓÒ»ÐлᵼÖ´íÎó£¬ÒòΪ£º

1.µ±½Å±¾µÚ¶þ´ÎÔËÐÐʱ£¬SAMPLE.TEST_TAB ÒѾ­´æÔÚ¡£

2.ÁРCOL_B ÒѾ­±»É¾³ý¡£Òò´Ë£¬SQL ´¦Àí½«ÔÚûÓÐÌí¼Ó COL_C µÄÇé¿öÏÂÍ£Ö¹¡£

ÊÊÓÃÓÚ½â¾ö³ÖÐø½»¸¶ÎÊÌâµÄÔ­Ôò

ΪÁ˽â¾öÎļþ±ä»¯¡¢×ÊÔ´¸üÐÂÓëÅäÖñä¸üËù´øÀ´µÄÎÊÌ⣬¿ÉʹÓÃÒÔÏÂÔ­Ôò¡£

×îС»¯½â¾ö·½°¸°²×°³ÌÐòËùÐèµÄ¿ª·¢¹¤×÷Á¿¡£ ²»ÒªÎªÃ¿´Î½»¸¶¿ª·¢²»Í¬µÄ°²×°³ÌÐò£¬È·±£¿ª·¢½×¶ÎÖеÄËùÓбä¸ü¶¼Äܱ»¿ìËÙ¶øÓÖ°²È«µØ½»¸¶Éú²ú¡£¿ª·¢Ð²¿Êðʱ£¬¾¡¿ÉÄÜ´Ó¹ýÈ¥µÄµü´ú½øÐм̳С£ÀýÈ磬¼ÙÉèÄúÒѾ­ÔÚǰһ´Îµü´úÖпª·¢ÁË Resource A¡£ÔÚµ±Ç°µü´úÖУ¬Resource A ûÓз¢Éú±ä»¯£¬µ«ÄúÐèÒªÌí¼ÓÒ»¸öÐÂ×ÊÔ´ Resource B¡£Ìí¼Ó½Å±¾ÒÔ´´½¨ Resource B£¬µ«¼´±ã¶ÔÓÚ Resource A ûÓÐеÄÐèÇó£¬Ò²Òª±£³Ö´´½¨ Resource A µÄǰһ¸ö½Å±¾¡£

Õë¶Ô°²×°½×¶ÎʹÓÃ×Ô¶¯µÄ¹ÊÕÏÅųý¡£³ÖÐø½»¸¶µÄЧÂÊÔںܴó³Ì¶ÈÉÏÒÀÀµÓÚ¹ý³ÌµÄ×Ô¶¯»¯³Ì¶È¡£ÒòΪ»·¾³Ö®¼ä´æÔڵIJîÒì¡¢ÊÖ¶¯²Ù×÷ÒýÆðµÄ´íÎóºÍÆäËûÀàËÆµÄÒòËØ£¬Äú±ØÐëÌṩ´¦Àí¹ÊÕϺͰ²×°Ê§°ÜµÄ×Ô¶¯»úÖÆ¡£

Ö§³ÖÖØ¸´²¿Êð½â¾ö·½°¸µÄÄÜÁ¦¡£ ÕâÌõÔ­Ôò×îΪ¹Ø¼ü£¬Ò²×îÄÑʵÏÖ¡£ÎªÁ˾¡¿ÉÄܵشӹýÈ¥µÄµü´ú½øÐм̳У¬±ÈÈçÈ·¶¨ÈçºÎ£º

¹ÜÀíÖØ¸´²¿Êð¡£

1.ʹÓÃÏÖÓеĻù´¡¼Ü¹¹Óë×ÊÔ´À´²¿ÊðдúÂë¡£

2.¸üÐÂÒÔǰµÄÅäÖûòÕßɾ³ý¹ýʱµÄ²¿Êð¡£

½â¾ö·½°¸°²×°³ÌÐòµÄÔªËØ

Ð޸ĵäÐͽâ¾ö·½°¸°²×°³ÌÐòµÄÒÔÏ·½Ã棬ÒÔ±ã¸Ä½ø½â¾ö·½°¸²¿Êð£º

Îļþ¹¹¼þ

ÆóÒµÓ¦ÓóÌÐò ºÍ ÆóÒµÏà¹Ø×ÊÔ´

Êý¾Ý¿â

Îļþ¹¹¼þ

ΪÁ˳ÖÐø½»¸¶£¬°²×°¹ý³Ì±ØÐëÄܹ»£º

1.¸´ÖƺÍÌæ»»¹¹¼þ

2.¼¯³É¹¹¼þ

3.ºÏ²¢¹¹¼þ¡£

ΪÁË·ÀÖ¹³öÏÖ ÎļþÌæ»»µÄÎÊÌâ ÖÐÌá¼°µÄ¿Í»§Êý¾Ý¶ªÊ§£¬½«¿Í»§Êý¾ÝºÏ²¢µ½Ð°汾µÄÎļþÖУ¬¶ø²»ÊǼòµ¥µØ¸´ÖƺÍÌæ»»Îļþ¡£Çåµ¥ 3 ÖÐÏÔʾÁ˹ýÈ¥Ó뵱ǰµü´úµÄÎļþ£ºold.xml ºÍ new.xml¡£

Çåµ¥ 3. old.xml Óë new.xml Ö®¼äµÄ±È½Ï

[root@server diff]# cat old.xml  
<servers>  
<server id="appServer">  
<host>appserver.test.com</host>  
<customizationURL>http://abc.com</customizationURL> 
</servers>  [root@server diff]# cat new.xml 
<servers>   
<server id="appServer">   
<host>appserver.test.com</host>  
<customizationURL>@cusUrl@</customizationURL>  
<someURL>http://someOtherUrl<someURL>  
</servers>

ΪÁËͨ¹ý±à³Ì·½Ê½ºÏ²¢Îļþ£¬¸ø°²×°³ÌÐòÌí¼Ó½Å±¾£¨ÓÃÓÚ Linux µÄ Shell ½Å±¾£©À´ÕÒ³ö°æ±¾Ö®¼äµÄ²îÒì¡£½«²îÒì¼Ç¼µ½Ò»¸öÎļþÖУ¬ÒÔ±¸ÈÕºóÒÔ²¹¶¡µÄÐÎʽ´¦ÀíÕâЩ²îÒ졣Ȼºóͨ¹ýËÑË÷²¹¶¡À´»ñÈ¡Àϰ汾ÎļþÖе͍֯ÐÅÏ¢£¬ÔÙ½«ËùÓбä¸üºÏ²¢µ½µ±Ç°ÎļþÖУ¬ÈçÇåµ¥ 4 ÖÐËùʾ¡£

Çåµ¥ 4. ÒÔ±à³Ì·½Ê½ºÏ²¢Îļþ

[root@server diff]# diff old.xml new.xml > patch.txt 
[root@server diff]# cat patch.txt  
 4c4,5 
< <customizationURL>http://abc.com</customizationURL> 
---  > <customizationURL>@cusUrl@</customizationURL>  
> <someURL>http://someOtherUrl<someURL>  
[root@server diff]#

ÆóÒµÓ¦ÓÃ

ÔÚÕû¸ö³ÖÐø½»¸¶¹ý³ÌÖУ¬ÆóÒµÓ¦ÓóÌÐò¶¼»á·¢Éú¸Ä±ä¡£ÕâÖָıä¿ÉÒÔ³öÏÖÔÚ´úÂë¡¢×ÊÔ´ºÍ EAR ½á¹¹ÖС£ÒòΪ¸ü¸Ä»áÓ°Ïì°²×°½Å±¾£¬Äú±ØÐëÇå³þ¶ÔÄ£Ð͵ÄËùÓиü¸Ä£¬ÒÔ¼°¶Ô EAR Ä£¿éÓëÄ¿±ê²¿Êð·þÎñÆ÷Ö®¼äÓ³ÉäµÄ¸ü¸Ä¡£Òª¹ÜÀí±ä¸ü£¬¿ÉÒÔʹÓÃÒ»¸ö×Ô¶¯³ÌÐòÀ´Éú³É EAR ²¿Êð´úÂë¡£

Ê×ÏÈ£¬ÔÚ¹¹½¨½×¶Î´Ó application.xml ÎļþÖÐÌáÈ¡¶¨ÒåºÃµÄÄ£ÐÍÐÅÏ¢¡£Çåµ¥ 5 ÏÔʾÁËÒ»¸öÄ¿±ê application.xml ÎļþµÄÀý×Ó¡£

Çåµ¥ 5. ʾÀýÓ¦ÓÃÃèÊö·û

<?xml version="1.0" encoding="UTF-8"?> 
<application xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee version="5"   
http://java.sun.com/xml/ns/javaee/application_5.xsd">   
<display-name>sample_rest_ear</display-name>  
<module id="Module_1361859780281">        
<web>  
<web-uri>sample_test_rest.war</web-uri>  
<context-root>/ibm/test/api/services</context-root> 
</web>
</module>   
<module id="Module_1364467704309">   
<ejb>sample_test_ejb.jar</ejb>   
</module> 
</application>

½ÓÏÂÀ´£¬×Ô¶¯Éú³É²¿ÊðÃèÊö·û¡£¸ÃÃèÊö·û»ùÓÚÒÑ»ñÈ¡µ½µÄÄ£ÐÍÐÅÏ¢¡£Çåµ¥ 6 ÏÔʾÁËÒ»¸öʾÀýµÄ²¿ÊðÃèÊö·ûÊôÐÔÎļþ£¬ËüÃèÊöÁËÏÔʾÃû³Æ¡¢EAR ÎļþλÖúÍÒªÓ³Éäµ½ËùÒª²¿ÊðÓ¦ÓõÄÄ£¿é¡£Í¨¹ýʹÓÃÊôÐÔÎļþ£¬¿ÉÒÔÈ·±£Ó¦Óò¿Êð²ÎÊý¸ü¼ÓÁé»î£¬¸üÈÝÒ××Ô¶¯»¯¡£

Çåµ¥ 6. ÃèÊöÓ¦Óò¿ÊðµÄʾÀýÊôÐÔÎļþ

application.0.name=sample_rest_ear  
application.0.earfile=content/config/apps/sample_rest_ear.ear 
application.0.module.0.name=sample_test_rest 
application.0.module.0.moduleFile=sample_test_rest.war 
application.0.module.0.deployment=WEB-INF/web.xml 
application.0.module.0.cluster.0.name=~{PORTAL_CLUSTER_NAME}  
application.0.module.1.name=sample_test_ejb  
application.0.module.1.moduleFile=sample_test_ejb.jar  
application.0.module.1.deployment=META-INF/ejb-jar.xml 
application.0.module.1.cluster.0.name=~{PORTAL_CLUSTER_NAME}

ºó¶Ë´úÂë½âÎöÊôÐÔ£¬²¢µ÷ÓÃÒ»¸öÓ¦Ó÷þÎñÆ÷ API À´²¿ÊðËü¡£ÈçÇåµ¥ 7 ÖÐËùʾ£¬²ÎÊý deploymentInstruction_attrs ÊǸù¾ÝÇåµ¥ 6 ÖеÄÊôÐÔÉú³ÉµÄ¡£

Çåµ¥ 7. deploymentInstruction_attrs µÄʾÀýÖµ

[ -operation update -contents   
sample_rest_ear.ear   -installed.ear.destination  
$(APP_INSTALL_ROOT)/cell1 -distributeApp   
-MapModulesToServers [[sample_test_rest sample_test_rest.war,WEB-INF/web.xml  
WebSphere:cell=cell1,cluster=ClusterA+WebSphere:cell=cell1, node=ihsnode1,server=ihsserver1 ]  
[sample_test_ejb sample_test_ejb.jar META-INF/ejb-jar.xml   
WebSphere:cell=cell1,cluster=ClusterA]]]

Çåµ¥ 8 ÏÔʾÁËÈçºÎµ÷ÓÃÓ¦Ó÷þÎñÆ÷ API À´Ö´ÐÐÒ»´Î¿ÉÖØ¸´µÄ°²×°¡£

Çåµ¥ 8. µ÷ÓÃÓ¦Ó÷þÎñÆ÷ API À´Ö´ÐпÉÖØ¸´°²×°µÄʾÀý½Å±¾

if (exist == "true"):
# ÏÖÓÐÓ¦ÓÃÒѾ­ÕÒµ½   AdminApp.update(appNametrim,   
'app',   
deploymentInstruction_attrs)  
else:              # Existing application not found.          
AdminApp.install(earFile, deploymentInstruction_attrs)  
#endIf

AdminApp ÌṩÁ˺¯Êý update()¡¢install() ºÍ uninstall() À´ÅäÖà EAR ²¿Êð¡£Ê¹Óàupdate º¯Êý¶ø·Ç delete º¯Êý£¬ÒԱ㷴¸´²¿ÊðÓ¦ÓóÌÐò¡£

ÆóÒµÓ¦ÓóÌÐò×ÊÔ´

²¿ÊðÓ¦ÓóÌÐò×ÊÔ´µÄÅäÖÃÀàËÆÓÚ²¿ÊðÓ¦ÓõÄÅäÖá£Ê¹Óàupdate º¯Êý¶ø·Ç delete ºÍ re-create º¯Êý£¬ÒÔ±ÜÃⶪʧÅäÖÃÖеÄÈÎÒâ×Ô¶¨ÒåÉèÖá£ÒòΪӦÓÃ×ÊÔ´µÄ²¿Êð°üº¬×ÊÔ´Ö®¼äµÄ¹ØÏµ£¬ËùÒÔ¿ÉÒÔʹÓÃÒ»¸öÓë Java ÖÐÀ¬»øÊÕ¼¯·½·¨ÀàËÆµÄ·½·¨À´Î¬»¤ÕâЩ¹ØÏµ¡£

Çåµ¥ 9 ÏÔʾÁËÓ¦Ó÷þÎñÆ÷µ÷¶È³ÌÐò schedulerA µÄʾÀý²¿ÊðÃèÊö·ûÊôÐÔ£¬ÕâÒ»µãÔÚ ×ÊÔ´¸üеÄÎÊÌâ ²¿·ÖÖÐÒѾ­Ìá¼°¡£Ñ¡ÔñÊÇ·ñÒª´´½¨Ïà¹ØµÄÊý¾Ý¿â±í¡£Èç¹ûÑ¡Ôñ´´½¨Ïà¹Ø±í£¬Ó¦Ó÷þÎñÆ÷¾Í»áʹÓÃÊý¾ÝÔ´¶¨ÒåµÄģʽ£¨ÔÚ±¾ÀýÖÐΪ jdbc/ds£©ºÍǰ׺£¨ÔÚ±¾ÀýÖÐΪ testA£©Éú³ÉÊý¾Ý¿â±í¡£

Çåµ¥ 9. ÃèÊöµ÷¶È³ÌÐò²¿ÊðµÄʾÀýÊôÐÔÎļþ

scheduler.0.name=schedulerA  
scheduler.0.jndiname=test/schedulerA  
scheduler.0.description=Scheduler for Task A  
scheduler.0.datasourceJNDIName=jdbc/ds  
scheduler.0.datasourceAlias=dbuser  
scheduler.0.workManagerInfoJNDIName=wm/default  
scheduler.0.tablePrefix=testA_  scheduler.0.createTables=true  
scheduler.0.target.cluster=~{PORTAL_CLUSTER_NAME}

ʹÓàDBUSR Óëǰ׺ TESTA_ ´´½¨µÄÏà¹Ø±íÈçͼ 2 ÖÐËùʾ¡£

ͼ 2. ÒÑ´´½¨±íµÄÁбí

Ö»Òªµ÷¶È³ÌÐò±íµÄǰ׺»òÊý¾ÝÔ´ÒýÓ÷¢Éú±ä»¯£¬¾ÍÐèÒªÔÚ´´½¨Ð±í֮ǰ»ØÊÕ±»ÒýÓÃµÄ±í¡£Îª´Ë£¬¿ÉÒÔʹÓÃÀàËÆÓÚÇåµ¥ 10 µÄ²¿ÊðÃèÊö·û¡£

Çåµ¥ 10. µ÷ÓÃÓ¦Ó÷þÎñÆ÷ API Ö´ÐпÉÖØ¸´µÄµ÷¶È³ÌÐò°²×°µÄʾÀý½Å±¾

if (existScheduler):  
if (createTables):       
#drop existing old tables if new tables required            
cellNameStr = 'cell=' + getCellName()             
nodeNameStr = 'node=' + getNodeName()   
Scheduler_Config_Helper_str = AdminControl.completeObjectName  
 ('WebSphere:name=Scheduler_Config_Helper,process=dmgr,platform=dynamicproxy,' + nodeNameStr +   ',
type=WASSchedulerCfgHelper,mbeanIdentifier=Scheduler_Config_Helper,' + cellNameStr + ',*')  
 AdminControl.invoke(Scheduler_Config_Helper_str, 'dropTables', scheduler, '[java.lang.String]')  
 #endIf   
AdminConfig.modify(scheduler, deploymentInstruction_attrs)  
#endIf   
else:         
attrs.append(["name", name])            
scheduler = AdminConfig.create("SchedulerConfiguration", schedulerProvider,  
deploymentInstruction_attrs)  
#endIf

Êý¾Ý¿â

Êý¾Ý¿âÅäÖÃÊdzÖÐø½»¸¶ÖÐÐèÒª´¦ÀíµÄ×Ôӵķ½Ã档Ƶ·±µÄÊý¾Ý¿âÅäÖñä¸üºÍ´úÂë¸üлáÈð²×°¹ý³Ì±äµÃÈÝÒ׳ö´í¡£¿¼ÂÇÒÔÏÂÀý×Ó£¬ËüÏÔʾÁ˵±Êý¾Ý¿â±ä¸ü±»´«²¥µ½²âÊÔ»òÉú²ú»·¾³ÖÐʱ³öÏֵĴíÎó¡£

´íÎó 1£º´´½¨±í´íÎó

ÔÚ´«Í³µÄ°²×°³ÌÐòÖУ¬Ã¿Ìõ SQL Ö¸ÁîÖ»»áÔËÐÐÒ»´Î¡£µ«ÔÚ³ÖÐø½»¸¶µÄÇé¿öÏ£¬SQL Ö¸Áî¿ÉÄÜ»áÖØ¸´ÔËÐУ¬ÒÔ±ãÊÊӦÿÔ¡¢Ã¿ÖÜ»òÿÌìµÄ½»¸¶¡£ÔÚÇåµ¥ 11 ÖУ¬ÒòΪ½Å±¾²»ÊÊÓ¦ÖØ¸´ÔËÐжøµ¼ÖÂ±í´´½¨Ê§°Ü¡£Äú¿ÉÒÔºöÂÔÕâÀà´íÎó¡£

Çåµ¥ 11. ±í´´½¨´íÎóʾÀý

CREATE TABLE SAMPLE.TEST_TAB
(        COLA INTEGER NOT NULL,             
COLB VARCHAR(200) NOT NULL UNIQUE ) ;  
SQL failed with: The name of the object to be created is identical to the existing name  
"SAMPLE.TEST_TAB" of type "TABLE".. SQLCODE=-601, SQLSTATE=42710, DRIVER=3.64.106

´íÎó 2£ºÐ޸ıí´íÎó

Ð޸ıíʱ»áÓöµ½Óë´íÎó 1 ÖÐÀàËÆµÄÇé¿ö¡£Èç¹ûɾ³ý´úÂëÔËÐжà´Î¾Í»áʧ°Ü£¬ÈçÇåµ¥ 12 ÖÐËùʾ¡£µ«Óë´íÎó 1 ²»Í¬£¬Äú²»ÄܺöÂÔÕâÖÖ´íÎó£¬ÒòΪÆäÓàÕë¶Ô COL_C µÄ´úÂ뽫ÎÞ·¨ÔËÐС£

Çåµ¥ 12. Ð޸ıí´íÎóʾÀý

ALTER TABLE SAMPLE.TEST_TAB  		
DROP COLUMN COL_B  		
ADD COLUMN COL_C INTEGER;  
SQL failed with: Column, attribute, or period "COL_B" is not defined in   
"SAMPLE.TEST_TAB"..SQLCODE=-205,SQLSTATE=42703, DRIVER=3.64.106

´íÎó 3£ºÊý¾Ý´íÎó

¼ÙÉè COL_A ÒѾ­±»ÉèÖÃΪ TEST_TAB ÖеÄÖ÷¼ü¡£Ç°ÃæµÄ SQL ʹÓÃÈçÇåµ¥ 13 ÖÐËùʾµÄ SQL Ö¸ÁîÔÚÊý¾Ý¿âÖвåÈëÁËÊý¾Ý¡£

Çåµ¥ 13. Ç°Ãæ½»¸¶ÖÐÖ´ÐÐµÄ SQL

INSERT INTO SAMPLE.TEST_TAB (COL_A, COL_B) VALUES ('max_number_to_display', '20');

µ±ÒµÎñÂß¼­±ä¸üʱ£¬ÒªÇó»áËæÖ®±ä»¯£¬¶ø SQL Ö¸ÁîÒ²»á±»¸üУ¬ÈçÇåµ¥ 14 ÖÐËùʾ¡£

Çåµ¥ 14. µ±Ç°½»¸¶ÖÐÒѸüÐ嵀 SQL
INSERT INTO SAMPLE.TEST_TAB (COL_A, COL_B) VALUES ('max_number_to_display', '40');;  
DB2 SQL error: SQLCODE: -803, SQLSTATE: 23505, SQLERRMC: 1;SAMPLE.TEST_TAB, DRIVER=4.12.55

ÕâÖÖ¸ü¸Ä¶ÔÓÚ´«Í³°²×°³ÌÐòÍêȫûÎÊÌ⣬µ«ÔÚ³ÖÐø½»¸¶ÖÐÊÇÎÞЧµÄ£¬ÒòÎªÇ°ÃæµÄ´úÂëÒѾ­²¿ÊðÔÚÇ°ÃæµÄ½»¸¶ÖС£

ÕâЩ´íÎóʾÀýÏÔʾÁËÔÚÕë¶Ô³ÖÐø½»¸¶²¿ÊðµÄÊý¾Ý¿âÅäÖùý³ÌÖÐʵÏÖ°²×°¿ÉÖØ¸´ÐԵıØÒªÐÔ¡£ÓÃÓÚ³ÖÐø½»¸¶²¿ÊðµÄ°²×°³ÌÐò±ØÐëÌṩ¸ü¸ßµÄ¿ÉÖØ¸´ÐÔ¡£Ó¦ÓÃÒÔÏÂģʽÀ´ÊµÏÖÊý¾Ý¿âÅäÖõݲװ¿ÉÖØ¸´ÐÔ¡£

ģʽ A£ºÈà SQL ½Å±¾±äµÃ°²È«ÒÔ±ã¶à´ÎÔËÐÐ

ΪÁË·ÀÖ¹ÀàËÆÓÚ ´íÎó 2 µÄ´íÎ󣬲¢È·±£½Å±¾ÔËÐжà´Îʱ SQL ½Å±¾µÄÕýÈ·ÐÔ£¬½ûÖ¹·ÃÎÊÒѱ»Ö±½Ó¸üеÄÏÖÓÐ SQL Óï¾ä¡£

±ÜÃâÔÚ´úÂ뿪·¢Óë´úÂëÆÀÉóÆÚ¼äÖ±½Ó¸üРSQL ½Å±¾¡£Ïà·´Òª½»¸¶´úÂë±ä¸ü¸øÏÖÓÐÅäÖã¨ÎÞÂÛ±ä¸üÊÇÕë¶ÔÏÖÓбí½á¹¹»¹ÊÇÏÖÓÐÊý¾Ý£©£¬¾ßÌå·½·¨Êǽ«¸ü¸Ä»®·ÖΪ¸üСµÄµ¥Ôª£¬È»ºó½«´úÂëÆ¬¶Î¸½¼Óµ½ÏÖÓнű¾µÄĩβ¡£ÎªÁ˱ÜÃâÀàËÆÓÚ ´íÎó 2 µÄ´íÎó£¬Ê¹ÓÃÇåµ¥ 15 ÖÐµÄ SQL ½Å±¾¡£Õâ¸ö½Å±¾È·±£µ±½Å±¾ÔËÐжà´Îʱ£¬¿É³É¹¦½«´úÂëÌí¼Ó COL_C¡£

Çåµ¥ 15. ¾­¹ýÓÅ»¯µÄÐ޸ıí½Å±¾

ALTER TABLE SAMPLE.TEST_TAB   
DROP COLUMN COL_B;  ALTER TABLE SAMPLE.TEST_TAB        
ADD COLUMN COL_C INTEGER;

ģʽ B£ºÓ¦ÓÃÑ¡ÔñÐԵݲװÑéÖ¤

ÑéÖ¤´«Í³°²×°Ê±£¬°²×°ÑéÖ¤Æ÷»á¼ì²éÊý¾Ý¿â°²×°ÈÕÖ¾£¬²¢¼Ç¼¼ì²âµ½µÄËùÓÐ SQL ´íÎó¡£µ«ÔÚ³ÖÐø½»¸¶ÖУ¬SQL ½Å±¾¿ÉÒÔÔËÐжà´Î¡£±ÜÃâÿ¸ö SQL ´íÎ󼸺õÊDz»¿ÉÄܵġ£¹ýÂ˳ö²»ÖØÒªµÄ´íÎóºÍ¿ÉÒÔºöÂԵĴíÎ󣬱ÈÈ磺

1.´´½¨Öظ´µÄ±í¡¢ÁС¢Ä£Ê½¡¢¼üµÈ

2.ɾ³ý²»´æÔڵĶÔÏó

3.²åÈëÖØ¸´Êý¾Ý

Ñ¡ÔñÐÔÑéÖ¤¿ÉÒÔÈ·±£ÖØÒª´íÎóÊܵ½×î´óµÄ¹Ø×¢£¬²¢µÃµ½Õï¶ÏÓëÐÞ¸´¡£

ģʽ C£º¼ò»¯Óë¼ÓËÙ SQL ½Å±¾µÄÔËÐÐ

Ëæ×ÅÊý¾Ý¿âÏà¹Ø´úÂëµÄ³ÖÐøÌí¼Ó£¬°²×°³ÌÐò±äµÃÔ½À´Ô½´ó¡£Ó¦ÓÃÒÔϹý³Ì¿ÉÒÔÌá¸ß²¿ÊðµÄ³É¹¦ÂʺÍÐÔÄÜ¡£

  1. ¶¨ÆÚ¶Ô½Å±¾½øÐд浵¡£ ÀýÈ磬¼ÙÉèÿÔ½«´úÂë½»¸¶Éú²ú¡£½Å±¾¿ÉÒÔÿÔ½øÐд浵£¬Èçͼ 3 ÖÐËùʾ¡£

ͼ 3. ´æµµ½Å±¾µÄÎļþ½á¹¹

³ýÁËÎļþ¼ÐÖ®Í⣬content-spec_<time stamp> ¿ÉÓÃÓÚʶ±ðµ÷Óýű¾µÄÃüÁî¡£ÈçÇåµ¥ 16 ÖÐËùʾ£¬½Å±¾À´×ÔÓÚ content-spec_201311.xml Îļþ£¬Ëüµ÷ÓÃÁË November ´æµµÎļþ¼ÐÖеĽű¾¡£

Çåµ¥ 16. content-spec_201311.xml µÄÄÚÈÝ

<SYS command="db2 connect to DB" /> 
<SQL file="content/config/script/201311/delta_  update.ddl" /> 
<SQL file="content/config/script/201311/delta_sample_data_  update.ddl" />  
<SYS command="db2 commit work;db2 CONNECT RESET;db2 TERMINATE;" />
  1. ½«Ê±¼ä´ÁÓ³Éäµ½´æµµÎļþ¡£ ½Å±¾´æµµºó£¬½¨Á¢Ò»¸ö×Ô¶¯·½·¨½«Ê±¼ä´ÁÓëÒÑ´æµµ¹¹¼þ½øÐÐÓ³É䣬±ÈÈçÇåµ¥ 17 ÖÐËùʾµÄÓ³ÉäÎļþ¡£ÔÚÇåµ¥ÖУ¬timestamp ²ÎÊý±íʾ½Å±¾´æµµÊ±µÄÌØ¶¨ÈÕÆÚ¡£¶Ô¸ÃÈÕÆÚËù×öµÄ´úÂë±ä¸ü°üº¬ÔÚ´æµµÎļþ¼ÐÄÚ¡£

Çåµ¥ 17. Ó³ÉäÎļþʾÀý

<buildHistory projectName="Sample_Project">   
<build timestamp="20131130" folder="201311" />   
<build timestamp="20131230" folder="201312" />   
<build timestamp="20140130" folder="201401" />   
<build timestamp="20140228" folder="201402" /> 
</buildHistory>
  1. ×Ô¶¯Éú³É½Å±¾¶ÓÁС£½«´æµµÎļþ¼ÐÓëʱ¼ä´ÁÓ³ÉäÖ®ºó£¬°²×°³ÌÐò»áÕûºÏÄ¿±ê½Å±¾²¢×Ô¶¯Éú³É½Å±¾Ö´ÐжÓÁС£Ê×ÏÈËü»á¼ì²âµ±Ç°µÄ¹¹½¨¼¶±ð£¬²¢½«¸Ã¹¹½¨¼¶±ðÓëÇåµ¥ 17 Öж¨ÒåµÄ timestamp ²ÎÊý½øÐбȽϡ£¶ÔÓÚʱ¼ä´Á±Èµ±Ç°¹¹½¨¼¶±ðÍíµÄÿһÏ¶¼»áÔËÐÐÓ³ÉäÎļþ¼ÐÖеĽű¾£¬ÈçÇåµ¥ 18 ÖÐËùʾ¡£

Çåµ¥ 18. ÕûºÏ½Å±¾ÒÔ¹ÜÀí´æµµµÄÊý¾Ý¿â½Å±¾

scriptLocation=$(cd -P -- "$(dirname -- "$0")" && pwd -P)|  
# build level get from user's current environment 
startVersion=$1  
if [[ $startVersion == "" ]]; 
then   $startVersion="00000000"  
fi  
# mapping file containing relationship between time stamp and archived  
fname="$scriptLocation/buildHistory.xml"   
exec<$fname   while read line   
do   
if grep -q timestamp <<<$line;   
then   
timestamp=`echo    $line | awk '{print $2}' | sed 's/timestamp=//' | sed 's/.\(.*\)/\1/' | \  sed 's/\(.*\)./\1/'`   
if (( "$timestamp" > "$startVersion" ));then   
folder=`echo $line | awk '{print $3}' | sed 's/folder=//' | sed 's/.\(.*\)/\1/' | \  sed 's/\(.*\)./\1/'`   
FOLDERARRAY[$index]="$folder"   
index=$(($index+1))   
fi   
fi   
done

ÀýÈ磬Èç¹ûµ±Ç°Óû§»·¾³ÉϵĹ¹½¨¼¶±ðÊÇ 20140205£¬ÄÇôֻ»áµ÷ÓÃÔÚÎļþ¼Ð 201402 Öд浵µÄ½Å±¾£¬ÒòΪÎļþ¼ÐµÄÓ³Éäʱ¼ä´ÁΪ 20140228¡£¶ÔÓÚÆäËûÎļþ¼Ð£¬°²×°³ÌÐò¼ÙÉèËüÃÇÔÚʹÓù¹½¨¼¶±ð 20140205 ½øÐв¿ÊðÖ®ºóÒѾ­ÔËÐС£ÕûºÏºóµÄ cont-spec Îļþ¿´ÆðÀ´ÀàËÆÓÚÇåµ¥ 19¡£Ëü°üº¬×îºóÒ»¸öÔµÄËùÓÐ delta ½Å±¾¡£

Çåµ¥ 19. ÓÉÕûºÏ½Å±¾Éú³ÉµÄ Delta ½Å±¾

<SYS command="db2 connect to DB" />  
<SQL file="content/config/script/201311/delta_  update.ddl" />  
<SQL file="content/config/script/201311/delta_sample_data_  update.ddl" />  
<SQL file="content/config/script/201312/delta_  update.ddl" />  
<SQL file="content/config/script/201401/delta_  update.ddl" /  <SQL file="content/config/script/201401/delta_sample_data_  update.ddl" />  
<SQL file="content/config/script/201402/delta_  update.ddl" />  
<SYS command="db2 commit work;db2 CONNECT RESET;db2 TERMINATE;" />

   
2849 ´Îä¯ÀÀ       29
 
Ïà¹ØÎÄÕÂ

ÔÆ¼ÆËãµÄ¼Ü¹¹
¶ÔÔÆ¼ÆËã·þÎñÄ£ÐÍ
ÔÆ¼ÆËãºËÐļ¼ÊõÆÊÎö
Á˽âÔÆ¼ÆËãµÄ©¶´
 
Ïà¹ØÎĵµ

ÔÆ¼ÆËã¼ò½é
ÔÆ¼ÆËã¼ò½éÓëÔÆ°²È«
ÏÂÒ»´úÍøÂç¼ÆËã--ÔÆ¼ÆËã
ÈídzÎöÔÆ¼ÆËã
 
Ïà¹Ø¿Î³Ì

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
ÔÆ¼ÆËãÓ¦ÓÃÓ뿪·¢
CMMIÌåϵÓëʵ¼ù
»ùÓÚCMMI±ê×¼µÄÈí¼þÖÊÁ¿±£Ö¤
×îл¼Æ»®
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢ 6-12[ÏÃÃÅ]
È˹¤ÖÇÄÜ.»úÆ÷ѧϰTensorFlow 6-22[Ö±²¥]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 6-30[±±¾©]
ǶÈëʽÈí¼þ¼Ü¹¹-¸ß¼¶Êµ¼ù 7-9[±±¾©]
Óû§ÌåÑé¡¢Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À 7-25[Î÷°²]
ͼÊý¾Ý¿âÓë֪ʶͼÆ× 8-23[±±¾©]

ר¼ÒÊӽǿ´ITÓë¼Ü¹¹
Èí¼þ¼Ü¹¹Éè¼Æ
ÃæÏò·þÎñÌåϵ¼Ü¹¹ºÍÒµÎñ×é¼þµÄ˼¿¼
ÈËÈËÍøÒÆ¶¯¿ª·¢¼Ü¹¹
¼Ü¹¹¸¯»¯Ö®ÃÕ
̸ƽ̨¼´·þÎñPaaS
Ïà¹ØÅàѵ¿Î³Ì

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
Windows Azure ÔÆ¼ÆËãÓ¦ÓÃ

ĦÍÐÂÞÀ­ ÔÆÆ½Ì¨µÄ¹¹½¨ÓëÓ¦ÓÃ
ͨÓù«Ë¾GE DockerÔ­ÀíÓëʵ¼ù
ijÑз¢ÖÐÐÄ Openstackʵ¼ù
ÖªÃûµç×Ó¹«Ë¾ ÔÆÆ½Ì¨¼Ü¹¹ÓëÓ¦ÓÃ
ijµçÁ¦ÐÐÒµ »ùÓÚÔÆÆ½Ì¨¹¹½¨ÔÆ·þÎñ
ÔÆ¼ÆËãÓëWindows AzureÅàѵ
±±¾© ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ