斷點(diǎn)

          每天進(jìn)步一點(diǎn)點(diǎn)!
          posts - 174, comments - 56, trackbacks - 0, articles - 21

          遠(yuǎn)程接口調(diào)用ejb的過程:
          首先客戶端需要與ejb建立起socket通信,在通信管道上他們之間需要來回發(fā)送IIOP協(xié)議消息,因?yàn)閿?shù)據(jù)要在網(wǎng)絡(luò)進(jìn)行傳輸,存放數(shù)據(jù)的java對(duì)象必須要進(jìn)行序列化。這個(gè)過程中,有網(wǎng)絡(luò)通信的開銷、協(xié)議解析的開銷、對(duì)象序列化的開銷。因?yàn)閑jb是分布式技術(shù),它允許客戶端與ejb應(yīng)用在不同一機(jī)器上面,所以這些開銷也是必然的。

          本地接口調(diào)用ejb的過程:
          通過本地接口調(diào)用ejb,直接在內(nèi)存交互,這樣就可以避免因網(wǎng)絡(luò)通信所造成的各種性能開銷。
          注意:
          1.只有客戶端與EJB應(yīng)用都在同一個(gè)JVM內(nèi)運(yùn)行的時(shí)候,我們才能調(diào)用本地接口,否則只能調(diào)用遠(yuǎn)程接口。
          2.只要客戶端與ejb發(fā)布在同一個(gè)jboss內(nèi),我們就認(rèn)為它們?cè)谕粋€(gè)JVM。
          3.客戶端可以調(diào)用本地接口;也可調(diào)用遠(yuǎn)程接口;當(dāng)本地接口與遠(yuǎn)程接口都有同一個(gè)方法時(shí),優(yōu)先調(diào)用本地接口中的方法。

          開發(fā)一個(gè)自己的遠(yuǎn)程接口的無狀態(tài)會(huì)話bean:
          1.需要自己開發(fā)的EJB的組件.jar包。
          注意:在實(shí)現(xiàn)類中加入注解,綁定接口。
          @Stateless、@Remote(HelloWorld.class) //為接口。
          2.需要自己開發(fā)出的EJB的客戶端,并把客戶端工程打成.war文件。
          注意:客戶端所要知道的JNDI名稱,下面的HelloWorld 為遠(yuǎn)程接口。
          InitialContext ctx = new InitialContext();
          HelloWorld helloWorld = (HelloWorld)ctx.lookup("HelloWorldBean/remote");
          out.println(helloWorld.sayHello("荊州"));
          3.把.jar和.war文件拷貝到j(luò)boss的deploy區(qū)。
          4.打開瀏覽器,輸入自己開發(fā)出的EJB客戶端的.jsp頁面,即可。

          開發(fā)一個(gè)自己的本地接口的無狀態(tài)會(huì)話bean:
          1.需要自己開發(fā)的EJB的組件.jar包。
          注意:在實(shí)現(xiàn)類中加入注解,綁定接口。
          @Stateless、@Local(HelloWorldLocal.class)//接口。
          2.需要自己開發(fā)出的EJB的客戶端,并把客戶端工程打成.war文件。
          注意:客戶端所要知道的JNDI名稱,下面的HelloWorldLocal 為本地接口。
          InitialContext ctx = new InitialContext();
          HelloWorldLocal helloWorld = (HelloWorldLocal)ctx.lookup("HelloWorldLocalBean/local");
          out.println(helloWorld.sayHello("荊州"));
          3.把.jar和.war文件拷貝到j(luò)boss的deploy區(qū)。
          4.打開瀏覽器,輸入自己開發(fā)出的EJB客戶端的.jsp頁面,即可。

          Bean實(shí)例的兩種管理技術(shù):
          1.無狀態(tài)bean使用實(shí)例池技術(shù)管理bean;
          2.有狀態(tài)bean使用激活(activation)管理bean。

          Jboss生成的JNDI名稱,默認(rèn)命名規(guī)則如下:
          如果把EJB應(yīng)用打包成后題為.jar的模塊文件,默認(rèn)的全局JNDI名稱是
          本地接口:EJB-CLASS-NAME/local
          遠(yuǎn)程接口:EJB-CLASS-NAME/remote
          例如:把EJB-HelloWorld(里面包含接口HelloWorld和實(shí)現(xiàn)類HelloWorldBean)應(yīng)用打包成EJB-HelloWorld.jar文件,它的遠(yuǎn)程接口的JNDI名稱是:HelloWorldBean/remote。

          jndi.properties的配置:
          java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
          java.naming.provider.url=localhost:1099


          posted @ 2009-03-26 09:56 斷點(diǎn) 閱讀(255) | 評(píng)論 (0)
          主站蜘蛛池模板: 东海县| 探索| 凤台县| 涞源县| 临泽县| 漳平市| 阿拉尔市| 许昌市| 巴楚县| 额济纳旗| 衡阳县| 江门市| 东阿县| 南昌县| 高安市| 芦溪县| 庆元县| 白山市| 航空| 海淀区| 紫金县| 嵊州市| 教育| 阳东县| 丰原市| 三门峡市| 金平| 孟津县| 天祝| 七台河市| 东乡族自治县| 中西区| 淮北市| 德州市| 鹤庆县| 三都| 天镇县| 嫩江县| 浦城县| 望江县| 淮安市|