½ñÌ죬Ðí¶à´óÐÍ×éÖ¯·¢ÏÖËûÃÇ×Ô¼ºÕýÔÚÓµÓкÍʹÓÃÓÉ.NET¼¼ÊõºÍJ2EE¼¼Êõ»ìºÏ×é³ÉµÄ¿ª·¢ÍŶӺͷ¢²¼·þÎñÆ÷¡£ÎªÁËƽºâͨ¹ýJ2EEÓ¦ÓóÌÐò·þÎñÆ÷·¢Ë͵ÄÆóÒµÖÊÁ¿£¬¹«Ë¾µÄÉÌÒµÂß¼¾³£ÒÔÆóÒµJavaBean(EJB)µÄÐÎʽ·¢²¼ÓÚJ2EEÓ¦ÓóÌÐò·þÎñÆ÷ÉÏ¡£ÁíÒ»·½Ã棬ΪÁËÂú×ãÈÕÒæ±ä»¯µÄÉÌÒµ·¢Õ¹µÄÒªÇ󣬶àÊý¿ª·¢Õ߱ȽÏϲ»¶ÔÚ¾ßÓи߶ÈÉú²úÐÔÄܵÄVisual
Studio.NET¿ª·¢»·¾³ÏÂʵÏÖÃèÊöÂß¼¡£µ±ÄãÐèÒª°Ñ.NETÃèÊö²ãÁ¬½Óµ½J2EEÉÌÒµÂß¼²ãʱ£¬ÌôÕ½¾Í²úÉúÁË¡£
ÈÃÎÒÃÇ¿´Ò»ÏÂVisual MainWin for J2EEÔõô°ïÖúÄãÃæÁٺͿ˷þ-´ÓVisual Studio.NETÖУ¬ÓÃC#»òVisual
Basic.NETÀ´ÊµÏÖASP.NETÃèÊö²ãÈ»ºóÔÙµ÷ÓÃÒÔEJBÐÎʽʵÏÖµÄÉÌÒµÂß¼²ã-ÕâÒ»ÌôÕ½ÐÔ¿ª·¢µÄ¡£Çë·ÅÐÄ£¬Ä㽫²»ÐèÒª¾À²øÓÚEJB
API±àÂë¾ÍÄÜ×öÕâµ½Ò»µã¡£½èÖúÓÚVisual MainWin for J2EE£¬Á½¸ö²ã-ASP.NETÇ°¶ËºÍEJBºǫ́-¶¼Äܹ»ÒÔÒ»¸ö´¿´âµÄJ2EEÓ¦ÓóÌÐòµÄÐÎʽÔËÐÐÓÚÄãµÄJ2EEÓ¦ÓóÌÐò·þÎñÆ÷ÉÏ£¬²¢½øÐÐÐÔÄÜÓÅ»¯ºÍʵÏÖÒ»ÖµĻùÓÚJ2EEµÄ°²È«ÐÔ¡£
ΪʵÏÖ´ÓVisual Studio .NETÖе÷ÓÃEJB£¬Äã±ØÐë°²×°Visual MainWin for J2EEµÄÆóÒµ°æ±¾¡£µ±È»£¬Äã¿ÉÒÔ´Ómainsoft.comÍøÕ¾ÉÏÏÂÔØËüµÄÆÀ¹À°æ±¾½øÐÐÊÔÑéÐÔ·ÖÎö¡£
ʾÀý·ÖÎö
±¾ÎĵĹÉƱͶ×Ê(StocksPortfolio)ʾÀý-ËüÏòÄãչʾÔõÑùʹÓÃÒ»¸öASP.NET Web²ãºÍÒ»¸öJ2EEÉÌÒµ²ãÀ´´´½¨Ó¦ÓóÌÐò-±»°²×°ºÍ½¨µµÓÚVisual
MainWin for J2EEÖС£±¾Ê¾ÀýʵÏÖÁËÒ»¸ö¼òµ¥µÄASP.NETÍøÒ³-Óû§Ê¹ÓÃÖ®À´¹ÜÀíËûÃǵĹÉƱͶ×Ê-ºÍÒ»¸öASP.NET
Web·þÎñ-ËüÓÃÓÚÌṩÐé¹¹µÄ¹ÉƱÐÐÇé¡£±¾Ê¾Àý»¹Ê¹ÓÃÁËÒ»¸ö»á»°EJB-ΪÄãµÄJ2EEÓ¦ÓóÌÐò·þÎñÆ÷ËùÓÃÒÔʵÏÖÂòÂô¹ÉƱµÄÂß¼¡£

