目录

上一个主题

1.1. 安装Java

下一个主题

1.3. 安装GeoServer


1.2. 安装Apache Tomcat

1.2.1. Tomcat Jboss Glassfish 三种常见web容器比较

一、缘由:

新公司平台是纯Java架构,有用到Java Web(JSP)、Java 业务(EJB)、Nginx、、Websphere MQ、Mysql这样。大家知道java是跑在容器里的,

这里的业务要用到EJB故选用了Glassfish容器。

EJB是什么?EJB是一个服务器端的组件模型,可以部署分布式应用程序。J2EE规范这么说:Enterprise Java Bean (EJB )组件是运行在服务器端的业务组件;

另外Java Servlet和Java Server Pages(JSP)是运行在服务端的web组件。

那么常见的web容器(应用服务器)又有什么区别呢?下面慢慢道来。

二、详解:

1、Web容器

Web容器是一种服务调用的规范,J2EE运用了大量的容器和组件技术来构建分层的企业应用。在J2EE规范中,相应的有Web Container和EJB Container等。

Web容器给处于其中的应用程序组件(JSP、Servlet)提供环境,JSP、Servlet直接与容器中的环境变量打交道,而不必关注其他系统问题。

Web容器更多的是与HTTP的请求打交道,而EJB容器不是,它更多的是跟数据库其他服务打交道。

2、Web服务器

Web服务器可以处理HTTP协议,当Web服务器收到一个HTTP请求,就会返回一个HTTP响应。

Web服务器可以针对静态页面或者图片的请求进行跳转,或者把动态响应委托给其他一些程序,如CGI、JSP、Servlet、ASP、JavaScript或者其他服务端技术。

Web服务器仅仅提供一个可执行服务器端环境和返回响应的环境,不涉及其他技术。

1)Apache

是简单的HTTP服务器,速度快,在大型网站中,常与应用服务器配合部署,仅支持静态页面。

2)Nginx

是著名的HTTP服务器,速度快,支持负载均衡。

3、应用程序服务器(Web容器)

作为应用服务器,要求可以通过各种协议(包括HTTP协议)把商业逻辑暴露给客户端应用程序。应用程序使用商业逻辑就像你调用对象的一个方法或过程一样。

1)Tomcat

Tomcat仅是个HTTP服务器,是Apache鼎力支持的Java Web服务器,是Servlet/JSP API的执行器,也就是所谓的Servlet容器,不支持EJB、JMS。

相对于JBOSS来说较为轻量级,实现的功能也较少,不能完整的支持最新的JavaEE标准,适用于较为简单的Web应用。

2)JBOSS

JBOSS是开源Java EE应用服务器,它不但是Servlet容器,而且是EJB容器,它提供了更多开箱即用的功能特性,也更重,它完整的实现了J2EE 6。

3)Glassfish

Glassfish是Oracle 开发的官方Java EE容器,,也是同时支持Servlet和EJB,支持最新的特性,有自己的web容器,支持集群,支持热部署。

三、区别及选型:

1、区别:

Tomcat只是一个HTTP服务器和Java servlet容器。 JBoss和GlassFish是完整的Java EE应用程序服务器,包括EJB容器和该堆栈的所有其他功能。

另一方面,Tomcat具有更轻的内存占用(约60-70 MB),而那些Java EE服务器的权重在几百兆。 Tomcat对于简单的Web应用程序或使用诸如Spring

之类的不需要完整Java EE服务器的框架的应用程序非常流行。管理Tomcat服务器可以说是更容易,因为有较少的移动部件。

但是,对于确实需要完整的Java EE堆栈(或至少更多的部分,可以轻松地固定到Tomcat)的应用程序... JBoss和GlassFish是两个最流行的开源产品

(第三个是Apache Geronimo ,在其上构建IBM WebSphere的免费版本)。 JBoss有一个更大和更深的用户社区,和一个更成熟的代码库。

