国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

J2EE應用部署(二):實踐篇

2019-11-18 12:31:50
字體:
來源:轉載
供稿:網友

  提綱:
  一、配置J2EE包
  1.1 企業應用的開發過程
  1.2 J2EE應用包的結構
  1.3 EAR部署描述器
  二、一個簡單的實例
  2.1 組件
  2.2 裝配應用
  2.3 部署和運行應用
  三、可選的應用部署描述器標記
  正文:
  一、配置J2EE包
  在上一篇文章中,我們了解了J2EE應用封裝和部署的一些基本知識,包括類裝載器的不同角色和行為。接下來就可以配置和部署企業應用。為此,我們必須了解創建EAR文件的過程,以及應用部署描述器的內容。
  1.1 企業應用的開發過程
  構造一個企業應用的過程可以歸納為:
  構造各個組件,包括EJB、jsp頁面、Servlet和資源適配器等。
  把這些組件打包成JAR文件格式的J2EE模塊,同時提供J2EE模塊部署描述器。J2EE模塊是一種具有相同類型的一個或者多個J2EE組件的集合,也就是說,一個EJB模塊可以包含一個以上的EJB,一個Web應用模塊可以包含多個JSP頁面和Servlet,一個資源適配器包可以包含多個資源適配器。
  結合一個或者多個J2EE模塊創建EAR文件,同時提供企業應用部署描述器,構造出J2EE應用。最簡單的J2EE應用只包含一個J2EE模塊,稍微復雜一點的J2EE應用可以由多個J2EE模塊構成,更復雜的J2EE應用可以包含多個J2EE模塊、模塊里面包含的類所用到的依靠庫。J2EE應用還可以包含描述部署過程的幫助文件和其他文檔。
  把J2EE應用部署到J2EE平臺上。安裝J2EE應用,然后把它與應用服務器提供的基礎設施整合。在J2EE應用部署過程中,每一個J2EE模塊按照該類模塊的部署要求分別部署,每一個組件被部署到適合該組件類型的合適容器。例如,假設有一個my.ear文件,它包含my.jar和my.war。部署應用時,應用服務器的部署工具將把my.ear文件拷貝到應用服務器;接著,應用服務器的部署機制將提取出my.jar和my.war模塊,按照當前平臺的類裝載要求分別部署這兩個模塊。假如這兩個模塊都部署成功,則整個J2EE應用部署成功。
  J2EE企業應用開發和部署過程可以圖示如下:
   J2EE應用部署(二):實踐篇(圖一)
  組件被封裝成J2EE模塊時帶有一個部署描述器,J2EE模塊可以通過部署工具創建。部署工具還可以用來部署和“反部署”獨立的J2EE模塊,用來把一個或者多個J2EE模塊和另外的部署描述器封裝成J2EE應用,用來把額外的內容加入J2EE應用或從J2EE應用刪除某些內容,或者把整個應用部署到應用服務器上。
  1.2 J2EE應用包的結構
  J2EE企業應用包的結構很簡單,它由一個或多個J2EE模塊以及一個META-INF/目錄下名為application.xml的部署描述器構成。文件用JAR格式打包,存儲在擴展名為.ear的文件中。EAR文件可以包含依靠庫,但這是可選的。EAR文件的一般結構是:
  EJB .jar文件 Web應用.war文件 資源適配器.rar文件 應用客戶端.jar文件 依靠庫.jar文件 META-INF/ application.xml 
  下面是一個EAR文件的例子,它包含一個EJB模塊、一個Web應用模塊,不包含依靠庫:
  MyFirstEJB.jar MyFirstWeb.war META-INF/ application.xml 
  保存在EAR文件中的J2EE模塊不一定要在根目錄之下。例如,假設一個EAR文件包含一個EJB模塊、一個資源適配器包,它的結構可以如下:
  ejbs/ MySecondEJB.jar resources/ MyLegacyAdapter.rar META-INF/ application.xml 
  最后,下面是一個包含許多組件和依靠庫的EAR文件:
  ejbs/ MyThirdEJB.jar MyFourthEJB.jar resources/ MyLegacyAdapter.rar web/ MyWebApp1.war MyWebApp2.war lib/ Myxmlx.jar Mycommon.jar META-INF/ application.xml 
  EAR文件可以用部署工具創建,或者也可以改用JDK提供的jar工具創建。創建步驟為:
  創建一個用來容納EAR文件內容的臨時目錄。
  把所有J2EE模塊放入臨時目錄,創建META-INF/目錄。
  在META-INF/目錄下創建application.xml部署描述器。
  完成上述步驟之后,進入臨時目錄,運行jar工具創建EAR文件。
  下面是一個運行jar工具的例子,它對前面例子進行打包:
  jar cvf MyApplication.ear ejbs resources web lib META-INF 
  創建好EAR文件之后,我們就可以把J2EE應用部署到應用服務器上。
  1.3 EAR部署描述器
  理想情況下,我們用圖形界面的工具編寫application.xml文件。然而,有時我們必須手工構造或維護application.xml文件,因此理解application.xml文件用到的標記很重要。
  application.xml部署描述器并不復雜,不需要很多標記就可以構造出一個合法的描述器。部署描述器的DTD定義的標記包括:
  J2EE應用部署(二):實踐篇(圖二)
  所有合法的J2EE應用描述器必須包含如下DOCTYPE聲明:
  
    1.3//EN" "http://Java.sun.com/dtd/application_1_3.dtd"> 
  
  
  配置一個簡單的application.xml部署描述器只需如下幾步:
  
  用標記聲明一個企業應用。標記可以包含、和標記,供部署工具提供有關應用的描述信息使用。這些標記的內容和EJB、Web應用、資源適配器部署描述器內的同一標記的內容相同。
  
  企業應用內的每一個模塊必須有一個相應的標記描述模塊。EJB用標記描述,Web應用用標記描述,資源適配器用標記描述,應用客戶端程序用標記描述。除了標記之外,其他標記的內容都是指定EAR文件內包含J2EE模塊的文件的相對URI,該URI必須相對于EAR文件的根。
  
  假如企業應用包含一個Web應用J2EE模塊,則必須提供一個標記和一個標記。標記是一個相對URI,指定EAR文件內包含J2EE模塊的文件。這個URI和、、標記的URI同屬一類。標記指定Web應用將在其下運行的上下文的名字。所有針對該Web應用內JSP頁面和Servlet的請求都必須加上該上下文名字作為前綴。例如,假如部署Web應用時指定了:
  web1 
  則所有對JSP頁面和Servlet的請求必須是如下形式:
  http://主機:端口/web1/......
  在EAR文件內封裝的每一個Web應用都要有一個唯一的值,任何兩個Web應用不能有相同的值。假如EAR文件只包含一個Web應用,的值可以是空字符串。
  二、一個簡單的實例
  在大多數使用EAR文件的情形中,企業應用包含一個EJB模塊、一個Web應用模塊,Web應用要用到EJB模塊里面的EJB組件。下面的例子就屬于這種情況,EJB和Web應用不需要任何依靠庫。下面我們來看看構造這個例子的具體過程。
  2.1 組件
  在這個例子中,一個Servlet在無狀態會話EJB的遠程接口上調用invoke()方法,Servlet和EJB輸出一些文字信息表明程序已經成功執行。假如控制臺出現異常報告,它很可能意味著組件封裝存在問題。本例的所有EJB源文件都屬于test包,Servlet屬于未命名的包。本例用到的java文件包括:
  MyEnterPRiseServlet.java:Servlet的實現類,執行對EJB的調用
  MyEnterprise.java:EJB的遠程接口。
  MyEnterpriseHome.java:EJB的Home接口。
  MyEnterpriseBean.java::EJB的實現類。
  MyEnterpriseBean.java的實現代碼是:
  package test;
  import javax.ejb.*;
  public class MyEnterpriseBean implements sessionBean {
  
  private InitialContext ctx;
  
  public void ejbCreate() {}
  public void ejbRemove() {}
  public void ejbActivate() {}
  public void ejbPassivate() {}
  public void setSessionContext(SessionContext c) {}
  public void invoke() {
  System.out.println("正在執行EJB.");
  }
  } 
  MyEnterpriseServlet.java Servlet的實現代碼是:
  import javax.servlet.*;
  import javax.servlet.http.*;
  import java.io.*;
  import javax.naming.*;
  
  public class MyEnterpriseServlet extends HttpServlet {
   
   public void service(HttpServletRequest req, HttpServletResponse res)
       throws IOException{
    res.setContentType("text/Html;charset=GB2312");
    PrintWriter out = res.getWriter();
  
    try {
      System.out.println("正在服務器上運行Servlet");
      InitialContext ctx = new InitialContext();
   
       test.MyEnterpriseHome eHome = (test.MyEnterpriseHome)
                 ctx.lookup("MyEnterpriseEJB");
       test.MyEnterprise e = eHome.create();
       e.invoke();
  
    } catch(Exception e) {
      out.println("異常: " + e);
      System.out.println("異常: " + e);
    }
  
    out.println("測試");
    out.println("");
    out.println("

檢查控制臺確信EJB已經被調用

");
    out.println("");
  }
  }
  編寫好EJB和相關的部署描述器(此處不列出)之后,接下來要把EJB封裝成MyEnterpriseBean.jar文件。在JNDI名稱空間配置中,EJB綁定到MyEnterpriseEJB。編寫好Servlet代碼和相關的部署描述器(此處也不列出)之后,Servlet應該封裝成MyWebApp.war文件。
  2.2 裝配應用
  構造好各個

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 婺源县| 油尖旺区| 昌江| 青海省| 星子县| 九台市| 鄂托克旗| 沂源县| 察雅县| 馆陶县| 绥化市| 吉木萨尔县| 元江| 云林县| 潼南县| 穆棱市| 延庆县| 峨眉山市| 辰溪县| 泰州市| 唐山市| 通州区| 孙吴县| 新津县| 临漳县| 义乌市| 七台河市| 威海市| 应城市| 衡东县| 北辰区| 绵竹市| 伊宁市| 响水县| 莱阳市| 西丰县| 海宁市| 涪陵区| 鄂伦春自治旗| 阿图什市| 丹凤县|