ͼ1.ÔËÐÐÓÚJBossÓ¦ÓóÌÐò·þÎñÆ÷ÉϵÄStocksPortfolioÓ¦ÓóÌÐò
°ÑEJBÌí¼Óµ½ÄãµÄ.NET»·¾³
´ÓVisual Studio.NETÖе÷ÓÃÒ»¸öEJBÓëµ÷ÓÃÒ»¸öWeb·þÎñÒ»Ñù¼òµ¥¡£ÔÚÄãµÄ½â¾ö·½°¸×ÊÔ´¹ÜÀíÆ÷ÖУ¬ÓÒ»÷"References"£¬È»ºóÑ¡Ôñ"Add
EJB Reference"£¬¼´³öÏÖһеĽö¿ÉÓÃÓÚVisual MainWin for J2EE¹¤³ÌµÄ²Î¿¼ÀàÐÍ£¬ËüºÜÀàËÆÓÚ±ê×¼µÄVisual
Studio .NETIDEϵÄWeb²Î¿¼(¼ûͼ2)¡£

ͼ2.Ìí¼ÓEJB²Î¿¼
ΪÌí¼ÓÒ»¸öEJB²Î¿¼µ½ÄãµÄVisual MainWin for J2EE¹¤³Ì£¬Äã½öÐèÒªÒ»¸öJavaµµ°¸(JAR)Îļþ-ËüʵÏÖÁ˸ÃEJB»òÕß°üº¬ËüµÄ±¾µØºÍÔ¶³Ì½Ó¿Ú¡£Visual
MainWinÄܹ»²éѯӦÓóÌÐò·þÎñÆ÷ÓйØËùÓз¢²¼ÔÚËüÉÏÃæµÄEJBµÄÐÅÏ¢²¢ÔÚÒ»¸ö¶Ô»°¿òÖÐÏÔʾÏàÓ¦ÓÚÄãµÄJAR¶¨ÒåµÄEJB¡£ÄãÖ»ÐèҪѡÔñÄãÏëҪʹÓõÄÌض¨EJB(¿ÉÄܶà¸ö)¼´¿É(¼ûͼ3)¡£

ͼ3.Ìí¼ÓEJB²Î¿¼¶Ô»°¿ò
ÄãÒ²¿ÉÒÔÔÚÒ»¸öÔ¶³ÌÓ¦ÓóÌÐò·þÎñÆ÷ÉÏÏû·Ñ¸ÃEJB£¬Ö»ÒªËüÓëÄãµÄ¹¤³ÌÏà¹ØµÄ±¾µØÓ¦ÓóÌÐò·þÎñÆ÷ÊÇÒ»ÑùµÄÀàÐÍ¡£Õâ¿ÉÄÜÊÇÒ»¸öWindows£¬Linux£¬Unix£¬Ö÷¿ò¼Ü»òÈκÎÆäËüÖ§³ÖJ2EEµÄ·þÎñÆ÷¡£ÎªÁËÏû·ÑÒ»¸ö·¢²¼ÓÚÒ»¸öÔ¶³Ì·þÎñÆ÷ÉϵÄEJB£¬Çëµã»÷"Advanced"À´Õ¹¿ª¸Ã¶Ô»°¿ò(¼ûͼ4)¡£