但是,JBoss在实现当前Java EE规范方面远远落后于GlassFish。此外,对于那些喜欢基于GUI的管理系统... GlassFish的管理控制台是非常光滑,

而大多数管理在JBoss是通过命令行和文本编辑器。 GlassFish直接来自Sun / Oracle,具有所有的优点。 JBoss不受Sun / Oracle的控制,具有所有可以提供的优点。

2、选型:

主要根据业务需求和应用规模来确定,如果仅仅是简单web应用,不需要支持EJB或者JMS等特性的,选择简单易用的Tomcat即可。

如果需要更多的J2EE个特性,比如EJB建议选择Glassfish这种全功能的服务器。

关于JBOSS和Glassfish,建议选择Glassfish,因为官方出品,实现当前Java EE更及时。

1.2.2. Servlet 容器

Web服务器使用HTTP协议来传输数据。最简单的一种情况是, 用户在浏览器(客户端,client)中输入一个URL(如,www.programcreek.com/static.html),然后就能获取网页进行阅览。 因此,服务器完成的工作就是发送网页至客户端。传输过程遵循HTTP协议,它指明了请求(request)消息和响应(response)消息的格式。

什么是Servlet容器?

在这里,我们发现,用户/客户端只能向服务器请求静态网页。如果用户想要根据自己的输入来读取网页,这种方式就不能满足用户的要求。 Servlet容器的基本思想是在服务器端使用Java来动态生成网页。因此,Servlet容器是Web服务器和servlet进行交互的必不可少的组件。

Servlet是在 javax.serlvet 包中定义的一个接口。 它声明了servlet生命周期中必不可少的三个方法- init()service()destroy() 。 每个 Servlet(无论是在SDK中定义的,或是自定义的)都必须实现这三个方法,而且由服务器在特定的时刻调用。

Servlet 为创建基于 web 的应用程序提供了基于组件、独立于平台的方法,可以不受 CGI 程序的性能限制。Servlet 有权限访问所有的 Java API,包括访问企业级数据库的 JDBC API。

处理请求和发送响应的过程是由一种叫做Servlet的程序来完成的,并且Servlet是为了解决实现动态页面而衍生的东西。理解这个的前提是了解一些http协议的东西,并且知道B/S模式(浏览器/服务器)。

正确安装了JRE之后,现在可以传递并安装servlet容器。 Servlet容器或web容器是与Servlet交互的组件服务器。 它负责管理 servlet 的生命周期,将URL映射到特定的 servlet ,并确保访问安全。 它应该实现 Java servlet 和 JavaServer 页面技术。

至于JRE,这里有几个选择;下面是一个简短的列表 http://en.wikipedia.org/wiki/Web_container .

下面简单介绍下这三者的概念:

web容器:可以部署多个WEB应用程序的环境。

Tomcat容器:是Java Servlet,JavaServer Pages,Java Expression Language和Java WebSocket(Java EE)技术的开源实现。

Servlet容器:全称server applet,意为服务程序。主要作用是给上级容器(Tomcat)提供doGet()和doPost()等方法。其生命周期实例化、初始化、调用、销毁受控于Tomcat容器。

Tomcat容器属于 WEB 容器的一种, WEB 容器还包括weblogic容器、JBoss容器等;而Tcomcat、webLogic等包含servlet容器。

1.2.3. Servlet与CGI的区别

概括来讲,Servlet可以完成和CGI相同的功能。

CGI应用开发比较困难,因为它要求程序员有处理参数传递的知识,这不是一种通用的技能。 CGI不可移植,为某一特定平台编写的CGI应用只能运行于这一环境中。 每一个CGI应用存在于一个由客户端请求激活的进程中,并且在请求被服务后被卸载。 这种模式将引起很高的内存、CPU开销,而且在同一进程中不能服务多个客户。

Servlet提供了Java应用程序的所有优势:可移植、稳健、易开发。 使用Servlet Tag技术,Servlet能够生成嵌于静态HTML页面中的动态内容。

