程序员自由之路资料

本文主要介绍程序员自由之路资料 方法和在新技术下所面对的“挑战”,方便大家深入理解程序员自由之路资料 过程。本文也将分享程序员自由之路资料 所遇到的问题和应对策略,怎么解决怎么做的问题。
通过深入本文可以理解代码原理,进行代码文档的下载,也可以查看相应 Demo 部署效果。

打开Tomcat的配置目录,我们会发现下面的配置文件:

  • server.xml:Tomcat的主配置文件,包含Service, Connector, Engine, Realm, Valve, Hosts主组件的相关配置信息;
  • web.xml:遵循Servlet规范标准的配置文件,用于配置servlet,并为所有的Web应用程序提供包括MIME映射等默认配置信息;
  • context.xml:所有host的默认配置信息;
  • logging.properties:日志相关配置;
  • tomcat-users.xml:Realm认证时用到的相关角色、用户和密码等信息;Tomcat自带的manager默认情况下会用到此文件;在Tomcat中添加/删除用户,为用户指定角色等将通过编辑此文件实现;
  • catalina.policy:Java相关的安全策略配置文件,在系统资源级别上提供访问控制的能力,以安全模式启动Tomcat会使用这个配置
  • catalina.properties:Tomcat内部package的定义及访问相关的控制,也包括对通过类装载器装载的内容的控制;Tomcat在启动时会事先读取此文件的相关设置;
  • jaspic-providers.xml:用户认证配置文件

这篇博客就来介绍下这几个配置文件的作用,以及常用的配置选项。

server.xml配置

server.xml是Tomcat的主配置文件,可以对Service, Connector, Engine, Realm, Valve, Hosts等主组件进行相关配置。