ͼ4.¸ß¼¶Ä£Ê½µÄÌí¼ÓEJB²Î¿¼¶Ô»°¿ò
ÊäÈëJNDI URLµ½Ô¶³ÌJ2EEÓ¦ÓóÌÐò·þÎñÆ÷ÖУ¬È»ºóµã»÷"Fetch From
Server"¡£Visual MainWin½«ÁгöËùÓеķ¢²¼ÓÚÔ¶³Ì·þÎñÆ÷ÉϵÄEJBºÍÏàÓ¦ÓÚÄãµÄJARÎļþµÄEJB¡£¸Ã²Ù×÷Óë±¾µØEJBÊÇÒ»Öµġ£
Ñ¡ÔñÄãÏëÒªÏû·ÑµÄEJB(¿ÉÄܶà¸ö)£¬µã»÷OK¡£Ò»¸öеÄEJB²Î¿¼Îļþ¼Ð¼´²úÉúÓÚÄãµÄ½â¾ö·½°¸×ÊÔ´¹ÜÀíÆ÷ä¯ÀÀÆ÷ÖУ¬Èçͼ5Ëùʾ¡£¸ÃÎļþ¼Ð°üº¬Ã¿Ò»¸ö¸ÕÌí¼ÓÉÏÈ¥µÄEJB²Î¿¼µÄ»ùÓÚ·þÎñÆ÷µÄ²Î¿¼£¬ÀàËÆÓÚWeb²Î¿¼½áµã¡£ÁíÍ⣬»¹Éú³ÉÒ»¸ö°ü×°ÀàÀ´¼ò»¯ÄãµÄEJBµ÷ÓñàÂë¡£ÔÚºóÃ沿·ÖÎÒÃǽ«ÌÖÂ۸ðü×°Àà¡£