Servlet对CGI的最主要优势在于一个Servlet被客户端发送的第一个请求激活,然后它将继续运行于后台,等待以后的请求。 每个请求将生成一个新的线程,而不是一个完整的进程。多个客户能够在同一个进程中同时得到服务。 一般来说,Servlet进程只是在Web Server卸载时被卸载。

Java Servlet与CGI (Common Gateway Interface 公共网关接口)的比较:

与传统的CGI和许多其他类似CGI的技术相比,Java Servlet具有更高的效率, 更容易使用,功能更强大,具有更好的可移植性,更节省投资。 在未来的技术发展过程中,Servlet有可能彻底取代CGI。

在传统的CGI中,每个请求都要启动一个新的进程,如果CGI程序本身的执行时间较短,启动进程所需要的开销很可能反而超过实际执行时间。 而在Servlet中,每个请求由一个轻量级的Java线程处理(而不是重量级的操作系统进程)。

在传统CGI中,如果有N个并发的对同一CGI程序的请求,则该CGI程序的代码在内存中重复装载了N次; 而对于Servlet,处理请求的是N个线程,只需要一份Servlet类代码。 在性能优化方面,Servlet也比CGI有着更多的选择。

  • 方便  Servlet提供了大量的实用工具例程,例如自动地解析和解码HTML表单数据、读取和设置HTTP头、处理Cookie、跟踪会话状态等。

  • 功能强大  在Servlet中,许多使用传统CGI程序很难完成的任务都可以轻松地完成。例如,Servlet能够直接和Web服务器交互,而普通的CGI程序不能。Servlet还能够在各个程序之间共享数据,使得数据库连接池之类的功能很容易实现。

  • 可移植性好 Servlet用Java编写,Servlet API具有完善的标准。因此,为IPlanet Enterprise Server写的Servlet无需任何实质上的改动即可移植到Apache、Microsoft IIS或者WebStar。几乎所有的主流服务器都直接或通过插件支持Servlet。

1.2.4. Tomcat 介绍

支持 Java 的容器或应用,Apache Tomcat、GlassFish 和 JBoss是最受欢迎的,它们都是开源版本。 您可能想知道哪个是运行GeoServer的最佳选择。 在生产环境中,通常同一容器在多个web应用程序之间共享。 您不会选择容器;架构师和系统管理员做出了他们的选择,您必须遵从他们的选择。 作为一个初学者,你有机会选择它!Apache Tomcat应该是您的首选, 因为它在Geoserver开发人员社区中被广泛采用。如果您遇到任何问题, 答案可能在邮件列表存档中等待您。

我们将安装Apache Tomcat , 它是Apache基金会的一个开源项目, 网址为 http://tomcat.apache.org 。 安装它的原因有很多,比如它被广泛使用,文档丰富,配置相对简单。

所以让我们开始安装 Apache Tomcat 。

1.2.5. 在Windows上安装ApacheTomcat

我们将安装 Apache Tomcat 9.x版本。

在Windows上,我们将使用安装程序。它将在服务控制面板中添加一个项, 允许您将Tomcat设置为自动启动。

1.目前为止tomcat的稳定版本时9.0.35

https://tomcat.apache.org/download-90.cgi

2.选择32位/ 64位Windows服务安装程序 并将EXE文件保存到计算机上的文件夹中。

3.选择下载的文件并以管理员身份运行, 然后在从“用户帐户”控件中询问时按“是”按钮。

4.你需要同意许可协议。

5.保持默认组件选择不变。 我们不需要 主机管理器 或Web应用程序示例:

image28

图 1.6 image28

6.使用默认端口号, 除非您知道还有其他服务绑定到它们。 设置用于网络管理的“用户名”和“密码”(例如,“ tomcat”)。

image29

图 1.7 image29

7.如果JRE安装成功,安装程序将提示您正确的安装路径。 如果您安装了多个JRE/JDK,您可以选择使用哪一个Tomcat:

