Java for Web学习笔记(二):Web Containers

一个Java EE web app运行在Java EE application server和web container中。每个EE app server都含有一个web container,用于管理servlet的生命周期,映射request URL到servlet的代码,接收和响应HTTP请求,管理filter链。如果我们不需要整个Java EE的功能,单独的web container可以提供轻载的解决方案。

Web容器和完全Java EE Web Server

Apache Tomcat是一个轻载的web container,可以通过集群方式来处理大流量,但它不是一个完整的application server,缺乏很多Java EE组件,例如Java Persistence API,Bean Validation API和Java Message Service。不过,通常都已经足够使用了,我们现在创建的并不是什么企业内部应用,一般是对外提供web服务。那些企业内部应用,通常都依赖于IE控件,很是讨厌。另一个更重要的一个选择原因就是很流行,容易使用。如果要使用全功能,可以用Apache TomEE或者Apache提供的另一个个开源项目Geronimo,这两个都是经过Oracle认证的Java EE 应用服务器,对Java EE规范全兼容。

GlassFish是一个开源和商用的全Java EE应用服务器,包括一个web container,是从tomcat中衍生的分支产品,现在代码已是面目全非了。GlassFish提供很好的管理界面,强大和部署便捷的集群能力,它总是新版EE推出后最早支持的server。有免费版和商业版。

JBoss是Red Hat的JavaBeans Open Source Software Application Server(JBoss AS),是第二流行的EE server,第一是Tomcat。它是一个完整的Java EE应用服务器。在2014年,改名为WildFly。有开源社区的年费版和Rad Hat的商业版。

其他的web containers有Jetty,Tiny。开源的全EE server的开源版有JOnAs,Resin,Caucho,Enhydra;商业版有Oracle WebLogic和IBM WebSphere。

Tomcat

开发环境中我们一般采用命令行,而非服务的方式。命令行也方便IDE(例如Eclipse)进行调测。先不考虑IDE的debug环境,首先应配置部署的用户。

在conf/tomcat-user.xml中,增加用户,以便进入Tomcat Web Application Manager管理界面,例子如下。当然这样用户名和密码不应该出现在生产环境,开发环境就无所谓了。

<user username="admin" password="admin" roles="manager-gui,admin-gui" />

缺省的Tomcat 8.0编译JavaServer Pages文件使用Java SE 6语言(有些是1.7版本。我们在web.xml中可以查看到,检索compilerSourceVM,可能会查到Compiler source VM. [1.7],这说明缺省是1.7),即便我们运行在Java SE 8,也将使用缺省版本进行编译。因此最好在conf/web.xml中,检索org.apache.jasper.servlet.JspServlet,增加下面的内容:

<init-param>
        <param-name>compilerSourceVM</param-name>
        <param-value>1.8</param-value>
    </init-param>
    <init-param>
        <param-name>compilerTargetVM</param-name>
        <param-value>1.8</param-value>
    </init-param>

如果是Windows,我们直接运行Tomcat 8 ,我们会发现运行的VM为1.7(可以在管理界面的Server Status中查看),这个是缺省设置,即便我们安装了1.8也是如此。

当然,我们可以通过startup来启动,就可以使用JAVA_HOME或者JRE_HOME所指定jdk的版本,或者在startup里面人工增加 set JRE_HOME=C:\Program Files\Java\jdk1.8.0_66\来指定。或者写在windows在conf/setenv.bat,Linux中conf/setenv.sh。但是要注意,如果通过tomcat来使用Eclipse,tomcat会覆盖着个文件。

人工在Tomcat中部署和卸装应用

tomcat支持war文件,我们只需要将该文件copy至webapps/目录下,tomcat会自动解压和加载。相反,如果将war文件删除,tomcat很快回检测到并删除解压目录。

在生产环境中,我们通常会留两个版本,以linux环境为例,我们会在webapps/下面创建一个链接文件,指向我们存放版本的地方(该文件通常会带有版本号)。

使用Tomcat Manager进行部署和卸装应用

通过Tomcat->Manager app(http://localhost:8080/manager/html)->WAR file to deploy中加入war文件,然后进行deploy。

我们看到tomcat将war文件copy到webapp/目录下面,并进行解压。undeploy同样也可以在该页面上进行操作。

在Eclipse中使用Tomcat

在Eclipse中的Windows-》Preferences-》Server-》Runtime Environments中进行设置。

Eclipse有一个内嵌浏览器,但是我们经常需要使用浏览器中的一些开发工具,例如查看交互的http消息,如果要切换到其他浏览器。Windows –》Web Browser中进行选择。

在Project中,按右键-》Properties-》Server,缺省为<none>,选择Tomcat v8.0 Server at localhost。

我们还可以在右键-》Properties-》Web Project Settings中设置或者更改Context Root。

 

 

相关链接: 我的Professional Java for Web Applications相关文章

 
 

你可能感兴趣的:(Java for Web学习笔记(二):Web Containers)