LinuxService.012 Tomcat WEB型中间件

引言:Tomcat用于搭建支持java的动态页面


1  概念

1.1 中间件

      中间件是位于平台(硬件、操作系统、网络与数据库)和应用之间的通用服务,不会像应用程序一样提供业务,上面有很多应用接口。当系统升级时,只需要将中间件升级,接口的标准不变,这样上层的应用就可以照常使用。

1.1.1 中间件有以下几个功能

1)由于中间件有很多不同类型的应用接口,所以不同的应用之间、不同的操作系统之间、以及不同的应用与不同操作系统可以通过中间件通信。即相连接的系统,即使它们具有不同的接口,但通过中间件相互之间仍能交换信息。

2)中间件可以为上层应用程序提供运行与开发的环境;

3)提供Java脚本的动态网页服务。用PHP脚本编写的动态网页,在被客户端访问时,客户端会访问到web服务器后直接访问数据库调用存储的数据;而用Java脚本编写的动态网页在被客户端访问时,客户端在访问到web服务器后还需要通过中间件才能访问数据库进而调用存储的数据。

注1:数据库是软件,类似于高级的文件系统,定义了共享存储的存储和访问的格式。

注2:HTML语法编写的网页属于静态网页,静态网页被客户端访问时,web服务器会直接从本地的 /var/www/html 下调用页面返回给客户而不需要访问数据库。

1.1.2 中间件的分类

web应用型中间件:如Tomcat(free)、weblogic(pay)

消息性中间件:如rabbit(free,是erlang语言编写的)、mq(IBM)(pay)

缓存型中间件:如memcached(PHP语言编写的)

业务型中间件:如WAS、tuxedo

      rabbit消息型中间件的工作原理——例如,Windows系统A想要传达消息给Linux系统B,那么A会采用断点续传的方式发送消息给rabbit的,类似于发短信,A发出消息给rabbit后不会理会到底能不能传到、什么时候能传到;如果B此时宕机不能立即收到消息,则等B恢复正常后还是能收到消息。

      缓存型中间件工作模型:client——VIP——若干node节点——缓存型中间件——数据库——共享存储。所以当客户访问VIP时,VIP会根据算法分配任务给某一个节点,那么该节点就会访问数据库调用存储的数据。而缓存型中间件有缓存功能,当访问过VIP的客户再次访问时,节点可以直接调用中间件缓存中的数据,这样就能减缓数据库的压力,并且能加快数据的调用速度。

1.1.3 中间件应具有如下一些特点

1)满足大量应用的需要 ;              

2)运行于多种硬件和OS平台;  

3)支持分布计算,提供跨网络、硬件和OS平台的透明性的应用或服务的交互;

4)支持标准的协议;                   

5)支持标准的接口。

1.2  web应用型中间件——Tomcat

      Tomcat 技术先进、 性能稳定,是一个免费的开放源代码的Web 应用服务,是比较流行的Web 应用服务器。是开发和调试JSP 程序的首选。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

      当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP页面和Servlet。另外,Tomcat和IIS(Windows的网页服务)等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。

      Servlet(Server Applet),全称Java Servlet。是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。JSP也是Java的一个程序,据说是server let的前身。 

      servlet动态页面工作原理:客户端通过浏览器访问页面,如果是静态页面,服务器直接调用HTML的页面发给客户端,浏览器翻译过来呈现给用户;如果是动态页面,插件server let会访问数据库,随机生成一个动态页面返回给服务器,进而发给客户端。

2 使用Tomcat 提供一个动态页面服务

2.1 测试环境

      一台虚拟机作为Tomcat服务器。让自己的真机能连到虚拟机,能ping通学校的服务器172.19.0.254。将虚拟机网卡选为桥接模式。

2.2 配置Tomcat服务器

2.2.1 首先,使Tomcat测试页面能正常访问

第一步 从服务器下载要用到的文件

#wget  http://172.19.0.254:/softs/JDK/day.java

#wget  http://172.19.0.254:/softs/JDK/jdk.8u40-linux-x64.rpm

1)其中Java脚本day.java的内容如下:

import   java.util.Calendar;

class   day   {

public   static   void   main(String[]   args)   {

Calendar   cal  =  Calendar.getInstance();

int   year  =  cal.get(Calendar.YEAR);

int   month  =  cal.get(Calendar.MONTH)  +  1;

int   day  =  cal.get(Calendar.DATE);

int   hour  =  cal.get(Calendar.HOUR_OF_DAY);

int   minute  =  cal.get(Calendar.MINUTE);

System.out.println(year + "/" + month  +  "/"  + day + " " + hour + ":" +  minute);

}

}

2)安装JDK   # rpm   -ivh   jdk-8u40-linux-x64.rpm

第二步 编辑环境变量  

1)#vim  /etc/profile  在文件尾添加:

export   JAVA_HOME=/usr/java/default                  //声明变量

export   PATH=$PATH:$JAVA_HOME/bin                //增加PATH

export   CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar

2)然后使环境变量生效  #source   /etc/profile  或者 # .  /etc/profile

第三步 编译day.java   

#javac   day.java

#java    day                                   //显示出日期,说明已编译成功

第四步 安装Tomcat软件

1)解压软件包    #tar  xvfz  apache-tomcat-8.0.30.tar.gz

2)创建安装目录  #mkdir   -v  /usr/tomcat8

3)将解压完成的软件转移至指定目录:#mv   apache-tomcat- 8.0.30/*   /usr/tomcat8/

4)创建用户:    #useradd   -M  -d   /usr/tomcat8   tomcat8

//创建用户tomcat8,创建时不创建用户家目录,指定/usr/tomcat8为用户家目录

5)修改指定目录的属主: #chown   -R   tomcat8.   /usr/tomcat8

//也可以写tomcat8:tomcat8

第五步 配置Tomcat 服务,编辑配置文件

#vim    /usr/lib/systemd/system/tomcat.service ,里面写上:

[Unit]

Description=Apache  Tomcat  8                   //声明Tomcat版本

After=network.target                         //网络服务启动之后再启动

[Service]

Type=oneshot                              //只启动一次

ExecStart=/usr/tomcat8/bin/startup.sh         //指定开启Tomcat要执行startup.sh

ExecStop=/usr/tomcat8/bin/shutdown.sh      //指定关闭Tomcat要执行shutdown.sh

RemainAfterExit=yes                       //关联服务关闭(启动)后再关闭(启动)

User=tomcat8                            //指定用户

Group=tomcat8                          //指定用户组

[Install]  

WantedBy=multi-user.target               //指定在多用户级别安装

第六步 重启服务并设置开机自启

#systemctl   restart   tomcat

#systemctl   enable   tomcat

第七步 用真实机浏览器测试Tomcat服务,课件Tomcat测试页

http://Tomcat服务器ip:8080       

2.2.2 接下来使Tomcat开启支持Java

第一步 下载要用到的文件

daytime.java                         //这个是网上找的一段程序

apache-tomcat-8.0.30.tar.gz 

1)Java脚本daytime.java的内容如下:

import   java.io.*;

import   javax.servlet.*;

import   javax.servlet.http.*;

import   java.util.Calendar

public  class  daytime  extends  HttpServlet  {

public  void  doGet(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException{ 

response.setContentType("text/html");

PrintWriter  out  =  response.getWriter();

Calendar  cal  =  Calendar.getInstance();

out.println("<html>\n<head>\n<title>DayTime</title>\n</head>\n<body>");

out.println("<div style=\"font-size: 40px; text-align: center; font-weight:bold\">");

out.println(cal.get(Calendar.YEAR) + "/" + (cal.get(Calendar.MONTH) + 1)+ "/" +cal.get(Calendar.DATE) + " " + cal.get(Calendar.HOUR_OF_DAY) + ":" +cal.get(Calendar.MINUTE));

out.println("</div>\n</body>\n</html>");

}

}

第二步 创建Java程序存放目录并编译daytime.java

# mkdir   /usr/tomcat8/webapps/ROOT/WEB-INF/classes

# cd     /usr/tomcat8/webapps/ROOT/WEB-INF/classes

#mv   /root/daytime.java    /usr/tomcat8/webapps/ROOT/WEB-INF/classes

# javac   -classpath   /usr/tomcat8/lib/servlet-api.jar   daytime.java

第三步 编辑辑web.xml文件 。#vim /usr/tomcat8/webapps/ROOT/WEB- INF/web.xml 。在<web-app>至</web-app>之间加入:

<servlet>

<servlet-name>daytime</servlet-name>

<servlet-class>daytime</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>daytime</servlet-name>

<url-pattern>/daytime</url-pattern>

</servlet-mapping>第四步 使用真实机浏览器测试,按住F5刷新,一会会看到时间变了

http://tomcat_server _ip:8080/daytime

2.2.3 隐藏Tomcat的访问端口8080——设置透明代理

第一步 安装apache并启动  #yum  install  httpd  -y

#systemctl   restart   httpd

第二步 编辑apache的proxy_ajp.conf。 #vim /etc/httpd/conf.d/   , proxy_ajp.conf写入:

ProxyPass  /tomcat   ajp://Tomcat服务器IP:8009

第三步 重启服务:systemctl restart httpd

第四步 使用真实机浏览器访问,会看到Tomcat欢迎页面

http:// Tomcat服务器IP /tomcat/

注:AJP是定向包协议。因为性能原因,使用二进制格式来传输可读性文本。WEB服务器通过TCP连接和SERVLET容器连接。为了减少进程生成socket的花费,WEB服务器和SERVLET容器之间尝试保持持久性的TCP连接,对多个请求/回复循环重用一个连接。一旦连接分配给一个特定的请求,在请求处理循环结束之前不会再分配。


转载请注明出处,谢谢!

猜你喜欢

转载自blog.csdn.net/qq_35550345/article/details/87918981