tomcat9

图 1.8 image30

8.最后,您必须提供Tomcat的安装文件夹,然后按 安装 按钮:

9.安装过程将为您创建一个Windows服务。安装之后,它将尝试启动Tomcat9服务。 现在系统托盘上会有一个新图标。从弹出菜单中,您可以控制Tomcat、启动和停止它或访问配置控制台:

image32

图 1.9 image32

我们在Windows上安装了Apache Tomcat作为服务。 您的计算机现在可以承载Geoserver web存档了。

1.2.6. 在Ubuntu上安装Apache Tomcat

我们将安装ApacheTomcat9.x版本。

在Ubuntu上,有两种安装Apache Tomcat的方法。您可以使用包管理器来获取它。 在编写本文时,Ubuntu存储库包含了用于Ubuntu 18.04/20.04的Apache Tomcat的9版本。 我更喜欢,而且我们将遵循本书中的方法,下载存档并执行手动安装。 您将完全控制安装,并可以选择适当的版本号。另一方面,您不能依赖Tomcat的自动更新。

1.您可能需要阅读许可协议:

http://www.apache.org/licenses .

2.下载存档:

~$ wget http://apache.panu.it/tomcat/tomcat-9/v9.0.35/bin/apachetomcat-9.0.35.tar.gz

3.将其解压缩到特定于服务器的备用应用程序文件夹中; /opt 听起来是个好地方。

~$ sudo tar xvfz apache-tomcat-9.0.35.tar.gz -C /opt

4.在使用Tomcat之前,您需要正确配置它。 进入解压缩存档文件时创建的主文件夹;您应该看到以下结构:

~$ ls -lah /opt/apache-tomcat-9.0.35
total 120K
drwxr-xr-x 9 root root 4.0K Jun 6 12:16 .
drwxr-xr-x 3 root root 4.0K Jun 6 12:16 ..
drwxr-xr-x 2 root root 4.0K Jun 6 12:16 bin
drwxr-xr-x 2 root root 4.0K Mar 31 16:45 conf
drwxr-xr-x 2 root root 4.0K Jun 6 12:16 lib
-rw-r--r-- 1 root root 56K Mar 31 16:45 LICENSE
drwxr-xr-x 2 root root 4.0K Mar 31 16:44 logs
-rw-r--r-- 1 root root 1.2K Mar 31 16:45 NOTICE
-rw-r--r-- 1 root root 8.7K Mar 31 16:45 RELEASE-NOTES
-rw-r--r-- 1 root root 11K Mar 31 16:45 RUNNING.txt
drwxr-xr-x 2 root root 4.0K Jun 6 12:16 temp
drwxr-xr-x 7 root root 4.0K Mar 31 16:44 webapps
drwxr-xr-x 2 root root 4.0K Mar 31 16:44 work

5.这个 bin 和 conf 文件夹包含配置文件和 init 可以编辑脚本以调整设置。 在新的Unix机器上,默认配置不应该有任何问题。 如果要在运行其他服务的服务器上安装,应检查以下几点:

1.默认配置尝试将HTTP连接器绑定到端口8080。如果已用于其他服务, 则需要编辑 /opt/apachetomcat-7.0.27/conf/server.xml 文件。 查找以下部分:

2.您必须将8080替换为一个您知道可以在系统上免费使用的端口号。 请确保使用高于1024的端口号。你可能猜到把它改成80号端口是个好主意。 一方面,这将使您能够从浏览器访问Tomcat安装和部署在其上的web应用程序, 而无需向HTTP请求添加:8080语法。另一方面, 您必须考虑到ApacheTomcat的开发没有考虑到强大的HTTP安全性,如果您在Internet上公开容器, 则此配置可能是不安全的。使用代理是在保持安全性的同时获得相同结果的正确方法。 为Geoserver配置代理将在 第十一章 , 生产环境中的GeoServer .

