|
|
楼主 |
发表于 2018-10-23 16:56:19
|
显示全部楼层
以最终客户的角度来看,JAR文件就是一种封装,他们不需要知道jar文件中有多少个.class文件,每个文件中的功能与作用,同样可以得到他们希望的结果。除jar以外对于J2EE来说还有war和ear。区别见下表:
8 k. w6 c" Q: R" L. c) h
; F% ~* \* K: A4 H3 Q. j u2 x 9 }, x4 U8 u6 t. ^
1 W# \) O8 s) K JAR WAR EAR
3 _ T: N8 B) B8 G/ }: u英文 Java Archive file Web Archive file Enterprise Archive file! J) _ \: N# R9 l0 e$ o
包含内容 class、properties文件,是文件封装的最小单元;包含Java类的普通库、资源(resources)、辅助文件(auxiliary files)等 Servlet、JSP页面、JSP标记库、JAR库文件、HTML/XML文档和其他公用资源文件,如图片、音频文件等 除了包含JAR、WAR以外,还包括EJB组件# \1 f: F/ b" L1 Z
部署文件 application-client.xml web.xml application.xml
2 X8 m6 P; ?' ~+ Z5 x容器 应用服务器(application servers) 小型服务程序容器(servlet containers) EJB容器(EJB containers) ? @* v4 o0 ^
级别 小 中 大
6 X$ H5 x) n9 N5 v2 y
8 J7 M9 C4 r# v2 Q! [, J; C- Q) p0 i- l0 S' Q
(1)EAR文件的打包
" ?* g U7 v5 } V; ?& G7 J4 t# b
, G/ ~; d0 D/ j2 F' }" jEAR文件包括整个项目,内含多个 EJB Module(JAR文件)和 Web Module(WAR文件)。1 ]" y4 \5 C0 C
8 Q M( Z4 }2 B3 p( a/ EEAR文件的生成可以使用winrar以zip压缩方式或者从命令行以jar命令来生成。9 h9 g. O1 q7 y! \0 m, p
6 p! q5 F$ }4 L- X V
步骤:+ L: E' Y- Q! A$ Z7 q! r$ a( c
; a$ h0 ]0 V7 Z2 t
1>、先打包成war和jar,并写好application.xml,放到 META-INF 目录下。6 e/ W; b/ E/ t$ o: Z* H# F" @
. K- ?/ P# Y. I& c
2>、运行 jar cf your_application.ear your_war.war your_jar.jar META-INF\application.xml (假设都在当前目录下)。
- [1 e6 u3 @9 e! Y$ i" O1 z$ J# h5 `' `2 A
当然也可以用jar xf your_application.ear来解压。( a! i9 m {/ a K( E7 @2 V, |
n3 o/ j" C Z0 Q! papplication.xml是用来描述你的ear中包括的war和jar6 X4 f( y, f! m: m9 C# l8 J
; E$ B7 S3 x8 j- E& Dweblogic自带的petstore的application.xml例子:( M' k1 ~9 y5 F+ A9 X
`1 ?) ]3 R4 l% _* D复制代码代码如下:1 k9 ^: R2 k: B, C. ~% a: n9 I% W
" O" O. h4 U" B; \<!DOCTYPE application PUBLIC '-//Sun Microsystems, Inc.//DTD J2EE Application 1.2//EN' 'http://java.sun.com/j2ee/dtds/application_1_2.dtd'>
% _$ A5 N4 w5 [# X L$ X <application> 1 `6 b. t9 w$ h" g- c: K! S5 q
<display-name>estore</display-name>
! _' X7 A/ u* z" f5 N) r' j <description>Application description</description> 1 a6 V) c3 F* l
<module> ' }% S/ H. @# _: |9 z
<ejb>customerEjb.jar</ejb>
" S1 Y* @( y1 g( R </module>
# i* F) d" k1 R4 E <module> # w% t+ g' L) P- y" n
<ejb>mailerEjb.jar</ejb> ) J6 i7 A: k$ L& [$ Y4 M
</module> ) U# |: f! S& `3 z. j \0 C
<module>
, S6 N% ? d/ K7 h! \! J% e3 l8 t <web> 4 y& a0 T0 t6 x6 `& G2 B: t( d
<web-uri>petstore.war</web-uri> ! x- z) P! c5 Q) P R
<context-root>estore</context-root>
' Y9 S, R" ?+ N </web>
% p& o+ C6 r0 r( K& j( O/ { </module>
- T9 W7 a% f5 q, q A; H5 a <module> 0 }+ _. }' g8 o3 {& R* a
<ejb>petstoreEjb.jar</ejb>
3 Y6 Q- M% y: {- k& D </module>
; s) [4 z% _; {$ ~/ D( V: i <module>
. T0 y( U. x# a* p <ejb>signonEjb.jar</ejb>
' E1 W$ o. a$ K) o- T [, L$ j" u </module>
: W& l. p, m) R7 j! `9 k <module>
/ I; Y6 [6 E5 l8 X! t; ]0 c3 N4 U <ejb>personalizationEjb.jar</ejb>
* [: A# A) O5 N' I0 _6 g </module>
/ Q8 \1 R+ s' R$ T* N <module> ! E% P, _% U/ Z; M/ t) ^8 f# W9 G
<ejb>inventoryEjb.jar</ejb> i# a [ m$ L0 Z8 t$ S8 ?( ]& C
</module>
9 Q: y: A V( o! m3 X' l& R <module> ( c0 h& D0 Y7 P" V9 Y3 {/ ]
<ejb>shoppingcartEjb.jar</ejb> # J# O x+ a9 F& D7 L: I
</module> $ Z0 @0 _# \1 X. j$ G. @5 W
<security-role>
' P4 H. b/ R3 @) O/ _ <description>the gold customer role</description>
9 \+ G% F2 k4 V! P <role-name>gold_customer</role-name>
6 }2 g( Y g$ M </security-role> 7 S" p S& d: W0 V2 n( a# ~
<security-role> * x/ P" `" N" O$ f* y$ S7 g
<description>the customer role</description>
' U* K) U/ c! @" T: M* v, p <role-name>customer</role-name>
0 C( c) q" w# t7 h8 ~ </security-role> , [( B4 X& q3 s) R9 C7 q3 w
<security-role>
, B+ o# R$ S Q2 ?. m8 T <role-name>administrator</role-name> 7 B R" J( o% E! |2 Q3 b9 _7 c0 p
</security-role>
: W" \8 O6 U. j6 s </application>
1 r+ f, t: U' _4 \1 h4 h5 z; e; ?$ D% j6 M# e6 {
(2)WAR的使用
2 y% P! k( V7 S$ p3 p1>、生成war文件使用如下命令:jar -cvf web1.war *
& |# b( t: i: x- V9 s3 p) Y0 y2>、查看web1.war中都有哪些文件,可以使用命令:jar -tf web1.war; E3 i: p$ R$ L) L& M6 n8 D
3>、解压web1.war文件,可以使用命令:jar -xvf web1.war
, ^. o+ \0 w" ~! e
g% m1 D; v1 ~( t另外,也可使用winrar软件选择zip压缩方式,并将压缩文件后缀名改为war即可压缩生成war文件;同样使用winrar软件可以强行打开war 文件,或者强行解压war文件
9 S) T$ c, w" [# M
' y6 q4 p+ N- K; k* Z1 a& Q使用jar命令与winrar软件的区别在于前者在压缩文件的同时会生成 META-INF 文件夹,内包含MANIFEST.MF文件。2 |& B1 m9 u$ B
& c% l5 [4 g" f: U4 A. U2 M(3)何时使用war或者jar文件/ y+ b9 i* v) r' P& O& H# F9 o2 G
! U& @5 e( f( U# M9 b
当你的项目在没有完全竣工的时候,不适合使用war文件,因为你的类会由于调试之类的经常改,这样来回删除、创建war文件很不爽,最好是你的项目已经完成了,不改了,那么就打个war包吧,这个时候一个war文件就相当于一个web应用程序;而jar文件就是把类和一些相关的资源封装到一个包中,便于程序中引用。1 b. \) X) Z' C H% K% w! @. F E
, `* P6 |: u* ]; G' U7 m* y3 q
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- S4 _. V7 `, M9 J
/ b, e( e+ }! h& o( v8 d. ~; p
Java的打包jar、war、ear包的作用、区别、打包方式:: P1 [" i0 x% o; p4 K) @+ e6 A O
; _1 u& W% l* I( u& u1、 作用与区别
! ~' I( k+ R8 y3 u
& C4 k, L2 C, K9 O" D1 ei. jar:通常是开发时要引用通用(JAVA)类,打成包便于存放管理;
, L2 H( _- t7 o5 ~
0 \( S! D( j9 z5 eii. war:是做好一个(web)应用后,通常是网站,打成包部署到容器中;# H) W5 Q7 ~7 q9 ]! J7 P! v
0 Q4 t& o5 ~6 V4 h* P$ P) N8 Niii. ear: 企业级应用,实际上EAR包中包含WAR包和几个企业级项目的配置文件而已,一般服务器选择WebSphere等,都会使用EAR包。通常是EJB打成ear包。9 D1 g K5 O7 M+ T: n
, R5 L1 O5 u- J' S* n5 P2、打包方式; c3 O4 e8 W4 A1 x5 E" @4 N
8 R+ m- E7 V8 Hi. 所有的包都是用jar打的,只不过目标文件的扩展名不一样;
; F9 n4 ?1 b% M; r2 Y
2 U, N/ T) `6 S2 @) f$ C: p; X9 cii. 也可以用Ant来安成构建。% k$ d6 n1 z) I5 _$ q3 H' k( D
0 h2 @! v. h6 P
3、JET编译成EXE
% j2 X8 r% X# n4 c1 w+ |8 S/ ?2 k) s& m8 o9 O D
i. JET 是要用钱买的,而且据说 JET 也不是能把所有的 Java 程序都编译成执行文件,性能也要打些折扣。所以,使用制作可执行 JAR 文件包的方法就是最佳选择了,何况它还能保持 Java 的跨平台特性。
# G J- Y+ G2 R' [3 p/ R
H* L1 s. w4 g8 O) X2 x. u/ i) [1 @注意:) {! U: C: m: I/ v0 T3 t, w
% }# q1 Q( y* g将web项目以war的方式导出后,直接放在tomcat容器的webapps下 ,启动服务,即可运行该项目,该war包会自动解压出一个同名的文件夹。 |
|