風雨無阻

          (轉)jboss部署ejb

          開發sessionbean EJB最少也需要三個class,remote interface,home interface,and bean implementation(bean行為).

          1. remote interface 用來揭示EJB對外的一些方法.

          package helloWorld; import javax.ejb.EJBObject;
          import java.rmi.RemoteException;
          public interface RemoteHello extends EJBObject
          { public String HelloEcho(String inputString) throws RemoteException; }
          2.home interface 是用來規定怎樣創建一個實現remote interface的bean.
          package helloWorld;
          import java.io.Serializable;
          import java.rmi.RemoteException;
          import javax.ejb.CreateException;
          import javax.ejb.EJBHome;
          public interface HomeHello extends EJBHome

          { RemoteHello create() throws RemoteException, CreateException; }

          3.bean implementation 是提供方法的實現,這些方法在上述兩種interface中都有規定了.

          package helloWorld;

          import java.rmi.RemoteException;

          import javax.ejb.SessionBean;

          import javax.ejb.SessionContext;

          public class HelloBean implements SessionBean{

             public String HelloEcho(String inputString) {

               System.out.println("Someone called 'Hello Echo Successed!'");

               return "*********" + inputString + "*********"; }

               /** Empty method body  */

               public void ejbCreate() {

                  System.out.println("Ejb 4 is creating!...");}

               /** Every ejbCreate() method ALWAYS needs a corresponding   ejbPostCreate () method with exactly the same parameter types.   */

          public void ejbPostCreate() {}

          /** Empty method body   */

          public void ejbRemove() {

              System.out.println("Ejb 4 is removing!...");}

           /** Empty method body */

          public void ejbActivate() {

             System.out.println("Ejb 4 is activating!...");}

          /** Empty method body */

          public void ejbPassivate()

           {}

          /** Empty method body   */

          public void setSessionContext(SessionContext sc)

           {}

          }

          部署jar

          這些classes必須打包進一個JAR文件中,JAR文件中包含了目錄結構和包的層次.在本例中, 這些classes是在包helloworld,這樣他們需要在目錄helloWorld/ 下.

          部署發布描述器ejb-jar.XML和jboss.xml
          在JAR文檔創建之前,還需要一個叫META-INF的目錄,這是存放部署發布描述器的(一般叫ejb-jar.xml).

          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD EntERPrise JavaBeans 2.0//EN" "
          http://java.sun.com/dtd/ejb-jar_2_0.dtd">
          <ejb-jar>
           <description>Neosue Helloworld Sample Application</description>
           <display-name>Helloworld EJB</display-name>
           <enterprise-beans>
            <session>
             <ejb-name>Helloworld</ejb-name>
             <!-- home interface -->
             <home>helloWorld.HomeHello</home>
             <!-- remote interface -->
             <remote>helloWorld.RemoteHello</remote>
             <!-- bean implementation -->
             <ejb-class>helloWorld.HelloBean</ejb-class>
             <session-type>Stateless</session-type>
             <transaction-type>Bean</transaction-type>
            </session>
           </enterprise-beans>
          </ejb-jar>

          jboss.xml

          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 4.0//EN" "
          http://www.jboss.org/j2ee/dtd/jboss_4_0.dtd">
          <jboss>
           <enterprise-beans>
            <session>
             <ejb-name>Helloworld</ejb-name>
             <jndi-name>Helloworld/Hello</jndi-name>
            </session>
           </enterprise-beans>
          </jboss>
          雖然有了上面你的應用程序和JNDI name的梆定,但是一旦部署發布到JBoss服務器上,你還需要一個jndi.properties文件,以告訴調用你程序的客戶端請求到哪里去初始化JNDI naming service.

          測試程序:

          import javax.naming.Context;

          import javax.naming.InitialContext;

          import javax.rmi.PortableRemoteObject;

          import helloWorld.*;

          public class MyTest {

             public static void main(String[] args) {

                try{ Context ctx=new InitialContext();

                     Object ref=ctx.lookup("Helloworld/Hello");

                     HomeHello home=(HomeHello)PortableRemoteObject.narrow(ref,HomeHello.class);

                     RemoteHello user=home.create(); System.out.println(user.HelloEcho("So easy!"));

                  }catch(Exception e) {

                    e.printStackTrace();

                  }

             }

          }

          Jboss EJB 部署步驟 建立 remote interface-->home interface-->and bean implementation--> ejb-jar.xml-->jboss.xml--打包(package[jar cvf packageName.jar .])-->復制到jboss deploy目錄.

          ---------------------------------------------------------
          原文 URL
          http://blog.blogchina.com/refer.159508.html
          ---------------------------------------------------------
          補充說明如下:

          OS: windows 2000;
          JDK: 1.5.0rc;
          JBoss: 4.0

          HelloWorld.jar
          |--META-INF
          |      |--jboss.xml
          |      |--ejb-jar.xml
          |      |--MANIFEST.MF (自動生成)
          |--helloWorld
                 |--RemoteHello.class
                 |--jndi.properties
                 |--HomeHello.class
                 |--HelloBean.class


          其中 測試文件 MyTest.class 同目錄拷貝一份 jndi.properties 文件過來.

          jndi.properties 的內容如下:

          java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
          java.naming.provider.url=localhost:1099
          java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces

          posted on 2008-03-30 19:38 秋楓故事 閱讀(1054) 評論(0)  編輯  收藏


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


          網站導航:
           
          <2008年3月>
          2425262728291
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          導航

          統計

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          新聞檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 怀安县| 广德县| 西青区| 临武县| 呼和浩特市| 固镇县| 麻江县| 永春县| 定结县| 大埔县| 江西省| 龙口市| 镇赉县| 微博| 平塘县| 湖南省| 山东省| 乌兰浩特市| 大英县| 彭泽县| 昔阳县| 昂仁县| 南汇区| 平武县| 商南县| 沐川县| 荥阳市| 安宁市| 长宁区| 弥渡县| 苏尼特右旗| 姚安县| 固阳县| 封丘县| 健康| 襄垣县| 宁阳县| 安顺市| 介休市| 彩票| 陇南市|