3.还要记住,对配置文件所做的任何更改都必须重新启动Tomcat。

4.要访问管理任务的web界面,需要编辑安全设置。 进入 conf 文件夹并编辑 tomcatusers.xml 文件。以下文件语法非常简单:

~$ sudo vi /opt/apache-tomcat-9.0.35/conf/tomcat-users.xml

5.查找并取消注释以下部分:

<!--
<role rolename="tomcat"/>
<role rolename="role1"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="both" password="tomcat" roles="tomcat,role1"/> <user username="role1" password="tomcat" roles="role1"/>
-->

6.您还需要添加 “manager-gui” 角色并将其分配给用户。 您可能还想更改 密码 价值。编辑之后,该部分应如下所示:

<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager-gui"/>
<user username="tomcat" password="tomcat" roles="tomcat,manager-gui"/>
<user username="both" password="tomcat" roles="tomcat,role1"/> <user username="role1" password="tomcat" roles="role1"/>

7.启动Tomcat:

~$ sudo /opt/apache-tomcat-9.0.35/bin/catalina.sh start
Using CATALINA_BASE: /opt/apache-tomcat-9.0.35
Using CATALINA_HOME: /opt/apache-tomcat-9.0.35
Using CATALINA_TMPDIR: /opt/apache-tomcat-9.0.35/temp
Using JRE_HOME: /usr
Using CLASSPATH: /opt/apache-tomcat-9.0.35/bin/ bootstrap.jar:/opt/apache-tomcat-9.0.35/bin/tomcat-juli.jar

8.您成功地启动了servlet容器,现在可以在运行的进程中看到它:

~$ ps -ef | grep java root 1960 1 5 14:06 pts/0 00:00:01 /usr/ bin/java -Djava.util.logging.config.file=/opt/apachetomcat-9.0.35/conf/logging.properties -Djava.util.logging. manager=org.apache.juli.ClassLoaderLogManager -Djava. endorsed.dirs=/opt/apache-tomcat-9.0.35/endorsed -classpath

/opt/apache-tomcat-9.0.35/bin/bootstrap.jar:/opt/apachetomcat-9.0.35/bin/tomcat-juli.jar -Dcatalina.base=/ opt/apache-tomcat-9.0.35 -Dcatalina.home=/opt/apachetomcat-9.0.35 -Djava.io.tmpdir=/opt/apache-tomcat-9.0.35/ temp org.apache.catalina.startup.Bootstrap start

9.删除存档:

~$ rm apache-tomcat-9.0.35.tar.gz

刚刚发生了什么?

我们安装了Apache Tomcat。我们很快就要完成安装过程了。

现在可以在服务器上运行Java web应用程序。

1.2.7. 在Ubuntu上将Tomcat配置为服务

在Windows上,我们将Tomcat配置为一个系统服务,也就是说,一个在引导时运行的程序, 不需要任何用户操作。你想知道为什么在Ubuntu上必须手动启动Tomcat吗?实际上, 操作系统可以配置为自动启动服务。在本节中,您将创建一个脚本并了解其工作原理。

1.打开首选编辑器并输入以下行。 一定要启动编辑器 sudo 因为我们要在系统文件夹中创建一个文件。

#!/bin/sh
###BEGIN INIT INFO
#Provides: tomcat
#Required-Start: $local_fs $remote_fs $network $syslog
#Required-Stop: $local_fs $remote_fs $network $syslog
#Default-Start: 2 3 4 5
#Default-Stop: 0 1 6
#Short-Description: Start/Stop Tomcat v9.0.35
###END INIT INFO
#/etc/init.d/tomcat
export JAVA_HOME=/usr/lib/jvm/jre1.8.0_37
export PATH= $ JAVA_HOME/bin:$PATH
export CATALINA_HOME=/opt/apache-tomcat-9.0.35 export JAVA_OPTS="-Djava.awt.headless=true"
#开始
sh $CATALINA_HOME/bin/startup.sh
#停止
sh $CATALINA_HOME/bin/shutdown.sh
#重新启动
sh $CATALINA_HOME/bin/shutdown.sh
sh $CATALINA_HOME/bin/startup.sh
echo "Usage: /etc/init.d/tomcat {{start|stop|restart}}" exit 1