<!-- port: 接收shutdown指令的端口,默认仅允许通过本机访问,默认为8005;      shutdown:发往此Server用于实现关闭tomcat实例的命令字符串,默认为SHUTDOWN;      使用方式:telnet localhost 8005, 输入SHUTDOWN即可关闭tomcat            如果你不配置这两个属性,Tomcat的这种关闭机制还是会运行的。你不想暴露这种关闭机制的      话,可以将端口设置成poer=-1,shutdown设置成一个复杂的字符串,比如shutdown="xscdeww#12"  --> <Server port="8005" shutdown="SHUTDOWN">   <!-- 默认配置的Listener -->   <Listener className="org.apache.catalina.startup.VersionLoggerListener" />   <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />   <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />   <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />   <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />    <!-- 应用于整个服务器的JNDI映射,此可以避免每个Web应用程序都需要在各自的web.xml创建,这在web应用程序        以WAR的形式存在时尤为有用。    -->   <GlobalNamingResources>     <Resource name="UserDatabase" auth="Container"               type="org.apache.catalina.UserDatabase"               description="User database that can be updated and saved"               factory="org.apache.catalina.users.MemoryUserDatabaseFactory"               pathname="conf/tomcat-users.xml" />   </GlobalNamingResources>    <!-- Service是多个Connector和单个Container的组合。Container是一个抽象的概念,由Engine, Realm,        Valve和Hosts主组组成。        在server.xml配置文件中可以同时配置多个Service标签    -->   <Service name="Catalina">      <!--The connectors can use a shared executor, you can define one or more named thread         pools      -->      <!-- 默认情况下,每个连接器connector会使用自己创建的线程池,我们也可以配置多个线程池让连接器共享-->     <!-- 如果想让连接器connector组件使用这个线程池,需要在连接器组件中配置executor属性.          另外,Executor元素的配置应该放在Connector配置的前面,这样才会先加载Executor的配置。                   Executor的主要属性包括:           - name:该线程池的名称id           - maxThreads:线程池中最大活跃线程数,默认值200(Tomcat7和8都是)           - minSpareThreads:线程池中保持的最小线程数,最小值是25           - maxIdleTime:线程空闲的最大时间,当空闲超过该值时关闭线程(除非线程数小于                          minSpareThreads),单位是ms,默认值60000(1分钟)           - daemon:是否后台线程,默认值true           - threadPriority:线程优先级,默认值5           - namePrefix:线程名字的前缀,线程池中线程名字为:namePrefix+线程编号      -->     <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"               maxThreads="150" minSpareThreads="4"/>          <!-- A "Connector" represents an endpoint by which requests are received          and responses are returned. Documentation at :          Java HTTP Connector: /docs/config/http.html          Java AJP  Connector: /docs/config/ajp.html          APR (HTTP/AJP) Connector: /docs/apr.html          Define a non-SSL/TLS HTTP/1.1 Connector on port 8080     -->     <!-- Connector是Tomcat中请求接收和响应返回的端点,Tomcat中支持HTTP、AJP和APR等协议。          下面的配置定义了一个支持Http协议的连接器,监听8080端口           Connector组件支持以下组件的配置:           - address:指定连接器监听的地址,默认为所有地址,即0.0.0.0;           - port:监听的端口,默认为0;           - protocol:连接器使用的协议,默认为HTTP/1.1,定义AJP协议时通常为AJP/1.3;           - connectionTimeout:等待客户端发送请求的超时时间,单位为毫秒,默认为60000,即1分钟;           - maxThreads:支持的最大并发连接数,默认为200;           - redirectPort:如果某连接器支持的协议是HTTP,当接收客户端发来的HTTPS请求时,                           则转发至此属性定义的端口;           - enableLookups:是否通过request.getRemoteHost()进行DNS查询以获取客户端的主机名;                            默认为true;           - acceptCount:设置等待队列的最大长度;           - executor:指定共享的线程池组件;      -->     <Connector port="8080" protocol="HTTP/1.1"                 connectionTimeout="20000"                redirectPort="8443"                executor="tomcatThreadPool" />          <!-- 下面是进行支持Https的配置 -->     <!-- Define an SSL/TLS HTTP/1.1 Connector on port 8443          This connector uses the NIO implementation. The default          SSLImplementation will depend on the presence of the APR/native          library and the useOpenSSL attribute of the          AprLifecycleListener.          Either JSSE or OpenSSL style configuration may be used regardless of          the SSLImplementation selected. JSSE style configuration is used below.     -->     <!--     <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"                maxThreads="150" SSLEnabled="true">         <SSLHostConfig>             <Certificate certificateKeystoreFile="conf/localhost-rsa.jks"                          type="RSA" />         </SSLHostConfig>     </Connector>     -->     <!-- Define an SSL/TLS HTTP/1.1 Connector on port 8443 with HTTP/2          This connector uses the APR/native implementation which always uses          OpenSSL for TLS.          Either JSSE or OpenSSL style configuration may be used. OpenSSL style          configuration is used below.     -->     <!--     <Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"                maxThreads="150" SSLEnabled="true" >         <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />         <SSLHostConfig>             <Certificate certificateKeyFile="conf/localhost-rsa-key.pem"                          certificateFile="conf/localhost-rsa-cert.pem"                          certificateChainFile="conf/localhost-rsa-chain.pem"                          type="RSA" />         </SSLHostConfig>     </Connector>     -->     <!-- Define an AJP 1.3 Connector on port 8009 -->     <!--     <Connector protocol="AJP/1.3"                address="::1"                port="8009"                redirectPort="8443" />     -->                   <!-- Tomcat内部有4个级别的容器,分别是Engine、Host、Context和Wrapper。Engine代表全局Servlet引          擎,每个Service组件只能包含一个Engine容器组件,但Engine组件可以包含若干Host容器组件       -->     <!-- An Engine represents the entry point (within Catalina) that processes          every request.  The Engine implementation for Tomcat stand alone          analyzes the HTTP headers included with the request, and passes them          on to the appropriate Host (virtual host).          Documentation at /docs/config/engine.html -->            <!-- You should set jvmRoute to support load-balancing via AJP ie :     <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">     -->     <Engine name="Catalina" defaultHost="localhost">        <!--For clustering, please take a look at documentation at:           /docs/cluster-howto.html  (simple how to)           /docs/config/cluster.html (reference documentation) -->       <!--       <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>       -->        <!-- Use the LockOutRealm to prevent attempts to guess user passwords            via a brute-force attack -->       <Realm className="org.apache.catalina.realm.LockOutRealm">         <!-- This Realm uses the UserDatabase configured in the global JNDI              resources under the key "UserDatabase".  Any edits              that are performed against this UserDatabase are immediately              available for use by the Realm.  -->         <Realm className="org.apache.catalina.realm.UserDatabaseRealm"                resourceName="UserDatabase"/>       </Realm>        <!-- 配置虚拟主机,可以配置多个-->       <!-- 一个Host下面可以有多个Context,也就是可以部署多个Webapp应用,一个webapp对应一个Context,用            不同的ContextPath区分        -->       <Host name="localhost"  appBase="webapps"             unpackWARs="true" autoDeploy="true">          <!-- SingleSignOn valve, share authentication between web applications              Documentation at: /docs/config/valve.html -->         <!--         <Valve className="org.apache.catalina.authenticator.SingleSignOn" />         -->          <!-- Access log processes all example.              Documentation at: /docs/config/valve.html              Note: The pattern used is equivalent to using pattern="common" -->         <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"                prefix="localhost_access_log" suffix=".txt"                pattern="%h %l %u %t &quot;%r&quot; %s %b" />       </Host>     </Engine>   </Service> </Server> 

