浪跡天涯
          web報表設計器....
          posts - 61,comments - 71,trackbacks - 0
          JBoss 4.0自動集成了Tomcat 5.0,因而它不僅僅是專業的EJB容器,同時也成了專業的JSP/servlet容器和Web服務器。

            Tomcat 5.0 被集成在 jboss的下面這個目錄中:

            JBOSS_HOME\server\default\deploy\jbossweb-tomcat50.sar

            里面提供了一個server.xml和web.xml文件,可以對Tomcat進行一些基本設置。但JBOSS的設計者建議用戶甚至不要接觸這個目錄,更不用說修改和添加什么文件了,因為Tomcat與Jboss是如此緊密相連,以致于所有的設置工作都可以在Jboss自己的配置文件中完成。但是我還是發現了一個地方值得修改:修改server.xml中的端口號,比如由缺省的8080端口改為4000端口,因為我發現我的“百度下吧”軟件常常占用了8080端口,而且我本來已經有了一個Tomcat 5.0。

            這樣鍵入:

          http://localhost:4000/

            可以訪問到Jboss的歡迎頁面

            本文演示了JSP頁面如何在jboss 4.0中調用EJB組件。

            總結構:

          J2EE應用/
          |__EJB組件/(haiejb.jar)
          | |__META-INF/
          | | |__ejb-jar.xml
          | | |__jboss.xml
          | |__ejbs/
          | |__HaiHome.class
          | |__HaiClient.class
          | |__HaiBean.class
          |__WEB應用/(haiejb.war)
          | |__haiejb.jsp
          | |__WEB-INF/
          | |__web.xml
          | |__jboss-web.xml
          |__META-INF/
          |__application.xml

            一、編譯java文件為EJB類文件

            java文件編譯:

            [假定在系統環境變量的CLASSPATH中包含了javax.ejb.*包,該包可以在以下地方找:

            JBOSS_HOME\server\default\lib\jboss-j2ee.jar

            JBOSS_HOME\client\jboss-j2ee.jar]


            [java源文件目錄]>:javac -classpath %classpath% -d [輸出目錄:EJB組件目錄] *.java

          HaiHome.java:
          package ejbs;

          import java.io.Serializable;
          import java.rmi.*;
          import javax.ejb.*;

          public interface HaiHome extends EJBHome {
          HaiClient create() throws RemoteException, CreateException;
          }

            HaiClient.java:

          package ejbs;

          import javax.ejb.*;
          import java.rmi.RemoteException;
          public interface HaiClient extends EJBObject {
           public String sayHai() throws RemoteException;
          }
          haiBean.java:
          package ejbs;

          import javax.ejb.*;
          import javax.naming.*;

          public class HaiBean implements SessionBean {

           public String sayHai() {
            return "Hai, EJB technology!";
           }
           
           public void ejbCreate() throws EJBException {}
           public void ejbRemove() throws EJBException {}
           public void ejbPassivate() {}
           public void ejbActivate() {}
           public void setSessionContext(SessionContext sc) {}
          }

            二、創建EJB組件:

            haiejb.jar:(EJB組件)

            打包命令:[EJB組件目錄]>:jar cvf haiejb.jar META-INF/ ejbs/


          |__META-INF/

          | |__ejb-jar.xml

          | |__jboss.xml

          |__ejbs/

          |__HaiHome.class

          |__HaiClient.class

          |__HaiBean.class

            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>Hai EJB instance.</description>
          <display-name>Hai EJB</display-name>
          <enterprise-beans>
          <session>
          <ejb-name>HaiEJB</ejb-name>
          <home>ejbs.HaiHome</home>
          <remote>ejbs.HaiClient</remote>
          <ejb-class>ejbs.HaiBean</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"?>
          <jboss>
          <enterprise-beans>
          <session>
          <ejb-name>HaiEJB</ejb-name>
          <jndi-name>HaiEJB</jndi-name>
          </session>
          </enterprise-beans>
          </jboss>

            三、創建WEB應用

            haiejb.war:(WEB應用)

            打包命令:[WEB應用目錄]>:jar cvf haiejb.war haiejb.jsp WEB-INF/

          |__haiejb.jsp

          |__WEB-INF/

          |__web.xml

          |__jboss-web.xml

            haiejb.jsp:

          <%@ page contentType="text/html;charset=GBK" %>
          <%@ page import="ejbs.*,javax.ejb.*,javax.naming.*,javax.rmi.PortableRemoteObject,java.rmi.RemoteException" %>
          <html>
          <body>
          <% String message = "nothing!";
          try {
           InitialContext ic = new InitialContext();
           Object objRef = ic.lookup("HaiEJB");
           HaiHome home = (HaiHome) PortableRemoteObject.narrow(objRef,ejbs.HaiHome.class);
           HaiClient haiRemote = home.create();
           message = haiRemote.sayHai();
          } catch (RemoteException re) {
           re.printStackTrace();
          } catch (CreateException ce) {
           ce.printStackTrace();
          } catch (NamingException ne) {
           ne.printStackTrace();
          }
          %>
          <h1><%=message%></h1>
          </body>
          </html>

            web.xml:

          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE web-app PUBLIC ’-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN’ ’http://java.sun.com/dtd/web-app_2_3.dtd’>
          <web-app>
          <ejb-ref>
          <ejb-ref-name>HaiEJB</ejb-ref-name>
          <ejb-ref-type>Session</ejb-ref-type>
          <home>ejbs.HaiHome</home>
          <remote>ejbs.HaiClient</remote>
          </ejb-ref>
          </web-app>

            jboss-web.xml:

          <?xml version="1.0" encoding="UTF-8"?>
          <jboss-web>
          <ejb-ref>
          <ejb-ref-name>HaiEJB</ejb-ref-name>
          <jndi-name>HaiEJB</jndi-name>
          </ejb-ref>
          </jboss-web>

            四、創建J2EE應用程序

            haiejb.ear: (J2EE應用程序)

            把上面創建的haiejb.jar和haiejb.war包拷貝到你創建的J2EE應用主目錄,新建一個META-INF目錄并在里面創建application.xml文件:

            打包命令:[J2EE應用目錄]>:jar cvf haiejb.ear haiejb.jar haiejb.war META-INF/

          |__haiejb.jar

          |__haiejb.war

          |__META-INF/

          |__application.xml

            application.xml:

          <?xml version="1.0" encoding="UTF-8"?>
          <application>
          <display-name>HaiEJB J2EE Application</display-name>
          <module>
          <web>
          <web-uri>haiejb.war</web-uri>
          <context-root>/haiejb</context-root>
          </web>
          </module>
          <module>
          <ejb>haiejb.jar</ejb>
          </module>
          </application>

            五、部署J2EE應用:

            把haiejb.ear拷貝到JBOSS_HOME\server\default\deploy\

            啟動jboss 4.0,注意命令行窗口中有無異常,如果有異常情況,請查看log文件:

          JBOSS_HOME\server\default\log\server.log

            從中查找分析問題所在,然后改正之,直到無異常顯示

            最后在瀏覽器地址欄中鍵入:

          http://localhost:8080/haiejb/haiejb.jsp

            結果:

            Hai, EJB technology!

            祝好運!
          posted on 2006-08-16 23:02 JJCEA 閱讀(651) 評論(1)  編輯  收藏 所屬分類: 學習日記

          FeedBack:
          # re: 如何在jboss 4.0中調用EJB組件
          2006-12-06 12:49 | 你的寶貝
          老公,你好厲害啊! 也要注意休息 !  回復  更多評論
            
          主站蜘蛛池模板: 开封县| 旺苍县| 惠水县| 福泉市| 新邵县| 石棉县| 宁安市| 茶陵县| 吴桥县| 敖汉旗| 承德县| 二连浩特市| 阿鲁科尔沁旗| 札达县| 灵武市| 达州市| 桃江县| 通化县| 介休市| 石柱| 册亨县| 项城市| 稷山县| 白银市| 海晏县| 恩施市| 海伦市| 普安县| 德化县| 酒泉市| 虎林市| 马龙县| 广灵县| 泌阳县| 叙永县| 津南区| 娄烦县| 昭苏县| 米脂县| 保山市| 镇康县|