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

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

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

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

            這樣鍵入:

          http://localhost:4000/

            可以訪問到Jboss的歡迎頁面

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

            總結(jié)構(gòu):

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

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

            java文件編譯:

            [假定在系統(tǒng)環(huán)境變量的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) {}
          }

            二、創(chuàng)建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>

            三、創(chuàng)建WEB應(yīng)用

            haiejb.war:(WEB應(yīng)用)

            打包命令:[WEB應(yīng)用目錄]>: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>

            四、創(chuàng)建J2EE應(yīng)用程序

            haiejb.ear: (J2EE應(yīng)用程序)

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

            打包命令:[J2EE應(yīng)用目錄]>: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應(yīng)用:

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

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

          JBOSS_HOME\server\default\log\server.log

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

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

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

            結(jié)果:

            Hai, EJB technology!

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

          FeedBack:
          # re: 如何在jboss 4.0中調(diào)用EJB組件
          2006-12-06 12:49 | 你的寶貝
          老公,你好厲害啊! 也要注意休息 !  回復(fù)  更多評論
            
          主站蜘蛛池模板: 阿勒泰市| 双峰县| 德阳市| 通海县| 孟村| 临夏县| 东至县| 聂拉木县| 武隆县| 白沙| 五大连池市| 略阳县| 阜城县| 积石山| 贺州市| 张家口市| 法库县| 长乐市| 祁东县| 高密市| 双鸭山市| 满洲里市| 龙岩市| 五台县| 修文县| 兴宁市| 九台市| 平顺县| 赤水市| 临漳县| 宜君县| 原平市| 株洲县| 迁西县| 汝州市| 凤翔县| 隆子县| 台安县| 阿拉善左旗| 宁远县| 都匀市|