1、打包文件命名規(guī)則
根據(jù)JavaEE規(guī)范,打包的EAR文件可以不適用部署描述符部署,因此需要使用一些默認(rèn)的約定規(guī)則,例如
•EJBs and client archives are packaged as .jar files.
•Web applications are packaged as .war files.
•Resource adapters are packaged as .rar files.
•Enterprise applications are packaged as .ear files, and can contain other Java EE modules such as EJBs, JDBC, JMS, Web applications, and Resource Adapters.
•Web Services can be packaged either as .war files or as .jar files, depending on whether they are implemented using Java classes or EJBs. Typically, the .war or .jar files are then packaged in an Enterprise Application .ear file.
•Java EE libraries are packaged either as an Enterprise Application (.ear file) or as a standard Java EE module.
•Client applications and optional packages are packaged as .jar files.
2、Java EE默認(rèn)部署規(guī)則
通常EAR應(yīng)用也可以使用開(kāi)放式目錄部署,此時(shí)也應(yīng)該參考以上的規(guī)范配置相應(yīng)的文件夾,例如
war應(yīng)用目錄名必須為XX.war
EAR==>xx.ear
RAR==>XX.rar
EJB==>xx.jar
3、Java EE標(biāo)準(zhǔn)的部署規(guī)則
a. 應(yīng)用包中所有擴(kuò)展名是.war 的文件被看作是 web 模塊。Web 模塊的上下文根
的名字是相對(duì)于應(yīng)用包根的名字,但要去掉.war 擴(kuò)展名。
b. 應(yīng)用包中所有擴(kuò)展名是.rar 的文件都被看作是資源適配器。
c. 名字為 lib 的目錄被看作是庫(kù)目錄,正如在節(jié) 8.2.1“捆綁的庫(kù)”中所述。
d. 對(duì)于應(yīng)用包中所有以擴(kuò)展名是.jar 但不包含在 lib 目錄內(nèi)的文件來(lái)說(shuō),按下面 的方式來(lái)處理:
i. 如果 JAR 文件中包含帶有 Main‐Class 屬性的 META‐INF/MANINFEST.MF 文件, 或者包含 META‐INF/application‐client.xml 文件,那么這個(gè) JAR 文件被看作 是應(yīng)用客戶端模塊。
ii. 如果 JAR 文件包含 META‐INF/ejb‐jar.xml 文件,或者包含任何帶有 EJB 組件 注釋符(Stateless,等等)的類,那么這個(gè) JAR 文件被看作是 EJB 模塊。
iii. 所有其他的 JAR 文件都被忽略,除非它被上面的 JAR 文件使用 JAR 文件引 用機(jī)制(如在 mainfest 文件中的 Class‐Path 頭library-directory)引用。
在Jboss環(huán)境中,可以在application.xml中手工指定library-directory,例如:
<library-directory>APP-INF/lib</library-directory>
其他的jboss遵循標(biāo)準(zhǔn)規(guī)范
4、Weblogic的部署規(guī)則
對(duì)于weblogic使用下面的一些規(guī)則處理目錄結(jié)構(gòu):
•For an exploded archived Web application, in the absence of WEB-INF/web.xml descriptor, the name of the directory should have a .war suffix.
•For an exploded archived Enterprise Application without a META-INF/application.xml descriptor, the directory should have an .ear suffix. Within the application, the directory of exploded Web module should have a .war suffix. Similarly, the exploded EJB module should have a .jar suffix and the exploded RAR module should have a .rar suffix.
•If an exploded Enterprise Application contains no META-INF/application.xml descriptor, the order in which modules are deployed is undefined and is dependent on the underlying File.listFiles() method order. To ensure a specific order in which modules are deployed, you must add an application.xml descriptor and list the modules in the desired order.
如果在weblogic下面如果不使用上面的規(guī)則,則需要在application.xml 文件中指定對(duì)應(yīng)的uri路徑
或者在應(yīng)用模塊中使用下面的manifest路徑規(guī)則
4.1 classloader的路徑引用
在weblogic中EAR里面的所有應(yīng)用共有一個(gè)classloader,所以對(duì)于ear里面的war,通常不需要在WEB-INF里面包含lib,weblogic提供了一個(gè)默認(rèn)的目錄:
APP-INF\lib:存放jar包
APP-INF\classes:存放classes
注意對(duì)于其他的應(yīng)用服務(wù)器,可能沒(méi)有這樣的規(guī)則
5、Manifest Class-Path規(guī)則
在java EE規(guī)范中,可以使用manifest文件指定當(dāng)前的應(yīng)用模塊對(duì)與其他classpath路徑的關(guān)聯(lián)引用,該文件位于
META-INF/MANIFEST.MF
路徑下面,內(nèi)容例如下面,多個(gè)引用路徑使用空格分隔:
Manifest-Version: 1.0
Class-Path: utility.jar ../xxx/classes ../xxxlib/xxx.jar
META-INF/MANIFEST.MF
Manifest Class-Path
參考頁(yè)面:
http://docs.oracle.com/cd/E12839_01/web.1111/e13706/classloading.htm
http://docs.oracle.com/cd/E12839_01/web.1111/e13702/deployunits.htm#DEPGD142