<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Tomcat JSP調(diào)用JBoss布署的EJB遠程方法

    Tomcat JSP調(diào)用JBoss布署的EJB遠程方法
    ?
    王偉東
    ?
    ?? EJB技術(shù)的基礎(chǔ)是另外兩種技術(shù):RMI-IIOP和JNDI。要想了解EJB,一定要先了解RMI-IIOP和JNDI。

    Java?RMI-IIOP

    ????Java?RMI-IIOP(Java?Remote?Method?Invocation?over?the?Internet?Inter-ORB?Protocol)是J2EE的網(wǎng)絡(luò)機制。Java?RMI-IIOP允許你編寫分布式對象,使得對象的通信范圍能夠在內(nèi)存中,跨Java虛擬機,跨物理設(shè)備。
    Java命名和目錄接口(Java?Naming?and?Directory?Interface,JNDI)

    ????JNDI是Java?Naming?and?Directory?Interface?的簡寫,中意為:Java命名及目錄接口,它是為了對高級網(wǎng)絡(luò)應(yīng)用開發(fā)中的使用的目錄基礎(chǔ)結(jié)構(gòu)的訪問。實際上這個目錄是一個特殊的數(shù)據(jù)庫,提供了對存儲數(shù)據(jù)的快速訪問,不象傳統(tǒng)的目錄服務(wù)訪問方式-你必須提供不同的API接口去訪問不同的目錄服務(wù)(如:LDAP,NIS,ADS等),而它提供了一種標(biāo)準(zhǔn)的API來訪問類型不同的目錄。據(jù)說,使用完整的SDK可以開發(fā)那些JNDI還不支持的目錄服務(wù)提供者。

    ????JNDI是J2EE的一個API,提供了一套標(biāo)準(zhǔn)的接口,以定位用戶、機器、網(wǎng)絡(luò)、對象、以及服務(wù)。例如,你可以使用JNDI來定位內(nèi)部網(wǎng)中的一臺打印機,你也可以使用它來定位Java對象或連接到一個數(shù)據(jù)庫。JNDI可以用于EJB、RMI-IIOP、JDBC中。它是網(wǎng)絡(luò)查找定位的標(biāo)準(zhǔn)方法。????JNDI?API被用來訪問命名和目錄服務(wù)。它提供一個相容的模式來訪問和操作企業(yè)范圍大的資源,例如一個應(yīng)用服務(wù)器中的DNS、LDAP、本地文件系統(tǒng)或者對象。
    ?
    有了上述兩種技術(shù)的支持就可以實施分布式布署了。
    ?
    比如你有兩個服務(wù)器:
    A服務(wù)器192.168.0.1:JBOSS 4.0其上布署了EJB的業(yè)務(wù)實現(xiàn)模塊
    B服務(wù)器192.168.0.2:Tomcat 5.0 運行Jsp/JavaBean或Struts等Web頁面程序
    實驗?zāi)康模悍植际讲煌瑧?yīng)用服務(wù)器訪問EJB組件
    ?
    ?
    A服務(wù)器上對EJB的開發(fā)及布署,請參見其它相關(guān)文檔:
    ?
    a. HelloWorldBean.java //業(yè)務(wù)實現(xiàn)了getHelloWorld提供remote的方法
    ?
    package donne.study;
    public abstract class HelloWorldBean implements javax.ejb.SessionBean {
    ??? /**
    ???? * @ejb.interface-method view-type="remote"
    ???? */
    ??? public String getHelloWorld(String sMessage) {
    ??????? return "Hello World! "+sMessage;
    ??? }
    }
    ?
    EJB Classes 由lomboz自動生成的EJB接口文件
    b. HelloWorld.java
    package donne.study;
    /**
    ?* Remote interface for HelloWorld.
    ?* @generated
    ?* @lomboz generated
    ?*/
    public interface HelloWorld
    ?? extends javax.ejb.EJBObject
    {
    ?? public java.lang.String getHelloWorld( java.lang.String sMessage )
    ????? throws java.rmi.RemoteException;
    }
    ?
    c. HelloWorldHome.java
    ?
    package donne.study;
    /**
    ?* Home interface for HelloWorld.
    ?* @generated
    ?* @lomboz generated
    ?*/
    public interface HelloWorldHome
    ?? extends javax.ejb.EJBHome
    {
    ?? public static final String COMP_NAME="java:comp/env/ejb/HelloWorld";
    ?? public static final String JNDI_NAME="HelloWorld";
    ?? public donne.study.HelloWorld create()
    ????? throws javax.ejb.CreateException,java.rmi.RemoteException;
    }
    其它文件略
    ?
    B服務(wù)器上Tocamt上調(diào)用JBoss下EJB的remote接口
    1. Copy Jboss下的client目錄下的jar文件到你的測試工程的lib目錄,有些jar是不需要的根據(jù)實際情況
    ?
    2. 將上述兩個接口b、c文件生成的class文件打包成jar文件,也copy到lib下,可以看到到不管你的EJB里業(yè)務(wù)內(nèi)容如何變化這個接口的定義都不會變
    ?
    3. HelloWorldClient.java
    ?
    package donne.study;
    import java.util.Hashtable;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    ?
    public class HelloWorldClient {
    ??? private donne.study.HelloWorldHome getHome() throws NamingException {
    ??????? return (donne.study.HelloWorldHome) getContext().lookup(
    ??????????????? donne.study.HelloWorldHome.JNDI_NAME);
    ??? }
    ??? private InitialContext getContext() throws NamingException {
    ??????? Hashtable props = new Hashtable();
    ??????? props.put(InitialContext.INITIAL_CONTEXT_FACTORY,
    ??????????????? "org.jnp.interfaces.NamingContextFactory");
    ??????? props.put(InitialContext.PROVIDER_URL, "jnp://192.168.0.1:1099");
    ??????? InitialContext initialContext = new InitialContext(props);
    ??????? return initialContext;
    ??? }
    ?
    ??? public String getEJBString() {
    ??????? try {
    ??????????? donne.study.HelloWorld myBean = getHome().create();
    ??????????? return myBean.getHelloWorld("From Tomcat Jsp");
    ??????? } catch (Exception e) {
    ??????????? return e.getMessage();
    ???????????
    ??????? }
    ??? }
    }
    ?
    4. hello.jsp
    ?
    <%@ page contentType="text/html; charset=GBK"%>
    <%@ page import = "donne.study.HelloWorldClient" %>
    <HTML>
    <BODY>
    <%
    ?HelloWorldClient helloID=new HelloWorldClient();
    ?out.print(helloID.getEJBString());
    %>
    </BODY>
    </HTML>
    ?
    運行一下hello.jsp將出現(xiàn)Hello World! From Tomcat Jsp就對了

    posted on 2007-02-09 16:48 Tom 閱讀(2346) 評論(0)  編輯  收藏 所屬分類: EJB


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    <2007年2月>
    28293031123
    45678910
    11121314151617
    18192021222324
    25262728123
    45678910

    導(dǎo)航

    統(tǒng)計

    常用鏈接

    留言簿(1)

    隨筆分類(42)

    隨筆檔案(43)

    文章分類

    相冊

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 一个人看的www视频免费在线观看 一个人看的免费观看日本视频www | 亚洲天堂福利视频| 国产午夜免费秋霞影院| 亚洲欧洲自拍拍偷午夜色| 日本在线观看免费高清| 色老板亚洲视频免在线观| 亚洲AV福利天堂一区二区三| 午夜国产大片免费观看| 成人无码区免费视频观看 | 香蕉成人免费看片视频app下载| 女bbbbxxxx另类亚洲| 亚洲精品一二三区| 亚洲色偷偷av男人的天堂| 亚洲AV无码不卡无码| AV在线播放日韩亚洲欧| 日本a级片免费看| 天堂在线免费观看中文版| 亚洲精品视频免费看| 日韩免费无码一区二区三区 | 亚洲一级片免费看| 免费在线观看污网站| 国产又大又黑又粗免费视频| 日本一道高清不卡免费| 99热这里有免费国产精品| 日韩电影免费在线观看网站 | 波多野结衣免费视频观看| 日韩激情无码免费毛片| 四虎在线免费播放| 免费看的黄色大片| 国产色婷婷精品免费视频| 日本免费观看网站| 国产又大又粗又硬又长免费 | 亚洲成AV人片在WWW| 亚洲色中文字幕在线播放| 久久久国产亚洲精品| 亚洲人成网站999久久久综合| 性xxxx黑人与亚洲| 亚洲精品国产精品| 免费一级毛suv好看的国产网站| 色多多A级毛片免费看| a国产成人免费视频|