内容简介:在许多生产环境中,具有部署新Web应用程序或取消部署现有Web应用程序的功能非常有用,而且无需关闭并重新启动整个容器。此外,即使您尚未在Tomcat服务器配置文件中声明应用为reloadable,也可以让现有应用程序重新加载。为了支持这些功能,Tomcat包括一个Web应用程序(默认安装在上下文路径上)/manager)支持以下功能:默认的Tomcat安装包括Manager。添加Manager Web应用程序的实例Context到新主机安装manager.xml中的上下文配置文件$CATALINA_BASE
1、Introduction
在许多生产环境中,具有部署新Web应用程序或取消部署现有Web应用程序的功能非常有用,而且无需关闭并重新启动整个容器。此外,即使您尚未在Tomcat服务器配置文件中声明应用为reloadable,也可以让现有应用程序重新加载。
为了支持这些功能,Tomcat包括一个Web应用程序(默认安装在上下文路径上)/manager)支持以下功能:
- 通过上传的WAR文件来部署新的Web应用程序。
- 在指定的上下文路径上部署新的Web应用程序。
- 列出当前部署的Web应用程序,以及这些Web应用程序当前处于活动状态的会话。
- 重新加载现有的Web应用程序,以反映/WEB-INF/classes 或 /WEB-INF/lib目录内容的变化.
- 列出OS和JVM属性值。
- 列出可用的全局JNDI资源,这些资源可以在
元素节点下的 节点中使用。 - 启动已停止的应用程序(从而使其再次可用)。
- 停止现有应用程序(以使其变得不可用),但不要取消部署它。
- 取消部署已部署的Web应用程序并删除其文档基目录(除非它是从文件系统部署的)。
默认的Tomcat安装包括Manager。添加Manager Web应用程序的实例Context到新主机安装manager.xml中的上下文配置文件$CATALINA_BASE/conf/[enginename]/[hostname]。这是一个例子:
docBase="${catalina.home}/webapps/manager"> allow="127\.0\.0\.1" />
如果您将Tomcat配置为支持多个虚拟主机(网站),则需要为每个虚拟主机配置一个Manager。
有三种方法可以使用 Manager应用程序 .
- 作为具有用户界面的应用程序,您可以在浏览器中使用。这是一个示例:http://localhost:8080/manager/html .你可以把localhost替换成你的网站的URL
- 仅使用HTTP请求的最小版本,适用于系统管理员设置的脚本。命令作为请求URI的一部分给出,响应采用简单文本的形式,可以很容易地进行解析和处理。
- 一组方便的任务定义 Ant (1.4或更高版本)构建工具。
2、配置Manager Application Access
下面的描述使用变量名 $ CATALINA_BASE 来引用解析大多数相对路径的基目录。如果尚未通过设置 CATALINA_BASE 目录为多个实例配置 Tomcat ,则 $ CATALINA_BASE 将设置为 $ CATALINA_HOME 的值,即已安装 Tomcat 的目录。
使用默认设置的Tomcat是非常不安全的,这些设置允许Internet上的任何人在您的服务器上执行Manager应用程序。因此,Manager应用程序需要有manager角色的用户使用用户名和密码进行权限验证。此外,默认用户文件中没有用户名($CATALINA_BASE/conf/tomcat-users.xml)分配给这些角色。因此,默认情况下完全禁用对Manager应用程序的访问。
您可以在Manager Web应用程序的web.xml文件中找到角色名称。可用的角色是:
- manager-gui - 访问HTML界面。
- manager-status - 仅访问“服务器状态”页面。
- manager-script - 访问本文档中描述的 工具 友好的纯文本界面,以及“服务器状态”页面。
- manager-jmx - 访问JMX代理接口和“服务器状态”页面。
HTML接口受到CSRF(跨站点请求伪造)攻击的保护,但文本和JMX接口无法受到保护。这意味着当使用Web浏览器访问Manager应用程序时,允许访问文本和JMX界面的用户必须小心谨慎。为了保持CSRF保护:
- 如果使用Web浏览器使用具有 manager-script 或 manager-jmx 角色其中任何一个的用户访问Manager应用程序(例如用于测试纯文本或JMX接口),之后必须关闭浏览器的所有窗口以终止会话。如果您不关闭浏览器并访问其他站点,您可能会成为CSRF攻击的受害者。
- 建议永远不要授予 manager-script 或 manager-jmx 角色给拥有 manager-gui角色 的用户.
注意,JMX代理接口实际上是Tomcat的低级根类管理接口。如果有人知道JMX的命令,那么他可以做很多事情。启用时应该谨慎配置 manager-jmx 角色.
要启用对Manager Web应用程序的访问,您必须创建新的用户并关联一个 manager-xxx 角色,或添加一个 manager-xxx角色给 某些现有的用户。由于本文档的大部分内容都描述了使用文本界面,因此本示例将使用角色名称 manager-script 。具体如何配置用户取决于哪个你使用哪种( Realm )实现方式:
-
UserDatabaseRealm
plus MemoryUserDatabase
, or MemoryRealm
— 该配置是tomcat的默认配置,在$CATALINA_BASE/conf/server.xml里配置. 该配置默认情况下读取$CATALINA_BASE/conf/tomcat-users.xml,该文件可以使用任何文本编辑器进行编辑。该文件包含XML节点
可以看成一个单独的用户,可能看起来像这样: 它定义了此人用于登录的用户名和密码,以及与其关联的角色名称。你可以在roles属性添加 manager-script 角色(以逗号分隔)来为用户添加更多角色。 - DataSourceRealm or JDBCRealm - 您的用户和角色信息存储在通过JDBC访问的数据库中。添加 manager-script 根据环境的标准过程,为一个或多个现有用户创建角色,和/或创建一个或多个已分配此角色的新用户。
- JNDIRealm - 您的用户和角色信息存储在通过LDAP访问的目录服务器中。添加 manager-script 根据环境的标准过程,为一个或多个现有用户创建角色,和/或创建一个或多个已分配此角色的新用户。
第一次尝试操作Manager时,您将使用BASIC身份验证登录。您输入的用户名和密码无关紧要,只要该用户有 manager-script这个角色就可以 .
除了密码限制之外,还可以限制对Manager Web应用程序的访问IP地址或者通过添加一个主机RemoteAddrValve 或者 RemoteHostValve。以下是通过IP地址限制对localhost的访问的示例:
allow="127\.0\.0\.1"/> Manager Web应用程序的用户友好HTML界面位于 http://{host}:{port}/manager/html
正如上面已经提到的,你需要拥有 manager-gui角色
。有一个单独的文档,提供有关此接口的帮助。看到: HTML接口受到CSRF(跨站点请求伪造)攻击的保护。每次访问HTML页面都会生成一个随机令牌,该令牌存储在您的会话中,并包含在页面上的所有链接中。如果您的下一个操作没有正确的令牌值,则该操作将被拒绝。如果令牌已过期,您可以从主页面重新开始。 Manager应用程序可以使用的所有命令都在单个请求URI中指定,如下所示: http://{host}:{port}/manager/text/{command}?{parameters} {host} 和 {port}表示运行Tomcat的主机名和端口号,{command}表示您要执行的Manager命令,以及{parameters}表示特定于该命令的查询参数。在下面的插图中,根据您的安装自定义主机和端口。 这些命令通常由HTTP GET请求执行。/deploy命令可以使用HTTP PUT执行。 大多数命令接受以下一个或多个查询参数: 每个命令都会返回一个响应text/plain格式(即没有HTML标记的纯ASCII),使人和程序都能轻松阅读。响应的第一行将从OK / FAIL开始,指示请求的命令是否成功。如果失败,第一行的其余部分将包含遇到的问题的描述。一些命令包括如下所述的附加信息行。 国际化说明- Manager应用程序在资源包中查找其消息字符串,因此可能已为您的平台翻译了字符串。以下示例显示了消息的英文版本。 http://localhost:8080/manager/text/deploy?path=/foo 使用HTTP PUT请求通过上面的URL进行部署war文件,这个请求会将war包安装到appBase对应的虚拟主机的目录,并启动。稍后可以通过/undeploy命令使该应用程序取消部署(并删除相应的WAR文件)。 该命令由HTTP PUT请求执行。 .WAR文件可以包括Tomcat特定的部署配置,方法是在/META-INF/context.xml文件中配置Context节点. URL参数包括:
NOTE- 这个命令与/undeploy命令逻辑相反 . 如果安装和启动成功,您将收到如下响应: OK - Deployed application at context path /foo 否则,响应将以FAIL开始并包含一条错误消息。可能的问题原因包括: 部署并启动新Web应用程序到指定path(任何其他Web应用程序不得使用它)。这个命令与/undeploy命令逻辑相反. 此命令由HTTP GET请求执行。可以使用许多不同的方法来使用deploy命令。 http://localhost:8080/manager/text/deploy?path=/footoo&tag=footag 这可以用于部署先前部署的Web应用程序,该应用程序已使用tag属性。请注意,Manager webapp的工作目录将包含以前部署的WAR;删除它会使部署失败。 部署位于Tomcat服务器上的Web应用程序目录或“.war”文件。如果不指定path,则路径和版本派生自目录名称或war文件名。该war参数指定一个URL(包括file:scheme)用于目录或Web应用程序归档(WAR)文件。 在此示例中,Web应用程序位于/path/to/foo目录中,在Tomcat服务器上部署为名为/footoo的Web应用程序. http://localhost:8080/manager/text/deploy?path=/footoo&war=file:/path/to/foo 在此示例中/path/to/bar.war文件在Tomcat服务器上部署为名为/bar的Web应用程序。请注意,没有path参数,因此上下文路径默认用bar.war解压后的名称。 http://localhost:8080/manager/text/deploy?war=file:/path/to/bar.war 部署位于Host appBase目录中的Web应用程序目录或“.war”文件。路径和可选版本派生自目录或war文件名。 在此示例中,Web应用程序位于名为foo的子目录中,在Tomcat服务器的Host appBase目录中部署为名为foo的Web应用程序。请注意,使用的上下文路径是Web应用程序目录的名称。 http://localhost:8080/manager/text/deploy?war=foo 在此示例中bar.war位于Tomcat服务器上的Host appBase目录中,将其部署为名为/bar的Web应用程序上下文. http://localhost:8080/manager/text/deploy?war=bar.war 如果Host的 deploy标志设置为true,则可以使用Context配置“.xml”文件和可选的“.war”文件或Web应用程序目录来部署Web应用程序。上下文path使用上下文“.xml”配置文件部署Web应用程序时不使用。 Context配置“.xml”文件可以包含Web应用程序的有效XML,就像它在Tomcat中配置一样server.xml配置文件。这是一个例子: When the optional war参数设置为Web应用程序“.war”文件或目录的URL,它将覆盖在上下文配置“.xml”文件中配置的任何docBase。 以下是使用Context配置“.xml”文件部署应用程序的示例。 http://localhost:8080/manager/text/deploy?config=file:/path/context.xml 以下是使用Context配置“.xml”文件和位于服务器上的Web应用程序“.war”文件部署应用程序的示例。 http://localhost:8080/manager/text/deploy ?config=file:/path/context.xml&war=file:/path/bar.war 如果主机配置了unpackWARs = true并且您部署了war文件,则war将被解压缩到Host appBase目录中的目录中。 如果应用程序war或目录安装在Host appBase目录中,并且Host配置了autoDeploy = true,或者Context路径必须与没有“.war”扩展名的目录名或war文件名匹配。 为了在不受信任的用户可以管理Web应用程序时的安全性,可以将Host deployXML标志设置为false。这可以防止不受信任的用户使用配置XML文件部署Web应用程序,还可以防止他们部署位于其主机appBase之外的应用程序目录或“.war”文件。 如果安装和启动成功,您将收到如下响应: OK - Deployed application at context path /foo 否则,响应将从FAIL开始并包含一条错误消息。可能的问题原因包括: http://localhost:8080/manager/text/list 列出上下文路径,当前状态(running or stopped),以及所有当前部署的Web应用程序的活动会话数。启动Tomcat后立即执行的典型响应可能如下所示: OK - Listed applications for virtual host localhost /webdav:running:0:webdav /examples:running:0:examples /manager:running:0:manager /:running:0:ROOT /test:running:0:test##2 /test:running:0:test##1 http://localhost:8080/manager/text/reload?path=/examples 发信号通知现有应用程序关闭并重新加载。当Web应用程序上下文不可重新加载并且您已更新了/WEB-INF/classes目录中的类或属性文件时,或在/WEB-INF/lib文件夹添加或更新jar文件时 ,这个功能很有用. 如果此命令成功,您将看到如下响应: OK - Reloaded application at context path /examples 否则,响应将从FAIL并包含一条错误消息。可能的问题原因包括: http://localhost:8080/manager/text/serverinfo 列出有关Tomcat版本,操作系统和JVM属性的信息。 如果发生错误,响应将以响应开始FAIL并包含一条错误消息。可能的问题原因包括: http://localhost:8080/manager/text/resources[?type=xxxxx] 列出可在上下文配置文件的资源链接中使用的全局JNDI资源。如果你指定type请求参数,该值必须是您感兴趣的资源类型的完全限定 Java 类名称(例如,您将指定javax.sql.DataSource获取所有可用JDBC数据源的名称)。如果你没有指定type请求参数,将返回所有类型的资源。 取决于是否type请求参数是否指定,正常响应的第一行将是: OK - Listed global resources of all types or OK - Listed global resources of type xxxxx 每个资源后跟一行。每行由冒号字符(“:”)分隔的字段组成,如下所示: 如果发生错误,响应将以响应开始FAIL并包含一条错误消息。可能的问题原因包括: http://localhost:8080/manager/text/sessions?path=/examples 显示Web应用程序的默认会话超时,以及在实际超时时间的一分钟范围内的当前活动会话数。例如,重新启动Tomcat然后执行其中一个JSP示例/examples网络应用程序,你可能得到这样的东西: OK - Session information for application at context path /examples Default maximum session inactive interval 30 minutes <1 minutes: 1 sessions 1 - <2 minutes: 1 sessions http://localhost:8080/manager/text/expire?path=/examples&idle=num 显示会话统计信息(如上所示)/sessions命令)并使空闲时间超过的会话到期num分钟。要使所有会话到期,请使用&idle=0 . OK - Session information for application at context path /examples Default maximum session inactive interval 30 minutes 1 - <2 minutes: 1 sessions 3 - <4 minutes: 1 sessions >0 minutes: 2 sessions were expired Actually /sessions and /expire是同一命令的同义词。区别在于存在idle parameter. http://localhost:8080/manager/text/start?path=/examples 发出停止的应用程序信号以重新启动,并使其自身再次可用例如,如果应用程序所需的数据库暂时不可用,则停止和启动很有用。通常最好停止依赖此数据库的Web应用程序,而不是让用户不断遇到数据库异常。 如果此命令成功,您将看到如下响应: OK - Started application at context path /examples 否则,响应将从FAIL并包含一条错误消息。可能的问题原因包括: http://localhost:8080/manager/text/stop?path=/examples 发信号通知现有应用程序使其自身不可用,但将其部署。应用程序停止时进入的任何请求都将看到HTTP错误404,此应用程序将在列表应用程序命令中显示为“已停止”。 如果此命令成功,您将看到如下响应: OK - Stopped application at context path /examples 否则,响应将从FAIL并包含一条错误消息。可能的问题原因包括: http://localhost:8080/manager/text/undeploy?path=/examples
WARNING- 此命令将删除其中存在的任何Web应用程序工件appBase此虚拟主机的目录(通常为“webapps”)。这将删除应用程序.WAR(如果存在),应用程序目录来自解压缩形式的部署或.WAR扩展以及来自的XML上下文定义$CATALINA_BASE/conf/[enginename]/[hostname]/目录。如果您只想让应用程序停止服务,您应该使用/stop command instead. 发信号通知现有应用程序正常关闭自身,并将其从Tomcat中删除(这也使得此上下文路径可供以后重用)。此外,如果文档根目录中存在,则将其删除appBase此虚拟主机的目录(通常为“webapps”)。这个命令与逻辑相反/deploy command. 如果此命令成功,您将看到如下响应: OK - Undeployed application at context path /examples 否则,响应将从FAIL并包含一条错误消息。可能的问题原因包括: http://localhost:8080/manager/text/findleaks[?statusLine=[true|false]] 查找泄漏诊断尝试识别在停止,重新加载或取消部署时导致内存泄漏的Web应用程序。应始终使用分析器确认结果。诊断使用StandardHost实现提供的其他功能。如果使用不扩展StandardHost的自定义主机,它将无法工作。 从Java代码中明确触发完整的垃圾收集被记录为不可靠。此外,根据所使用的JVM,还有禁用显式GC触发的选项,例如-XX:+DisableExplicitGC。如果要确保诊断程序成功运行完整的GC,则需要使用GC日志记录,JConsole或类似工具进行检查。 如果此命令成功,您将看到如下响应: /leaking-webapp 如果您希望在响应中看到状态行,请包括statusLine请求中的查询参数,值为true. 已停止,重新加载或取消部署的Web应用程序的每个上下文路径,但先前运行的哪些类仍然加载到内存中,从而导致内存泄漏,将在新行上列出。如果应用程序已多次重新加载,则可能会多次列出。 如果命令不成功,响应将以响应开始FAIL并包含一条错误消息。 http://localhost:8080/manager/text/sslConnectorCiphers SSL Connector / Ciphers诊断列出了当前为每个连接器配置的SSL / TLS密码。对于NIO和NIO2,列出了各个密码套件的名称。对于APR,返回SSLCipherSuite的值。 响应将如下所示: OK - Connector / SSL Cipher information Connector[HTTP/1.1-8080] SSL is not enabled for this connector Connector[HTTP/1.1-8443] TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA TLS_DHE_RSA_WITH_AES_128_CBC_SHA TLS_ECDH_RSA_WITH_AES_128_CBC_SHA TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA ... http://localhost:8080/manager/text/sslConnectorCerts SSL Connector / Certs诊断列出了当前为每个虚拟主机配置的证书链。 响应将如下所示: OK - Connector / Certificate Chain information Connector[HTTP/1.1-8080] SSL is not enabled for this connector Connector[HTTP/1.1-8443]-_default_-RSA [ [ Version: V3 Subject: CN=localhost, OU=Apache Tomcat PMC, O=The Apache Software Foundation, L=Wakefield, ST=MA, C=US Signature Algorithm: SHA256withRSA, OID = 1.2.840.113549.1.1.11 ... http://localhost:8080/manager/text/sslConnectorTrustedCerts SSL Connector / Certs诊断列出了当前为每个虚拟主机配置的可信证书。 响应将如下所示: OK - Connector / Trusted Certificate information Connector[HTTP/1.1-8080] SSL is not enabled for this connector Connector[AJP/1.3-8009] SSL is not enabled for this connector Connector[HTTP/1.1-8443]-_default_ [ [ Version: V3 Subject: CN=Apache Tomcat Test CA, OU=Apache Tomcat PMC, O=The Apache Software Foundation, L=Wakefield, ST=MA, C=US ... http://localhost:8080/manager/text/sslReload?tlsHostName=name 重新加载TLS配置文件(证书和密钥文件,这不会触发重新解析server.xml)。要为所有主机重新加载文件,请不要指定tlsHostName parameter. OK - Reloaded TLS configuration for [_default_] http://localhost:8080/manager/text/threaddump 编写JVM线程转储。 响应将如下所示: OK - JVM thread dump 2014-12-08 07:24:40.080 Full thread dump Java HotSpot(TM) Client VM (25.25-b02 mixed mode): "http-nio-8080-exec-2" Id=26 cpu=46800300 ns usr=46800300 ns blocked 0 for -1 ms waited 0 for -1 ms java.lang.Thread.State: RUNNABLE locks java.util.concurrent.ThreadPoolExecutor$Worker@1738ad4 at sun.management.ThreadImpl.dumpThreads0(Native Method) at sun.management.ThreadImpl.dumpAllThreads(ThreadImpl.java:446) at org.apache.tomcat.util.Diagnostics.getThreadDump(Diagnostics.java:440) at org.apache.tomcat.util.Diagnostics.getThreadDump(Diagnostics.java:409) at org.apache.catalina.manager.ManagerServlet.threadDump(ManagerServlet.java:557) at org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:371) at javax.servlet.http.HttpServlet.service(HttpServlet.java:618) at javax.servlet.http.HttpServlet.service(HttpServlet.java:725) ... http://localhost:8080/manager/text/vminfo 编写有关Java虚拟机的一些诊断信息。 响应将如下所示: OK - VM info 2014-12-08 07:27:32.578 Runtime information: vmName: Java HotSpot(TM) Client VM vmVersion: 25.25-b02 vmVendor: Oracle Corporation specName: Java Virtual Machine Specification specVersion: 1.8 specVendor: Oracle Corporation managementSpecVersion: 1.2 name: ... startTime: 1418012458849 uptime: 393855 isBootClassPathSupported: true OS information: ... http://localhost:8080/manager/text/save 如果指定不带任何参数,则此命令将服务器的当前配置保存到server.xml。如果需要,现有文件将重命名为备份。 如果指定了path与已部署的Web应用程序的路径匹配的参数,然后该Web应用程序的配置将保存到中的适当命名的context.xml文件中xmlBase对于当前的主持人。
要使用该命令,必须存在StoreConfig MBean。通常使用。配置 StoreConfigLifecycleListener
. 如果命令不成功,响应将以响应开始FAIL并包含一条错误消息。
从以下链接中,您可以查看有关服务器的状态信息。任何一个 manager-xxx
角色允许访问此页面。 http://localhost:8080/manager/status http://localhost:8080/manager/status/all 以HTML格式显示服务器状态信息。 http://localhost:8080/manager/status?XML=true http://localhost:8080/manager/status/all?XML=true 以XML格式显示服务器状态信息。 首先,您拥有服务器和JVM版本号,JVM提供程序,操作系统名称和编号,后跟体系结构类型。 其次,有关于JVM的内存使用情况的信息。 然后,有关于Tomcat AJP和HTTP连接器的信息。两者都有相同的信息: If you are using /status/all命令,将提供有关每个已部署的Web应用程序的其他信息。 JMX代理Servlet是一个轻量级代理,用于获取和设置tomcat内部。 (或者通过MBean公开的任何类)它的用法不是非常用户友好,但UI对于集成命令行脚本以监视和更改tomcat的内部非常有用。您可以使用代理执行两项操作:获取信息和设置信息。为了让您真正了解JMX代理Servlet,您应该对JMX有一个大致的了解。如果您不知道JMX是什么,那么请准备好混淆。 采取以下形式: http://webserver/manager/jmxproxy/?qry=STUFF Where STUFF是您希望执行的JMX查询。例如,以下是您可能希望运行的一些查询: 您需要对此进行试验以真正了解其功能。如果您提供否qry参数,然后将显示所有MBean。我们真的建议查看tomcat源代码并理解JMX规范,以便更好地理解您可能运行的所有查询。 JXMProxyServlet还支持“get”命令,您可以使用该命令获取特定MBean属性的值。一般形式的get command is: http://webserver/manager/jmxproxy/?get=BEANNAME&att=MYATTRIBUTE&key=MYKEY 您必须提供以下参数: 如果一切顺利,那么它会说OK,否则将显示错误消息。例如,假设我们希望获取当前堆内存数据: http://webserver/manager/jmxproxy/?get=java.lang:type=Memory&att=HeapMemoryUsage 或者,如果您只想要“使用”密钥: http://webserver/manager/jmxproxy/ ?get=java.lang:type=Memory&att=HeapMemoryUsage&key=used 现在你可以查询一个MBean,它是时候去挖掘Tomcat的内部了! set命令的一般形式是: http://webserver/manager/jmxproxy/?set=BEANNAME&att=MYATTRIBUTE&val=NEWVALUE 所以你需要提供3个请求参数: 如果一切正常,那么它会说OK,否则将显示错误消息。例如,假设我们希望立即启动调试ErrorReportValve。以下将调试设置为10。 http://localhost:8080/manager/jmxproxy/ ?set=Catalina%3Atype%3DValve%2Cname%3DErrorReportValve%2Chost%3Dlocalhost &att=debug&val=10 我的结果是(YMMV): Result: ok 如果我传入一个错误的值,这就是我所看到的。这是我使用的URL,我尝试设置调试等于'cow': http://localhost:8080/manager/jmxproxy/ ?set=Catalina%3Atype%3DValve%2Cname%3DErrorReportValve%2Chost%3Dlocalhost &att=debug&val=cow 当我尝试时,我的结果是 Error: java.lang.NumberFormatException: For input string: "cow" The invokecommand允许在MBean上调用方法。该命令的一般形式是: http://webserver/manager/jmxproxy/ ?invoke=BEANNAME&op=METHODNAME&ps=COMMASEPARATEDPARAMETERS
例如,要打电话给findConnectors() method of the Service
use: http://localhost:8080/manager/jmxproxy/ ?invoke=Catalina%3Atype%3DService&op=findConnectors&ps=
除了通过HTTP请求执行Manager命令的能力之外,如上所述,Tomcat包含一组方便的任务定义 Ant
(1.4或更高版本)构建工具。要使用这些命令,必须执行以下设置操作: 要在Ant中使用自定义任务,必须首先使用 depends="compile"> path="${path}" war="file:${build}${path}.war"/> depends="compile"> path="${path}"/> path="${path}"/> 注意:通过上面的导入定义资源任务将覆盖Ant 1.7中添加的资源数据类型。如果您希望使用资源数据类型,则需要使用Ant的命名空间支持进行修改catalina-tasks.xml将Tomcat任务分配给自己的命名空间。 现在,您可以执行类似命令ant deploy将应用程序部署到正在运行的Tomcat实例,或ant reload告诉Tomcat重新加载它。还要注意大多数有趣的值build.xmlfile被定义为可替换属性,因此您可以从命令行覆盖它们的值。例如,您可能会认为将真实管理员密码包含在您的帐户中会带来安全风险build.xml文件的源代码。要避免这种情况,请省略password属性,并从命令行指定它: ant -Dpassword=secret deploy
Using Ant
version 1.6.2
或者以后,Catalina任务提供了在属性或外部文件中捕获其输出的选项。它们直接支持以下子集
AttributeDescriptionRequiredoutput要写入输出的文件的名称。如果错误流也未重定向到文件或属性,则它将显示在此输出中。Noerror应重定向命令标准错误的文件。NologError当您希望在Ant的日志中看到错误输出并且您将输出重定向到文件/属性时,将使用此属性。错误输出将不包含在输出文件/属性中。如果你重定向错误 error
or errorProperty
属性,这将没有任何效果。Noappend是否应附加或覆盖输出和错误文件。默认为false.Nocreateemptyfiles是否应该创建输出和错误文件,即使是空的。默认为true.Nooutputproperty应存储命令输出的属性的名称。除非将错误流重定向到单独的文件或流,否则此属性将包含错误输出。Noerrorproperty应存储命令标准错误的属性的名称。No 还可以指定一些其他属性:
AttributeDescriptionRequiredalwaysLog当您希望查看正在捕获的输出时,将使用此属性,该属性也显示在Ant的日志中。除非您正在捕获任务输出,否则不得使用它。默认为false. 此属性将直接受支持
他们也支持嵌入式 下面是一个示例构建文件摘录,显示了如何使用此输出重定向支持: depends="context.status" if="context.notInstalled"> username="${mgr.username}" password="${mgr.password}" path="${mgr.context.path}" config="${mgr.context.descriptor}"/> depends="context.status" if="context.deployable"> username="${mgr.username}" password="${mgr.password}" update="${mgr.update}" path="${mgr.context.path}" war="${mgr.war.file}"/> outputproperty="ctx.status" username="${mgr.username}" password="${mgr.password}">
WARNING:即使它没有多大意义,并且总是一个坏主意,不止一次调用Catalina任务,严重设置Ant任务取决于链可能导致在同一个Ant运行中多次调用任务,即使不是打算。当您从该任务捕获输出时,应该谨慎行事,因为这可能会导致意外情况: 3、HTML用户友好界面
4、支持的Manager命令
4.1、Common Parameters
4.2、远程部署新的应用程序存档(WAR)
5、从本地路径部署新应用程序
5.1、部署以前部署的Web应用程序
5.2、按URL部署目录或WAR
5.3、从主机appBase部署目录或war
5.4、使用Context配置“.xml”文件进行部署
5.5、Deployment Notes
5.6、Deploy Response
5.7、列出当前部署的应用程序
5.8、重新加载现有应用程序
列出OS和JVM属性
列出可用的全局JNDI资源
Session Statistics
Expire Sessions
启动现有应用程序
停止现有的应用程序
取消部署现有应用程序
发现内存泄漏
查找泄漏诊断会触发完整的垃圾回收。它应该在生产系统中极其谨慎地使用。
连接器SSL / TLS密码信息
连接器SSL / TLS证书链信息
连接器SSL / TLS可信证书信息
重新加载TLS配置
Thread Dump
VM Info
Save Configuration
Server Status
使用JMX代理Servlet
什么是JMX代理Servlet
JMX Query command
JMX Get command
JMX Set command
JMX Invoke command
使用Ant执行Manager命令
任务输出捕获
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Tomcat9.0官方手册中文版(二):部署
- Tomcat9.0官方手册中文版(一):入门介绍
- CUBA Platform 开发者手册中文版发布 ,企业级应用开发平台
- Ceph 文档(中文版)
- [译] Raft 论文(中文版)
- [译] Raft 论文(中文版)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
微信公众号深度解析
魏艳 / 化学工业出版社 / 2017-5 / 49.80元
本书是一本微信公众号营销的教科书,全方位揭秘了微信订阅号、微信服务号、微信企业号三大类型账号的运营管理策略和技巧,有助于企业构建一套全新的微信公众号营销体系,打造一个移动端的商业帝国,是企业和微商必读的微信公众号营销和运营宝典。 《微信公众号深度解析:订阅号+服务号+企业号三号运营全攻略》突出了“新”、“全”、“实战”三大特点,阐述了微信公众号在新形势下的现状、发展趋势和三大类型;微信公众号......一起来看看 《微信公众号深度解析》 这本书的介绍吧!