|
|
楼主 |
发表于 2018-10-23 16:56:19
|
显示全部楼层
以最终客户的角度来看,JAR文件就是一种封装,他们不需要知道jar文件中有多少个.class文件,每个文件中的功能与作用,同样可以得到他们希望的结果。除jar以外对于J2EE来说还有war和ear。区别见下表:6 B# I7 C# R- Z# c* D% a' U5 L, Z
6 T7 X5 {- |0 H3 S |( i6 ~
8 Y9 j" X- _" k# E% L
6 e# {: Z1 r8 K$ h7 N7 A3 C# i( ~6 g
JAR WAR EAR
3 t# H2 u K! \# H9 a! E1 Z: u英文 Java Archive file Web Archive file Enterprise Archive file( d3 b3 n1 o" L# y9 A
包含内容 class、properties文件,是文件封装的最小单元;包含Java类的普通库、资源(resources)、辅助文件(auxiliary files)等 Servlet、JSP页面、JSP标记库、JAR库文件、HTML/XML文档和其他公用资源文件,如图片、音频文件等 除了包含JAR、WAR以外,还包括EJB组件
& [# U! l. E. G1 \9 R( c0 ]部署文件 application-client.xml web.xml application.xml
/ w3 Y& c9 P; P+ A. h容器 应用服务器(application servers) 小型服务程序容器(servlet containers) EJB容器(EJB containers)7 S, n- y0 l' @' E
级别 小 中 大$ j2 H+ n }( u8 H: k
" h7 |$ `: A' y5 e* k
. a' P- v) s# b' K- C$ ?3 R7 i(1)EAR文件的打包& d' }7 }( P8 u) e/ O# M
: B% T4 f l. t- c9 \$ ~" J1 g/ i* KEAR文件包括整个项目,内含多个 EJB Module(JAR文件)和 Web Module(WAR文件)。3 |: }; i8 F4 Q1 C% Z- B
" {5 o4 M# u: n! W, l
EAR文件的生成可以使用winrar以zip压缩方式或者从命令行以jar命令来生成。
) ?/ ]. n- ^% Q; P8 D1 W& N8 @" p0 _) Z! H5 s( q
步骤:+ |% V) F5 `+ K0 b
/ ]/ ]6 Y( ~/ o0 J4 o1>、先打包成war和jar,并写好application.xml,放到 META-INF 目录下。
3 ~* h; X8 a, q2 b# s: l+ @0 A! Q5 ^! d0 A5 Q$ d( n3 Y7 g; m4 b! K
2>、运行 jar cf your_application.ear your_war.war your_jar.jar META-INF\application.xml (假设都在当前目录下)。
6 j* S, S% ^% r/ D8 ]8 t$ A
8 p+ {8 [$ f+ X i- s2 u当然也可以用jar xf your_application.ear来解压。% f+ b' j O5 }4 o
/ t. L9 E3 R# T5 T* K5 k2 K6 v
application.xml是用来描述你的ear中包括的war和jar2 K8 `, V9 n+ m ^% L% @
/ l* g; f6 J" Xweblogic自带的petstore的application.xml例子:- A* A$ ~: o0 i7 q( X S* A# `
+ o( |0 k5 w( F' h, W; @复制代码代码如下:
# U7 p7 T/ `# s* P$ h8 a4 @5 T; x" [0 ]+ i" B1 l. y3 g
<!DOCTYPE application PUBLIC '-//Sun Microsystems, Inc.//DTD J2EE Application 1.2//EN' 'http://java.sun.com/j2ee/dtds/application_1_2.dtd'>
+ f* n# o7 L1 M <application>
; a% ^1 [% \3 [ <display-name>estore</display-name>
: {6 W! \( Z8 Q9 }3 h9 _+ M <description>Application description</description> 4 J2 B; O# N7 z* |7 R% N* T9 r& N
<module>
( I9 S* |' U: z+ t2 w- ` <ejb>customerEjb.jar</ejb>
1 R& ~" I" F0 Y; e </module> ; R; p4 H7 a# Z% x" m0 |! M7 N
<module>
3 }1 j5 P/ v8 d. S3 |5 W( [ <ejb>mailerEjb.jar</ejb> 1 `. _9 D) E/ N6 A# N- q$ R
</module>
0 }" h( h k4 H5 o. g <module> 0 w7 s2 W: u7 m- {6 O, s
<web>
; N I1 H8 y* W4 j <web-uri>petstore.war</web-uri>
2 s5 g$ ?' A9 A) V5 ^( | <context-root>estore</context-root>
- P, E6 }+ W3 |& Q# p' z </web> ! {' f, e4 U6 b; \4 e' x; J
</module>
) S% e! b9 X/ Y <module> 9 j" n! Y" e1 _9 u2 K4 m
<ejb>petstoreEjb.jar</ejb>
/ c/ x6 N- V# M0 g: m </module>
6 ?5 J) y1 a: Z. |5 y! ?$ A <module>
& G- N' P. g0 g# U0 C9 L4 z <ejb>signonEjb.jar</ejb>
! z) K8 u0 l4 L- h </module>
' U8 }& f. }; K* J7 ` <module> 0 Y" T! R" m' i- g2 p
<ejb>personalizationEjb.jar</ejb>
1 |; @4 c0 L) G0 x3 g4 a; Y4 G* y </module>
- B7 C. B4 b5 V <module>
( D0 w% \. l, k$ i/ \' x. U9 }" W) a* C <ejb>inventoryEjb.jar</ejb>
9 y8 K+ K8 k" H- p* @ </module>
( Y+ H" \0 P8 N- m/ R2 c4 C <module>
0 g1 a: D9 E0 ~ <ejb>shoppingcartEjb.jar</ejb>
" U, L# u0 V) u; C# {& F </module>
% c2 q' Z9 R7 K- T) @4 a <security-role> ( \: m; N7 J: ^7 v
<description>the gold customer role</description>
# E1 G! C5 b" x: {) _, Y, |7 z <role-name>gold_customer</role-name> ; a! b+ S; ]( q; t- \
</security-role>
. G, v+ j9 G0 r' ^ <security-role>
, m2 ?+ k" M5 f+ k <description>the customer role</description>
0 D+ B$ M8 W; \( D. \- c <role-name>customer</role-name>
, [: W) N+ ]4 C8 ]& w3 `; A </security-role>
) s0 i! o5 o7 R7 j' z6 o9 W <security-role> 8 K ^( X* Y/ W4 d# w/ b q" [" C
<role-name>administrator</role-name>
6 R3 d k& ^7 z/ d </security-role>
/ {) w- s) k& e) g </application>
- [+ Q5 ^- [7 V7 e3 B
4 L7 {, j# W2 Z7 O/ z7 t2 v(2)WAR的使用9 c! `1 K1 |5 D' ^
1>、生成war文件使用如下命令:jar -cvf web1.war *
' l6 f& A7 i% m# K2>、查看web1.war中都有哪些文件,可以使用命令:jar -tf web1.war: f* r1 r6 f! W0 p- n6 B
3>、解压web1.war文件,可以使用命令:jar -xvf web1.war
8 A' N9 ^; [6 L1 ~" F L. S" i) o8 W1 T
另外,也可使用winrar软件选择zip压缩方式,并将压缩文件后缀名改为war即可压缩生成war文件;同样使用winrar软件可以强行打开war 文件,或者强行解压war文件
1 V# j6 R) }; b4 A8 R% t0 i7 T8 H2 n6 j# C% u
使用jar命令与winrar软件的区别在于前者在压缩文件的同时会生成 META-INF 文件夹,内包含MANIFEST.MF文件。! a1 S1 i5 V) u3 W1 P
3 A8 L: t+ W) b5 |
(3)何时使用war或者jar文件
$ H0 f+ S4 ]1 U$ ^8 l$ k7 W
* l7 L+ k) _( Z1 y0 A( ?0 Z当你的项目在没有完全竣工的时候,不适合使用war文件,因为你的类会由于调试之类的经常改,这样来回删除、创建war文件很不爽,最好是你的项目已经完成了,不改了,那么就打个war包吧,这个时候一个war文件就相当于一个web应用程序;而jar文件就是把类和一些相关的资源封装到一个包中,便于程序中引用。- G. U* o- u% s% X0 b# x
* u3 }8 W% D3 s7 B8 i+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
b/ x% H1 [( ^' _' h
3 y; {9 ~4 O6 B0 |Java的打包jar、war、ear包的作用、区别、打包方式:5 D/ G; B S& k! C3 E5 h- `' \& u& f1 B! v
: N8 ]8 P2 F# a# m- b1、 作用与区别# j: |! a2 k9 m, J
, ~8 y" G% W0 i/ O% ~( K2 n
i. jar:通常是开发时要引用通用(JAVA)类,打成包便于存放管理;
# L1 u! C6 Q7 P# J6 n. a: L5 L: d5 R( v4 z! d) Z( c
ii. war:是做好一个(web)应用后,通常是网站,打成包部署到容器中;
8 n; j* }$ C8 Q2 @& F3 k2 A% g& I" r, D
, {) D/ D. I) Oiii. ear: 企业级应用,实际上EAR包中包含WAR包和几个企业级项目的配置文件而已,一般服务器选择WebSphere等,都会使用EAR包。通常是EJB打成ear包。
( o# E, S4 y2 b) v6 A" T* p# k$ E9 z0 w# ]+ @( X
2、打包方式
; ?$ t4 M1 Q- X- I1 p u
: n' R" d- x! ?& V7 C di. 所有的包都是用jar打的,只不过目标文件的扩展名不一样;3 B6 F" Z& i& @: K
! f8 J! ?8 z% e+ x, Lii. 也可以用Ant来安成构建。
; d6 X2 y ~! a \( {, ?% x* V K: ?5 K/ d1 K& A
3、JET编译成EXE
; c+ h* c- }; S! s* q3 k3 q
: |9 r, A/ e8 Z' ^5 ]i. JET 是要用钱买的,而且据说 JET 也不是能把所有的 Java 程序都编译成执行文件,性能也要打些折扣。所以,使用制作可执行 JAR 文件包的方法就是最佳选择了,何况它还能保持 Java 的跨平台特性。
. K6 n$ s0 g% v6 P7 C4 V' Q8 C- A/ ]# n0 }4 Q
注意:
" X- U5 e. ^9 z) P ]$ {3 r1 U' y( d9 |. u8 M- r0 w4 Y
将web项目以war的方式导出后,直接放在tomcat容器的webapps下 ,启动服务,即可运行该项目,该war包会自动解压出一个同名的文件夹。 |
|