锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
1.瀵逛簬鐩存帴瀹氫箟鍦˙ean綾諱腑鐨勫洖璋冿紝鍏舵牸寮忓簲璇ユ槸public void <Method()>銆?br />
2.瀵逛簬Bean綾誨崟鐙彁渚?鍗曚釜鎴栧涓?鍥炶皟鐩戝惉鍣ㄧ被(鎷︽埅鍣?鑰岃█錛屽叾鏍煎紡鏄痯ublic void<METHOD(InvocationContext ctx)>銆俲ava.interceptor.InvocationContext鎻愪緵浜嗚皟鐢ㄤ笂涓嬫枃淇℃伅銆?br />
3.涓嶈兘澶熸姏鍑哄簲鐢ㄥ紓甯革紝浣嗗彲浠ユ姏鍑鴻繍琛屾湡寮傚父銆傚鏋滃湪浜嬪姟涓姏鍑轟簡榪愯鏈熷紓甯革紝浜嬪姟灝嗗洖婊氥?br />
4.涓嶈兘澶熶負鍥炶皟鐩戝惉鍣ㄥ疄鏂戒緷璧栨敞鍏ャ?br />
娉ㄩ噴
鎻忚堪
鍏稿瀷瀹炵幇(鏃犵姸鎬?
鍏稿瀷瀹炵幇(鏈夌姸鎬?
@PostConstruct
鍦ㄥ疄渚嬪寲Bean綾誨悗,Ejb瀹瑰櫒浼氳皟鐢ㄥ畠
鏍規嵁Bean瀹炰緥鐨勯渶姹傛潵瀹屾垚鐩稿簲鐨勫垵濮嬪寲宸ヤ綔錛屾瘮濡傚皢浼犲叆鐨勫弬鏁板艱祴緇欐垚鍛樺彉閲忋?/span>
鏍規嵁Bean瀹炰緥鐨勯渶姹傛潵瀹屾垚鐩稿簲鐨勫垵濮嬪寲宸ヤ綔錛屾瘮濡傚皢浼犲叆鐨勫弬鏁板艱祴鍊肩粰鎴愬憳鍙橀噺銆?/span>
@PrePassivate
鍦ㄦ寕璧稡ean瀹炰緥鍓嶏紝瀹瑰櫒浼氱珛鍗寵皟鐢ㄥ畠(鐢變簬鍐呭瓨涓瓨鍦ㄥお澶氱殑Bean瀹炰緥錛屽洜姝ら渶瑕佸皢浼氳瘽鐘舵佷繚瀛樺埌紓佺洏涓?
鏈嬌鐢ㄣ?/span>
閲婃斁Bean瀹炰緥鍙兘鎸佹湁鐨勪換浣曡祫婧愩?/span>
@PostActivate
鍦ㄦ縺媧籅ean瀹炰緥鍚庯紝瀹瑰櫒浼氱珛鍗寵皟鐢ㄥ畠(鐢變簬瀹㈡埛闇鏌怋ean瀹炰緥錛屽洜姝ら渶瑕佸皢浠ュ墠鐨勪細璇濈姸鎬佷氦鎹㈠埌鍐呭瓨涓?
鏈嬌鐢ㄣ?/span>
Bean瀹炰緥閲嶆柊鑾峰緱鎵闇瑕佺殑浠諱綍璧勬簮錛屾瘮濡傚摢浜涘湪鎵ц@PrePassivate鍥炶皟鏈熼棿閲婃斁鐨勮祫婧愩?/span>
@PreDestroy
鍦ㄧ粨鏉熷@Remove鏂規硶鐨勮皟鐢ㄤ箣鍚庯紝鑰屽湪閿姣丅ean瀹炰緥涔嬪墠錛孍jb瀹瑰櫒浼氱珛鍗寵皟鐢ㄥ畠
涓洪攢姣丅ean瀹炰緥鍋氬噯澶囥傞噴鏀懼凡鍒嗛厤緇欏畠鐨勬墍鏈夎祫婧愩?/span>
涓洪攢姣丅ean瀹炰緥鍋氬噯澶囥傞噴鏀懼凡鍒嗛厤緇欏畠鐨勬墍鏈夎祫婧愩?/span>
褰撲綘鐨?/span>EJB3鏄?/span>deploy to jboss鐨勬儏鍐典笅錛?/span>ejb client璋冪敤EJB3鍒嗕袱縐嶆儏鍐碉細
1) 鍙戝竷鍦?/span>jboss鐨?/span>web app浣滀負client鏉ヨ皟鐢?/span>EJB
EJB鍜岃皟鐢?/span>EJB鐨?/span>WEB 搴旂敤閮藉彂甯冨湪Jboss 闆嗘垚鐜涓嬨傚湪Jboss涓嬪彂甯?/span>WEB 搴旂敤錛岄渶瑕佹妸WEB 搴旂敤鎵撳寘鎴?/span>war 鏂囦歡銆傚彟澶?/span>鍦ㄦ鐜涓嬭皟鐢?/span>EJB 涓嶉渶瑕佹妸EJB 鐨勬帴鍙g被鏀懼叆/WEB-INF/classes/鐩綍涓?/span>錛屽惁鍒欏湪璋冪敤Stateful Bean 灝變細鍙戠敓綾誨瀷鍐茬獊錛屽紩鍙戜笅闈㈢殑渚嬪
java.lang.ClassCastException: $Proxy84
org.apache.jsp.StatefulBeanTest_jsp._jspService(org.apache.jsp.StatefulBeanTest_jsp:55)
濡傛灉EJB鍜岃皟鐢?/span>EJB鐨?/span>WEB 搴旂敤閮藉彂甯冨湪Jboss 闆嗘垚鐜涓嬶紝閭d箞EJB鐨?/span>Local鎴?/span>Remote鎺ュ彛閮藉彲浠ヨ璋冪敤
鍙戝竷鍦?/span>Jboss 涓嬬殑瀹㈡埛绔笉闇瑕佹槑紜緗?/span>JNDI 璁塊棶鐨勪笂涓嬫枃鐜錛屽彲浠ョ洿鎺ラ氳繃
InitialContext ctx = new InitialContext()
鑾峰緱涓婁笅鏂囩幆澧冿紝瀹瑰櫒浼氳嚜鍔ㄨ祴緇?/span>InitialContext 姝g‘鐨勭幆澧冿紝渚嬪錛?/span>
InitialContext ctx = new InitialContext();//瀹㈡埛绔拰jboss榪愯鍦ㄥ悓涓涓?/span>jvm,涓嶉渶瑕佷紶鍏?/span>props
HelloWorld helloworld = (HelloWorld) ctx.lookup("HelloWorldBean/remote");
濡傛灉紜粰InitialContext 璁劇疆浜嗚闂睘鎬э紝鍙嶈屼細甯︽潵涓嶅彲縐繪鐨勯棶棰?/span>錛屽洜涓轟綘鐨勫簲鐢ㄦ湁鍙兘閮ㄧ講鍦?/span>weblogic 絳夊簲鐢ㄦ湇鍔″櫒銆傦紙鏈暀紼嬭冭檻鍒伴儴鍒嗗悓瀛﹀彲鑳介渶瑕佸湪鐙珛鐨?/span>J2se 涓皟鐢?/span>EJB錛屼負浜嗘暀瀛︾殑鏂逛究錛屾妸璁塊棶灞炴ч兘璁句笂浜嗭紝榪欐牱涓嶇鍦?/span>jboss銆?/span>j2se 鎴栫嫭绔?/span>tomcat錛岄兘鑳借幏寰楁紜殑InitialContext錛?/span>
2) 鍦ㄥ崟鐙殑Tomcat鎴?/span>J2SE錛堝junit test錛変腑璋冪敤EJB
鍦ㄦ寮忕殑鐢熶駭鐜涓嬶紝澶ч儴鍒嗚皟鐢?/span>EJB 鐨勫鎴風鍙兘鏄崟鐙殑Tomcat 鎴?/span>Resin銆備笅闈粙緇嶅浣曞湪鍗曠嫭鐨?/span>Tomcat鏈嶅姟鍣ㄤ腑璋冪敤EJB銆?/span>鍦ㄥ崟鐙殑Tomcat 鏈嶅姟鍣ㄤ腑璋冪敤EJB 闇瑕佹湁浠ヤ笅姝ラ錛?/span>
A) 鎶婅皟鐢?/span>EJB 鎵渚濊禆鐨?/span>Jar 鍖呮嫹璐濆埌tomcat 涓嬬殑/shared/lib 鐩綍鎴?/span>WEB 搴旂敤鐨?/span>WEB-INF/lib涓?/span>,鎵渚濊禆鐨?/span>Jar鍦?/span>jboss 瀹夎鐩綍鐨?/span>client鐩綍涓?/span>銆備綘鍙互鍦?/span>eclipse閲岃緗竴涓嚜瀹氫箟鐨?/span>library “ejb3 library”錛屾妸榪欎簺jars閮芥坊鍔犲埌璇?/span>library閲岋紝鐒跺悗鍦ㄤ綘鐨?/span>EJB project閲屾妸“ejb3 library” add to classpath
B) 鎶?/span>EJB 鎺ュ彛鎷瘋礉鍒板簲鐢ㄧ殑/WEB-INF/classes/鐩綍涓?/span>
C) 瀹㈡埛绔闂?/span>EJB 鏃跺繀欏繪槑紜緗?/span>InitialContext 鐜灞炴э紝浠g爜濡備笅:
Properties props = new Properties();
props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
props.setProperty("java.naming.provider.url", "localhost:1099");
props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming");
InitialContext ctx = new InitialContext(props);//瀹㈡埛绔拰jboss榪愯鍦ㄥ悓涓涓?/span>jvm,涓嶉渶瑕佷紶鍏?/span>props
HelloWorld helloworld = (HelloWorld) ctx.lookup("HelloWorldBean/remote");
Tip: 闄や簡涓婇潰閫氳繃紜紪鐮佽緗幆澧冨睘鎬х殑鏂瑰紡澶栵紝榪樺彲浠ュ湪搴旂敤鐨?/span>classpath 涓嬫斁緗竴涓?/span>jndi.properties 鏂囦歡
娉ㄦ剰錛氬湪鍗曠嫭鐨?/span>tomcat鍜?/span>J2SE閲屼笉鑳借皟鐢?/span>EJB 鐨?/span>Local 鎺ュ彛錛屽洜涓轟粬涓?/span>JBOSS 涓嶅湪鍚屼竴涓?/span>VM 涓?/span>J2se涓皟鐢?/span>EJB3 鍚屾牱闇瑕佹妸涓婅堪jar 鍙?/span>EJB 鎺ュ彛鏀劇疆鍦ㄥ簲鐢ㄧ殑綾昏礬寰勪笅銆?/span>(濡傛灉鏄?/span>JBoss錛屽垯闇瑕佹妸JBoss_HOME/client涓嬬殑 jbossall-client.jar 鍜?/span>jnp_client.jar寮曞叆鍒頒綘鐨勫伐紼嬮噷)