web.xml配置

Tomcat的conf目录下面的web.xml配置文件和我们平时应用中WEB-INF下面的配置web.xml功能一致,只是Tomcat下面的这个配置文件用来配置所有应用通用的配置,对所用应用生效

  • 配置默认servlet,Jsp处理器和一些其他的filter;
  • 为所有的Web应用程序提供包括MIME映射;
  • 并设置欢迎页面。

通常Tomcat下面的这个配置文件不需要我们自己另行做额外配置。

</web-app>     <!-- 默认的Servlet,如果请求没有匹配到任何一个Sevlet,就是匹配到这个Servlet -->    <servlet>         <servlet-name>default</servlet-name>         <servlet-class>org.apache.catalina.servlets.DefaultServlet</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>false</param-value>         </init-param>         <load-on-startup>1</load-on-startup>     </servlet>     <!-- 对JSP页面的支持 -->     <servlet>         <servlet-name>jsp</servlet-name>         <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>         <init-param>             <param-name>fork</param-name>             <param-value>false</param-value>         </init-param>         <init-param>             <param-name>xpoweredBy</param-name>             <param-value>false</param-value>         </init-param>         <load-on-startup>3</load-on-startup>     </servlet>       <!-- 对ssi功能的至此 -->     <servlet>         <servlet-name>ssi</servlet-name>         <servlet-class>           org.apache.catalina.ssi.SSIServlet         </servlet-class>         <init-param>           <param-name>buffered</param-name>           <param-value>1</param-value>         </init-param>         <init-param>           <param-name>debug</param-name>           <param-value>0</param-value>         </init-param>         <init-param>           <param-name>expires</param-name>           <param-value>666</param-value>         </init-param>         <init-param>           <param-name>isVirtualWebappRelative</param-name>           <param-value>false</param-value>         </init-param>         <load-on-startup>4</load-on-startup>     </servlet>          <!-- 对cgi请求的支持 -->     <servlet>         <servlet-name>cgi</servlet-name>         <servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>         <init-param>           <param-name>cgiPathPrefix</param-name>           <param-value>WEB-INF/cgi</param-value>         </init-param>         <load-on-startup>5</load-on-startup>     </servlet>       <servlet-mapping>         <servlet-name>default</servlet-name>         <url-pattern>/</url-pattern>     </servlet-mapping>     <servlet-mapping>         <servlet-name>jsp</servlet-name>         <url-pattern>*.jsp</url-pattern>         <url-pattern>*.jspx</url-pattern>     </servlet-mapping>     <servlet-mapping>         <servlet-name>ssi</servlet-name>         <url-pattern>*.shtml</url-pattern>     </servlet-mapping>     <servlet-mapping>         <servlet-name>cgi</servlet-name>         <url-pattern>/cgi-bin/*</url-pattern>     </servlet-mapping>           <!-- 一些内置的Filter,Filter默认是不打开的,要打开的话需要去Tomcat的web.xml中放开注释-->     <!-- 另外,这个这些Filter默认都是可以配置很多初始化参数的,具体参数请参考原始配置中的注释,这边          没有贴出来      -->      <!-- A filter that sets various security related HTTP Response headers.   -->      <filter>         <filter-name>httpHeaderSecurity</filter-name>         <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>         <async-supported>true</async-supported>      </filter>             <!-- A filter that sets character encoding that is used to decode             parameters in a POST request (对post请求生效)       -->     <filter>         <filter-name>setCharacterEncodingFilter</filter-name>         <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>         <init-param>             <param-name>encoding</param-name>             <param-value>UTF-8</param-value>         </init-param>         <async-supported>true</async-supported>     </filter>          <!-- 对于bad request,直接返回 -->     <filter>         <filter-name>failedRequestFilter</filter-name>         <filter-class>           org.apache.catalina.filters.FailedRequestFilter         </filter-class>         <async-supported>true</async-supported>     </filter>       <!-- 实现ssi功能 -->     <!-- 上面还提供了实现ssi功能的servlet,不要同时开启两个,只要使用其中一个就行了 -->     <filter>         <filter-name>ssi</filter-name>         <filter-class>           org.apache.catalina.ssi.SSIFilter         </filter-class>         <init-param>           <param-name>contentType</param-name>           <param-value>text/x-server-parsed-html(;.*)?</param-value>         </init-param>         <init-param>           <param-name>debug</param-name>           <param-value>0</param-value>         </init-param>         <init-param>           <param-name>expires</param-name>           <param-value>666</param-value>         </init-param>         <init-param>           <param-name>isVirtualWebappRelative</param-name>           <param-value>false</param-value>         </init-param>     </filter>        <filter-mapping>         <filter-name>httpHeaderSecurity</filter-name>         <url-pattern>/*</url-pattern>         <dispatcher>REQUEST</dispatcher>     </filter-mapping>     <filter-mapping>         <filter-name>setCharacterEncodingFilter</filter-name>         <url-pattern>/*</url-pattern>     </filter-mapping>     <filter-mapping>         <filter-name>failedRequestFilter</filter-name>         <url-pattern>/*</url-pattern>     </filter-mapping>     <filter-mapping>         <filter-name>ssi</filter-name>         <url-pattern>*.shtml</url-pattern>     </filter-mapping>      <!-- 默认的session过期时间-->     <session-config>         <session-timeout>30</session-timeout>     </session-config>     <!-- mime的mapping信息-->     ...     <mime-mapping>         <extension>123</extension>         <mime-type>application/vnd.lotus-1-2-3</mime-type>     </mime-mapping>     ...     <!-- 配置欢迎页面 --> 	<welcome-file-list>         <welcome-file>index.html</welcome-file>         <welcome-file>index.htm</welcome-file>         <welcome-file>index.jsp</welcome-file>     </welcome-file-list> </web-app> 

上面的web.xml是Tomcat提供的通用的配置。一般情况下,webApp也都会有自己的web.xml配置,存放在WEB-INF下面,这边也给出一个webApp的配置:

!DOCTYPE web-app PUBLIC  "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"  "http://java.sun.com/dtd/web-app_2_3.dtd" >  <!--一个web应用对应一个ServletContext实例,这个实例是应用部署启动后,servlet容器为应用创建的。     ServletContext实例包含了所有servlet共享的资源信息。通过提供一组方法给servlet使用,用来     和servlet容器通讯,比如获取文件的MIME类型、分发请求、记录日志等。     http://www.cnblogs.com/nantang/p/5919323.html  --> <web-app> 	<display-name>Archetype Created Web Application</display-name>   	<context-param>         <param-name>contextConfigLocation</param-name>         <param-value>classpath:beans.spring.xml</param-value>     </context-param> 	<context-param> 		<param-name>webAppRootKey</param-name> 		<param-value>project.root.path</param-value> 	</context-param>   	<!-- 将项目的绝对路径放到系统变量中 --> 	<listener> 		<listener-class>org.springframework.web.util.WebAppRootListener</listener-class> 	</listener> 	<!--初始化Spring IOC容器,并将其放到servletContext的属性当中-->     <listener>         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>     </listener>        	<!-- 配置SPRINGMVC--> 	<servlet> 		<servlet-name>springmvc</servlet-name> 		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 		<init-param> 			<param-name>contextConfigLocation</param-name> 			<param-value>classpath:springmvc.spring.xml</param-value> 		</init-param> 		<load-on-startup>1</load-on-startup> 	</servlet> 	<servlet-mapping> 		<servlet-name>springmvc</servlet-name> 		<!-- 这边不建议写成/* --> 		<url-pattern>/</url-pattern> 	</servlet-mapping> </web-app> 

context.xml配置

context组件是host组件的子组件。context.xml中的配置是所有host组件的通用配置,Tomcat的conf目录下的context.xml的内容,如下。(通常,这个配置文件也不需要我们做另外的配置)

<Context>      <!-- Default set of monitored resources. If one of these changes, the    -->     <!-- web application will be reloaded.                                   -->     <WatchedResource>WEB-INF/web.xml</WatchedResource>     <WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource>     <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>      <!-- Uncomment this to disable session persistence across Tomcat restarts -->     <!--     <Manager pathname="" />     --> </Context> 

logging.properties配置

Tomcat日志相关的配置文件,不是重点。

tomcat-users.xml配置

Tomcat提供了一个管理控制台,在控制台的manager的管理页面,我们能够查看到所有部署的应用的运行状态、也能管理应用的运行。当然,我们也能通过这个界面进行应用部署。

程序员自由之路

当然,想要通过这个界面进行应用管理和部署,需要用户进行登陆。这些配置就是在tomcat-users.xml中进行配置的。

Tomcat中支持的所有的用户管理角色有:

<!-- 相当于admin角色,网站管理员角色 --> <role rolename="admin-gui"/>  <role rolename="admin-script"/> <!--允许访问html接口(即URL路径为/manager/html/*)--> <role rolename="manager-gui"/> <!-- 允许访问纯文本接口(即URL路径为/manager/text/*) --> <role rolename="manager-script"/> <!-- 允许访问JMX代理接口(即URL路径为/manager/jmxproxy/*)--> <role rolename="manager-jmx"/> <!-- 允许访问Tomcat只读状态页面(即URL路径为/manager/status/*)--> <role rolename="manager-status"/> 

配置用户的角色、登录名和密码,需要在tomcat-users.xml中进行配置。

如果想要访问manager页面需要配置:

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

如果需要使用到远程部署等功能,需要添加上:

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

下面给出一个比较完整的配置列子,生产环境需要根据具体需求配置用户和角色。

  <!-- 相当于admin角色,网站管理员角色 -->   <role rolename="admin-gui"/>    <role rolename="admin-script"/>   <!--允许访问html接口(即URL路径为/manager/html/*)-->   <role rolename="manager-gui"/>   <!-- 允许访问纯文本接口(即URL路径为/manager/text/*) -->   <role rolename="manager-script"/>   <!-- 允许访问JMX代理接口(即URL路径为/manager/jmxproxy/*)-->   <role rolename="manager-jmx"/>   <!-- 允许访问Tomcat只读状态页面(即URL路径为/manager/status/*)-->   <role rolename="manager-status"/>   <user username="admin" password="admin123" roles="admin-gui,admin-script"/>   <user username="manager" password="manager123" roles="manager-gui,manager-script"/> 

jaspic-providers.xml配置

关于jaspic-providers.xml配置,作用和tomcat-user.xml类似,都是实现用户认证的。Tomcat 实现了 JASPIC 1.1 Maintenance Release B 标准,并通过这个配置文件集成第三方 JASPIC 身份验证。

但是这个认证方式不怎么使用,大家不用太
程序员自由之路资料部分资料来自网络,侵权毕设源码联系删除

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 程序员自由之路资料

提供最优质的资源集合

立即查看 了解详情