ͼ5.ÏÔʾÓÐEJB²Î¿¼µÄ½â¾ö·½°¸×ÊÔ´¹ÜÀíÆ÷Îļþ¼Ð
´Ó.NETÖе÷ÓÃEJB·½·¨
µ±ÄãÌí¼ÓÒ»¸öEJB²Î¿¼µ½ÄãµÄ¹¤³Ìʱ£¬ÏµÍ³½«×Ô¶¯²úÉúÒ»¸ö.NET(C#»òVB.NET)À࣬ËüÃèÊöÁËÒ»¸ö¼òµ¥µÄµ½¸ÃEJBµÄ½Ó¿Ú¡£¸ÃÀà°üÀ¨ÒªÇó´´½¨¸ÃEJBºÍµ÷ÓÃËüµÄ·½·¨µÄJ2EE±àÂë¡£Õâ¸ö.NETÀàͨ¹ýËü×Ô¼ºµÄ¹«¹²·½·¨±©Â¶Á˸ÃEJBÔ¶³Ì½Ó¿ÚµÄ·½·¨¡£Îªµ÷ÓÃÄãµÄEJBµÄÉÌÒµ·½·¨£¬ÄãÖ»Ðè¼òµ¥µØ´´½¨Ò»¸ö¸Ã°ü×°ÀàµÄʵÀý²¢µ÷ÓÃÊʵ±µÄ°ü×°Àà·½·¨¼´¿É¡
ÏÂÃæÊÇ´ÓÄãµÄ.NET¹¤³ÌÖе÷ÓÃÒ»¸öEJB·½·¨µÄ´úÂëʾÀý:
//´´½¨StockTrader EJBµÄÒ»¸öʵÀý.
localhost.StockTraderEJB trader = new localhost.StockTraderEJB();
// ¹ºÂòÓû§ÔÚ¹ÉƱÃû³ÆÎı¾¿òÖж¨ÒåµÄ¹ÉƱ£¬
//Ëù¹ºÂòµÄ¹É·ÝÊýÏàÓ¦ÓڹɷÝÊýÎı¾¿òÖеÄÊý×Ö
trader.buy(tbStockName.Text, Int32.Parse(tbNumOfShares.Text));
ÉîÈë·ÖÎö
ÔÚÉÏÃæ²úÉúµÄ°ü×°ÀàµÄ¾²Ì¬¹¹ÔìÆ÷ÖÐÖ´Ðб»ÇëÇóµÄJ2EEµ÷ÓÃÒÔ´´½¨¸ÃEJBµÄhome¶ÔÏó¡£È»ºó£¬ÔÚÒ»¸öȱʡµÄ¹¹ÔìÆ÷ÖУ¬ËüʹÓÃhome¶ÔÏóÀ´´´½¨¸ÃEJB¶ÔÏ󡣸ÃEJB¶ÔÏóÊÇÒÔÒ»¸ö°ü×°Àà³ÉÔ±µÄÐÎʽ´æ´¢µÄ£¬Í¨¹ýËüÀ´µ÷ÓÃÉÌÒµEJB·½·¨¡£
ÏÂÃæÊÇ´´½¨¸ÃStockTrader EJBµÄ°ü×°ÀàµÄ²¿·Ö´úÂë:
private
static trading.StockTraderHome home;
private trading.StockTraderEJB ejbObj;
static StockTraderEJB() {
// ´´½¨Ò»¸öJavaÃüÃû(JNDI)ÉÏÏÂÎÄ
Context context;
context = vmw.j2ee.J2EEUtils.CreateContext(null, null);
object homeObj;
//´ÓJNDI·þÎñÆ÷»ñÈ¡home¶ÔÏó
homeObj = context.lookup("ejb/StockTrader");
home = ((trading.StockTraderHome)(homeObj));
}
//ȱʡµÄ¹¹ÔìÆ÷:´´½¨Ò»¸öеÄEJBʵÀý
public StockTraderEJB() {
this.ejbObj = home.create();
}
Õâ¸ö°ü×°Ààͨ¹ýËüµÄ¹«¹²·½·¨±©Â¶¸ÃEJBÔ¶³Ì½Ó¿ÚµÄ·½·¨¡£È»ºó£¬Ã¿¸öÕâЩ·½·¨Í¨¹ýEJB¶ÔÏóµ÷ÓÃÄãµÄEJBµÄÏàÓ¦µÄÉÌÒµ·½·¨¡£ÏÂÃæµÄ´úÂëÏòÄãչʾ¹ÉƱÉ̵ÄEJB°ü×°Æ÷Öеķ½·¨:
public
virtual void buy(string arg_0, int arg_1) {
this.ejbObj.buy(arg_0, arg_1);
}
public virtual void sell(string arg_0, int arg_1) {
this.ejbObj.sell(arg_0, arg_1);
}
Visual MainWin»¹¸ºÔðÔÚJavaºÍ.NETÖ®¼äÓ³ÉäÊý¾ÝÀàÐÍ¡£ÀýÈ磬Èç¹ûÄãµÄEJBµÄ·½·¨Ö®Ò»ÒÔ²ÎÊýÐÎʽÊÕµ½Ò»¸öjava.lang.calendar¶ÔÏó£¬ÄÇô£¬Ä㽫ʹÓÃÒ»¸ö.NET
System.DateTime¶ÔÏó²ÎÊýÀ´µ÷ÓÃÕâ¸ö·½·¨²¢°ÑËüÓ³Éäµ½Ò»¸öjava.lang.calendar¶ÔÏóÉÏ¡£Ëæºó£¬Èç¹ûÄãµÄEJB·½·¨·µ»ØÒ»¸öjava.lang.class£¬Ä㽫ÊÕµ½Ò»¸öSystem.Type¶ÔÏó×÷Ϊ´úÌæ¡£
µ÷ÊÔÎÊÌâ
¼´Ê¹Visual MainWin¶Ô¿ª·¢¹¤×÷½øÐÐÁ˼ò»¯´¦Àí£¬ÄãÈÔÈ»¿ÉÄÜÐèÒªµ÷ÊÔÄãµÄ¶à¼¶µÄ¡¢»ìºÏµÄASP.NET/EJBÓ¦ÓóÌÐò¡£Visual
MainWinµ÷ÊÔÆ÷ÔÊÐíÄã´ÓVisual Studio .NET IDEÄÚ²¿µ÷ÊÔÄãµÄ»ìºÏÓ¦ÓóÌÐò¡£Äã¿ÉÒÔ´©¹ýÓïÑԱ߽çÔÚÄãµÄC#»òVB.NET´úÂëÖÐÉèÖÃÖжϣ¬µ¥²½µ÷ÊÔEJB
Java´úÂëºÍµ÷ÊÔÄãµÄÈ«²¿Ó¦ÓóÌÐò¡£¶øÇÒ£¬ÒòΪµ÷ÊÔÐèÒª³öÏÖÓÚÈκÎÎÊÌâ·¢ÉúµÄµØ·½£¬ËùÒÔ£¬Visual MainWinµ÷ÊÔÆ÷Äܹ»ÒÀ¸½µ½ÄãµÄJ2EEÓ¦ÓóÌÐò·þÎñÆ÷£¬¶ø²»¹ÜËüÊÇÔËÐÐÓÚLinux£¬Unix»¹ÊÇÆäËü¿ò¼ÜÖ®ÉÏ£¬Ö»ÒªËüÄÜÔËÐÐÔÚµ÷ÊÔģʽ¾ÍÐС£

ͼ6.ʹÓÃVisual MainWinµ÷ÊÔÆ÷À´µ÷ÊÔEJBÔ´´úÂë
Visual MainWinΪÄã´´½¨µÄÓ¦ÓóÌÐòÊÇÒ»¸ö±ê×¼µÄJ2EE servletÓ¦ÓóÌÐò-ËüÄܹ»Í¨¹ýJ2EEÓ¦ÓóÌÐò·þÎñÆ÷Ö÷¹Ü¿ØÖÆ̨½øÐз¢²¼ºÍ¹ÜÀí£¬¾ÍÏóÈκÎÆäËüJ2EE
servletÓ¦ÓóÌÐòÒ»Ñù¡£Òò´Ë£¬ÄãµÄASP.NETÃèÊö²ãºÍÄãµÄEJBÉÌÒµÂß¼²ã¶¼ÄÜÒÀ¿¿Ò»ÑùµÄJ2EE°²È«»ù´¡½á¹¹¡£ÄãµÄ»ìºÏµÄASP.NET/EJBÓ¦ÓóÌÐòÄÜÒÀ¿¿Ò»¸öͨ¹ýʹÓÃJ2EE
servletÈÏÖ¤µÄһֵݲȫģÐÍ£¬¶øÄãµÄÓ¦ÓóÌÐò·þÎñÆ÷Óû§ºÍ½ÇÉ«¶¨ÒåÒ²ÄÜͨ¹ýƽºâ»ùÓÚ½ÇÉ«µÄÊÚȨ»úÖÆÀ´±£Ö¤°²È«ÐÔ¡£
×ܽá
1. ±¾ÎÄÌÖÂÛÁËÔ¶³Ì¶ÔÏóºÍ½Ó¿Ú¡£Í¨¹ýVisual MainWin½øÐб¾µØ¶ÔÏóÏû·ÑÒ²ÊÇ¿ÉÄܵġ£ÎªÁË·¢²¼Ò»¸öʹÓñ¾µØ¶ÔÏóµÄÓ¦ÓóÌÐò£¬Äã±ØÐë´´½¨Ò»¸öÆóÒµµµ°¸(EAR)Îļþ-Ëü¼È°üÀ¨ÄãµÄÓ¦ÓóÌÐòµÄWARÎļþÓÖ°üÀ¨±¾µØEJBµÄJARÎļþ¡£
2. ËäÈ»Visual MainWinÄܹ»°Ñ´ó¶àÊýµÄ.NETÀàÐÍÓ³Éäµ½JavaÀàÐÍ£¬ËüÈ´²»ÄܽøÐм¯ºÏÀàÐ͵ÄÓ³Éä-ÒòΪÕâÖÖÓ³Éä¿ÉÄܵ¼ÖÂÒ»ÖÖÐÔÄÜËðʧ¡£Òò´Ë£¬Äã¿ÉÒÔÑ¡Ôñ´ÓÄãµÄ.NET´úÂëÖд¦ÀíJava¼¯ºÏÀàÐÍ»òÄã×Ô¼ºÖ´ÐÐÕâÑùµÄת»¯¡£
3. Visual MainWinÔÊÐíÄãÏû·Ñ»á»°beanºÍ·ÇÊÂÎñÐÔʵÌåbeans¡£ÊÂÎñÐÔʵÌåbean²»Äܱ»Í¸Ã÷µØÏû·Ñ£¬Òò´ËÄã±ØÐëÊÖ¹¤±àÂëJ2EEÊÂÎñµ÷Óá£È»¶ø£¬ÔÚ´ó¶àÊýÇé¿öÖÐÊÂÎñÐÔʵÌåbean¿ÉÒÔͨ¹ý»á»°bean½øÐдæÈ¡£¬Òò´ËÄã²»´ó¿ÉÄÜÐèÒªÕâÑù×ö¡£
|