您的位置:首页 > 编程语言 > Java开发

Java中Ear、Jar、War文件之间有何不同

2013-04-27 16:13 330 查看
Ear、Jar、War文件之间有何不同?它们分别使用在哪种环境下?
  在文件结构上,三者并没有什么不同,它们都采用zip或jar档案文件压缩格式。但是它们的使用目的有所区别:

  Jar文件(扩展名为. Jar)包含Java类的普通库、资源(resources)、辅助文件(auxiliary files)等

  War文件(扩展名为.War)包含全部Web应用程序。在这种情形下,一个Web应用程序被定义为单独的一组文件、类和资源,用户可以对jar文件进行封装,并把它作为小型服务程序(servlet)来访问。

  Ear文件(扩展名为.Ear)包含全部企业应用程序。在这种情形下,一个企业应用程序被定义为多个jar文件、资源、类和Web应用程序的集合。

  每一种文件(.jar, .war, .ear)只能由应用服务器(application servers)、小型服务程序容器(servlet containers)、EJB容器(EJB containers)等进行处理。]

================================================================

以最终客户的角度来看,.jar文件就是一种封装,他们不需要知道.jar文件中有多少个.class文件,每个文件中的功能与作用,同样可以得到他们希望的结果。除jar以外对于J2EE来说还有war和ear。区别见下表:

JAR

WAR

EAR

英文 Java Archive file Web Archive file Enterprise Archive file
包含内容 class、properties文件,是文件封装的最小单元; Servlet、JSP页面、JSP标记库、JAR库文件、HTML/XML文档和其他公用资源文件,如图片、音频文件等; 除了包含JAR、WAR以外,还包括EJB组件
部署文件 application-client.xml web.xml application.xml 级别 小 中

=================================================================

这三种文件都可以看作是java的压缩格式,其实质是实现了不同的封装:

jar--封装类war--封装web站点ear--封装ejb。它们的关系具体为: jar: 是java Achieve--按java格式压缩的类包,包含内容 class、properties文件, 是文件封装的最小单元 级别:小 war: 是file web Achieve--包含Servlet、JSP页面、JSP标记库、JAR库文件HTML/XML文档和其他公用资源文件,如图片、音频文件等 级别:中 ear: 是 file
Enterprise Achieve--除了包含JAR、WAR以外,还包括EJB组件 部署文件 application-client.xml web.xml application.xml 级别:大 一个web组件开发者执行以下的任务来传递一个包含web组件的WAR文件:| 编写并编译servlet源代码| 编写jsp、html文件| 指定web的开发描述符| 邦定.class,.jsp,.html和部署描述符到一个WAR文件。 以最终客户的角度来看,.jar文件就是一种封装,他们不需要知道.jar文件中有多少个.class文件,每个文件中的功能与作用,同样可以得到他们希望的结果。除jar以外对于j2ee来说还有war和ear。ear中可以包含war,jar文件。jar文件可以将ejb包含其中。war可以将web组件包含其中。

jar表示java的标准档案文件,有一个有趣的双关语:a jar of beans(一罐豆子)。http://blog.csdn.net/smarttony/archive/2008/01/30/2072326.aspx 在文件结构上,三者并没有什么不同,它们都采用zip或jar档案文件压缩格式。但是它们的使用目的有所区别:
  Jar文件(扩展名为. Jar)包含Java类的普通库、资源(resources)、辅助文件(auxiliary files)等

  War文件(扩展名为.War)包含全部Web应用程序。在这种情形下,一个Web应用程序被定义为单独的一组文件、类和资源,用户可以对jar文件进行封装,并把它作为小型服务程序(servlet)来访问。

  Ear文件(扩展名为.Ear)包含全部企业应用程序。在这种情形下,一个企业应用程序被定义为多个jar文件、资源、类和Web应用程序的集合。

  每一种文件(.jar, .war, .ear)只能由应用服务器(application servers)、小型服务程序容器(servlet containers)、EJB容器(EJB containers)等进行处理。]

所有的包都是用jar打的,只不过目标文件的扩展名不一样。

ear包:企业级应用,通常是EJB打成ear包。 ear是J2ee的应用文件的扩展名是Enterprise Application Achiever,

是打包了的企业应用程序,里面可包含war(web Application archiever),ejb等ear包:企业级应用,通常是EJB打成ear包。

war包:是做好一个web应用后,通常是网站,打成包部署到容器中。

jar包:通常是开发时要引用通用类,打成包便于存放管理。

=============================================================

在快速启动栏中的“显示桌面”图标,有时会不小心误操作而弄丢失了,如果我们知道了“显示桌面”的图标文件是如何产生的,我们就可以非常轻松的找回来了。

在快速启动栏中的图标,可以说基本上都是快捷方式,而“显示桌面”却是源文件存放在这里,这个文件是.scf后缀的文件,可以用记事本打开,里面的内容是

Shell]

Command=2

IconFile=explorer.exe,3

[Taskbar]

Command=ToggleDesktop

所以我们只要新建一个文本文件,保存以上内容,将后缀改为.scf,存放在快速启动栏的目录下:

C:\Documents and Settings\当前用户名\Application Data\Microsoft\Internet Explorer\Quick Launch

这样就OK了

还有一个更简单的方法是:在“运行”对话框中输入“REGSVR32 /n /i:u shell32”(不含双引号),然后回车,片刻后会弹出“shell32中的DllInstall成功”对话框,“显示桌面”按钮就出现了。

最近需要做一个博客,从网上找资料的时候,无意中发现了一个war后缀的文件,竟然不知道怎么回事,汗~~~

其实war文件就是Java中web应用程序的打包。借用一个老兄的话,“当你一个web应用程序很多的时候,如果你想把它部署到别的机器上,来回拷这些文件是件挺郁闷的事情,如果要是一个文件就好了。。。那么war文件就可以满足你这个小小的要求”。

那有人会说,这和直接打成rar文件不一样吗?区别大了!

如果你直接打成rar文件,你得手动的去解压缩,但是war文件不需要,你把它放到tomcat的webapp目录下,就可以直接运行了,我觉得这个功能够强大,哈哈。

在tomcat安装目录下的conf目录下有个server.xml,搜索“unpackWARs”关键字,你会看到在<Host>标签中会有对其的设置,如果设置成true,那么tomcat在启动的时候,会在webapps目录下自动解压你那个war文件;如果设置成false,则tomcat直接访问war文件。

假如他的值是true,你的tomcat已经启动了,你把自动解压的文件夹删了,tomcat又会自动解压,我觉得它是实时的在检查,一旦没有,就会解压。

如何生成war文件呢:

1

jar -cvf blog.war *

查看war文件的方式:

1

jar -tf blog.war

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: