tomcat AJP 是什么东西
AJP(Apache JServ Protocol)是定向包协议。因为性能原因,使用二进制格式来传输可读性文本。WEB服务器通过 TCP连接 和 SERVLET容器连接。
由于tomcat的html和解析功能相对其他服务器如apche等较弱,所以,一般都是集成起来使用,只有jsp和servlet服务交由tomcat处理,而tomcat和其他服务器的集成,就是通过ajp协议来完成的。
为了减少进程生成socket的花费,WEB服务器和SERVLET容器之间尝试保持持久性的TCP连接,对多个请求/回复循环重用一个连接。一旦连接分配给一个特定的请求,在请求处理循环结束之前不会再分配。
换句话说,在连接上,请求不是多元的。这个使连接两端的编码变得容易,虽然这导致在一时刻会有很多连接。
扩展资料:
WEB服务器连接到SERVLET容器的状态类型:
1、空闲
这个连接上没有处理的请求。
2、已分派
连接正在处理特定的请求。
一旦一个连接被分配给一个特定的请求,在连接上发送的基本请求信息是高度压缩的。在这点,SERVLET容器大概准备开始处理请求,当它处理的时候,它能发回下面的信息给WEB服务器:
3、SEND_HEADERS
发送一组头到浏览器。
4、SEND_BODY_CHUNK
发送一块主体数据到浏览器。
5、GET_BODY_CHUNK
从请求获得下一个数据如果还没有全部传输完,如果请求内容的包长度非常大或者长度不确定,这是非常必要的。例如上载文件。注意这和HTTP的块传输没有关联。
6、END_RESPONSE
结束请求处理循环。
—ajp
出现该问题,主要是因为tomcat版本高的原因。我使用tomcat 8024,便没有此问题,当我使用tomcat 85+ 时,就会出现该问题,需要修改我下面书写的配置,才能生效!
一、检查linux
linux文件访问默认权限与umask有关,查看系统默认配置(/etc/profile)是否正常,如果是002或022就正常没有问题。
[umask 002 对应文件权限664,文件夹权限775;
umask 022对应文件权限644,文件夹权限755]
二、检查tomcat
打开bin/catalinash文件,检查大概在263行左右。
将0027改改为0022,重启tomcat,上传访问的问题解决。
原代码
# Set UMASK unless it has been overriddenif [ -z "$UMASK" ]; then
UMASK="0027"fi
改为
# Set UMASK unless it has been overriddenif [ -z "$UMASK" ]; then
UMASK="0022"fi
三、重启tomcat
sh shutdownsh(关闭)
sh startupsh 或者 /startupsh(启动)
1把/tomcat/webapps/目录清空,删掉该文件夹的所有内容,
2修改/tomcat/conf/webxml文件:
将其中的false 修改为 true;一般这样处理已经可以解决问题了,如果不行再看下面的3 试试
3修改/tomcat/conf/serverxml文件:给工程配置虚拟路径,这样tomcat在启动的时候直接找到你的工程了,
你上传的就不会跑到/tomcat/webapps/目录,而是直接到了你的工程里,
不管你怎样重启项目,或者清理缓存,上传的文件依然存在!
如果想让tomcat服务器访问指定磁盘 上的静态资源,可在tomcat/conf/serverxml中查找<Host></Host>,在标签中添加如下标签<Context path="/file" docBase="D:/img" reloadable="true"/>,再通过localhost:8080/file地址来访问路境内的文件:
如要访问名为d:/img/catpng的,则localhost:8080/file/catpng
Tomcat:允许站点的web服务器,如网易邮箱(如果使用Tomcat)
JDK:用于开发Java的Java开发工具。许多web站点使用此工具进行开发
一般来说,副本是使用JDK开发的软件,在tomcat中运行,我们访问Internet,就是访问tomcat来获取一个类似服务器的服务器。
tomcat和jdk的区别:
一、指代不同
1.JDK:Java语言软件开发工具包,主要用于移动设备和嵌入式设备上的Java应用程序。
2.tomcat:是一个普通的服务器,本身只支持HTML是普通的网页。
二、功能不同
1.JDK:Java开发的核心。它包含Java运行时环境(JVM+Java系统类库)和Java工具。源
2.Tomcat:Tomcat是Apache软件基金会Jakarta项目开发的Servlet容器。
它根据SunMicrosystems提供的技术规范实现了对servlet和JavaServerPage(JSP)的支持,并提供了一些作为Web服务器的独特功能。
三、特征不同
1.JDK:没有JDK,Java程序无法编译(参考Javasource.java文件)。如果您只想运行Java程序(引用类或jar或其他归档文件),请确保安装了适当的JRE。
2.Tomcat:Tomcat本身包含一个HTTP服务器,它也可以被看作是一个独立的Web服务器。
先说解决办法吧,后面在分析:
1把/tomcat/webapps/目录清空,删掉该文件夹的所有内容,
2修改/tomcat/conf/webxml文件:
<servlet><servlet-name>default</servlet-name><servlet-class>orgapachecatalinaservletsDefaultServlet</servlet-class><init-param><param-name>debug</param-name><param-value>0</param-value></init-param><init-param><param-name>listings</param-name><param-value>true</param-value></init-param><load-on-startup>1</load-on-startup></servlet
3修改/tomcat/conf/serverxml文件:
<Host name="localhost" appBase="webapps"unpackWARs="true" autoDeploy="true"xmlValidation="false" xmlNamespaceAware="false"><!-- SingleSignOn valve, share authentication between web applications Documentation at: /docs/config/valvehtml --><!-- <Valve className="orgapachecatalinaauthenticatorSingleSignOn" /> --><!-- Access log processes all example Documentation at: /docs/config/valvehtml --><!-- <Valve className="orgapachecatalinavalvesAccessLogValve" directory="logs" prefix="localhost_access_log" suffix="txt" pattern="common" resolveHosts="false"/> --><!----><Context path="/ser" docBase="D:\project\myProject\editor\WebRoot"></Context><!--<Context path="/mvc" docBase="D:\project\myProject\你的项目名\WebRoot"></Context>--></Host>
分析:
重新redeploy的时候, tomcat 会同步你本地的文件 ,因为本地没有相应的文件夹导致文件丢失。
这只是在开发过程中会遇到的问题 实际应用中 tomcat 只会 startupbat/sh shutdownbat/sh
我们这样做,其实就是给工程配置虚拟路径,这样tomcat在启动的时候直接找到工程了,
上传的就不会仅仅只在/tomcat/webapps/目录,而直接到了你的工程里,
不管你怎样重启项目,或者清理缓存,上传的文件依然存在!
0条评论