2.前一个脚本很简单,包含了您需要使用的所有基本元素。 注意路径;可以根据系统设置调整脚本。

3.调用新文件 野猫 把它保存在 /etc/init.d 文件夹。

4.现在,设置脚本的权限以使其可执行:

~$ sudo chmod a+x /etc/init.d/tomcat

5.让我们试着调用它并检查是否有任何问题:

~$sudo服务tomcat

Usage: /etc/init.d/tomcat {{start|stop|restart}}

6.尝试启动Tomcat:

~$sudo service tomcat启动

7.好的,现在正在运行:

~$ ps -ef | grep java root 1960 1 5 14:06 pts/0 00:00:01 /usr/bin/ java -Djava.util.logging.config.file=/opt/apache-tomcat-9.0.35/ conf/logging.properties -Djava.util.logging.manager=org.apache. juli.ClassLoaderLogManager -Djava.endorsed.dirs=/opt/apachetomcat-9.0.35/endorsed -classpath /opt/apache-tomcat-9.0.35/ bin/bootstrap.jar:/opt/apache-tomcat-9.0.35/bin/tomcat-juli.jar -Dcatalina.base=/opt/apache-tomcat-9.0.35 -Dcatalina.home=/opt/ apache-tomcat-9.0.35 -Djava.io.tmpdir=/opt/apache-tomcat-9.0.35/

临时org.apache.catalina.startup.Bootstrap start

8.现在停止服务:

~$sudo service tomcat stop

9.现在您有了一个工作脚本,最后一步是添加到已配置的服务。

我们将使用 update-rc :

~$ sudo update-rc.d tomcat defaults Adding system startup for /etc/init.d/tomcat ...

/etc/rc0.d/K20tomcat -> ../init.d/tomcat
/etc/rc1.d/K20tomcat -> ../init.d/tomcat
/etc/rc6.d/K20tomcat -> ../init.d/tomcat
/etc/rc2.d/S20tomcat -> ../init.d/tomcat
/etc/rc3.d/S20tomcat -> ../init.d/tomcat
/etc/rc4.d/S20tomcat -> ../init.d/tomcat
/etc/rc5.d/S20tomcat -> ../init.d/tomcat

10.重新启动系统并检查Tomcat是否已经在运行。

我们创建了一个Shell脚本来启动Apache Tomcat。 现在,当您启动Ubuntu计算机时, Tomcat将被初始化,所有Web应用程序内容将可用于用户请求。 如果您希望手动启动和停止Tomcat,则该脚本可能仍对您有用。 只需按照说明创建它,并避免最后一步。 您将使用脚本从命令行启动或停止Tomcat, 即** sudo tomcat start或sudo tomcat stop **。

探索Tomcat web界面

Apache Tomcat附带了一个用于基本配置和管理任务的web界面。 您将使用它安装Geoserver。打开浏览器并指向基本主控形状(例如, http://localhost:8080/ ). 你还记得我们编辑了一个关于角色、用户和密码的文件吗?您将看到一个HTTP摘要授权表单; 尝试猜测您必须提供哪些凭据。浏览管理器应用程序。

tomcat9_admin

图 1.10 tomcat_admin

测试-设置Java

问题1。您将为运行GeoServer设置一台新计算机。 操作系统是64位的;您需要下载哪个Java安装程序?

1.32位JRE

2.64位JRE

3.在64位操作系统上运行都很好

问题2。在安装Tomcat的同一台机器上,需要安装什么?

1.32位Tomcat设置

2.64位Tomcat设置

3.以上都不是;Tomcat java代码运行在32位或64位JVM上