追隨Java
          簡單的事情重復做,就會產生累積效應!
          posts - 260,  comments - 338,  trackbacks - 0
           也不記得是什么時候下載的一個開發ejb的例子,也沒有看實踐過。現在有點時候把它實踐一下,還真爽,布置成功。
              我也把那個例子轉載一下,希望能對新手有一定的啟發。
                                                                          jboss 4.0 JSP調用EJB的簡單例子

          jboss 4.0自動集成了Tomcat 5.0,因而它不僅僅是專業的EJB容器,同時也成了專業的JSP/servlet容器和Web服務器。

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

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

          里面提供了一個server.xmlweb.xml文件,可以對Tomcat進行一些基本設置。但JBOSS的設計者建議用戶甚至不要接觸這個目錄,更不用說修改和添加什么文件了,因為TomcatJboss是如此緊密相連,以致于所有的設置工作都可以在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.jarhaiejb.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 2005-10-07 16:08 Harryson 閱讀(3803) 評論(3)  編輯  收藏 所屬分類: EJBJboss

          FeedBack:
          # re: 手動部署EJB,親自體驗EJB開發流程
          2007-10-26 17:52 | xie
          太感謝你了!  回復  更多評論
            
          # re: 手動部署EJB,親自體驗EJB開發流程
          2007-10-26 17:54 | xie
          我配置EJB, 不知道配了幾次! 也不知道看了幾篇文章了!
          只有你這篇,讓我真正的配成功了!  回復  更多評論
            
          # re: 手動部署EJB,親自體驗EJB開發流程
          2007-10-26 17:54 | xie
          再謝一次!  回復  更多評論
            

          <2005年10月>
          2526272829301
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          常用鏈接

          留言簿(10)

          隨筆分類(319)

          AJAX

          Coffee House

          CSS

          Java

          JavaScript

          Open Source

          ProjectManagement

          友情Blog

          最新隨筆

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 桑日县| 安吉县| 武宁县| 乐清市| 临湘市| 阿城市| 松滋市| 闽清县| 封开县| 黔江区| 高要市| 嘉兴市| 河西区| 尼木县| 澄迈县| 瑞昌市| 柘城县| 广西| 万盛区| 高淳县| 璧山县| 辛集市| 湛江市| 安远县| 淳化县| 将乐县| 桑植县| 孟连| 宁海县| 民权县| 宣恩县| 曲麻莱县| 阜新市| 登封市| 高密市| 合川市| 台山市| 高淳县| 循化| 咸宁市| 江西省|