tomcat安装后,在“服务”中为啥没有?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tomcat安装后,在“服务”中为啥没有?相关的知识,希望对你有一定的参考价值。

参考技术A 你下载的Apache Tomcat版本是没有windows服务的。Tomcat有安装版和解压缩版两种版本,安装版除了提供一个图形界面的后台和Windows服务外,其他的和解压缩版没有区别。要想压缩版添加Tomcat服务的话,网上搜索“添加解压缩版Tomcat到系统服务”,其文中有介绍方法:运行cmd打开控制台,进入Tomat目录/bin文件夹,输入如下命令运行。service.bat install程序提示:The service 'Tomcat5(或者你修改一后的SERVICE_NAME)' has been installed,说明服务Tomcat已经被安装成功。顺便说一下,运行service.bat remove可以移除服务。例子:TOMCAT的目录为:E:\Program Files\Apache Software Foundation\Apache Tomcat 7.0.14\bin\service.bat运行cmd打开控制台,依次输入:①e:输入完后按回车键②cd program files\apache software foundation\apache tomcat 7.0.14\bin输入完后按回车键③service.bat install输入完后按回车键这样名为Apache Tomcat 7就被加入服务里了

为啥我的 Tomcat 部署的 web.xml 没有被主机服务器读取?

【中文标题】为啥我的 Tomcat 部署的 web.xml 没有被主机服务器读取?【英文标题】:Why is my Tomcat-deployed web.xml not being read by the host server?为什么我的 Tomcat 部署的 web.xml 没有被主机服务器读取? 【发布时间】:2015-05-20 02:04:14 【问题描述】:

我在服务器中托管了一个功能齐全的 Web 应用程序。它使用 localhost 可以完美运行,但是当我在服务器上启动 Tomcat 7.0.59 并尝试从本地计算机访问应用程序时,它会加载 html 和 css,然后在尝试访问第一个 Controller Servlet 时中断:

function loadRows(fullAccess)

     var review_ID = location.search.split('review=')[1];

     $.ajax(
            url : "LoginController",
            type : "post",
            data : 
                "reviewID" : review_ID 
            ,
            ...

所以我很确定它没有正确读取 web.xml,这是我的 Servlets/Servlet-Mappings 定义的地方。

这是我的 web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">

  <display-name>MVCDemo</display-name>
  <servlet>
     <servlet-name>LoginController</servlet-name>
     <servlet-class>mvcdemo.controllers.LoginController</servlet-class>
  </servlet>
  <servlet-mapping>
     <servlet-name>LoginController</servlet-name>
     <url-pattern>/LoginController</url-pattern>
  </servlet-mapping>
  <servlet>
     <servlet-name>UpdateController</servlet-name>
     <servlet-class>mvcdemo.controllers.UpdateController</servlet-class>
  </servlet>
  <servlet-mapping>
     <servlet-name>UpdateController</servlet-name>
     <url-pattern>/UpdateController</url-pattern>
  </servlet-mapping>
  <servlet>
     <servlet-name>SubmitController</servlet-name>
     <servlet-class>mvcdemo.controllers.SubmitController</servlet-class>
  </servlet>
  <servlet-mapping>
     <servlet-name>SubmitController</servlet-name>
     <url-pattern>/SubmitController</url-pattern>
  </servlet-mapping>
</web-app>

我什至尝试添加

<welcome-file-list>
  <welcome-file>foo.jsp</welcome-file>  
</welcome-file-list>

查看应用程序是否会在尝试查找 foo.jsp 而找不到它时中断(实际文件称为 index.jsp),但 index.jsp 仍在呈现,因此 web.xml 显然没有被加载。任何想法为什么?谢谢!

【问题讨论】:

重新启动浏览器并使用 foo.jsp 重试。你应该得到一个错误。 catalina.out 中的任何错误? catalina.out 有:“Error: Could not find or load main class org.apache.catalina.startup.Bootstrap Error: Could not find or load main class org.apache.catalina.startup.Bootstrap catalina.out 中的错误表明您的 Tomcat 安装或部署存在问题。您是否在此 Tomcat 实例上运行任何其他 webapp?你得到默认的“它有效!”访问基本主机 URL 时的页面? 当我在浏览器中访问 IPaddress:8080 时,它会出现在 Tomcat 的主页上(服务器状态、管理器应用程序、主机管理器等)。我没有在 Tomcat 上运行任何其他应用程序。 【参考方案1】:

尝试导入项目并在将所有文件复制到新项目时注意。

基本上你需要覆盖 web.xml 部署描述符。

【讨论】:

【参考方案2】:

Web.XML

web.xml 文件源自 Servlet 规范,并且 包含用于部署和配置组件的信息 您的网络应用程序。第一次配置Tomcat时, 这是您可以为中心组件定义 servlet 映射的地方 比如JSP。在 Tomcat 中,此文件的功能与 在 Servlet 规范中描述。 唯一的分歧是 Tomcat 对这个文件的处理是用户可以选择 利用 TOMCAT-HOME/conf/web.xml 定义所有的默认值 上下文。如果使用此方法,Tomcat 将使用 TOMCAT-HOME/conf/web.xml 作为基础配置,可以 被特定于应用程序的 WEB-INF/web.xml 文件覆盖。

来源:https://www.mulesoft.com/tcat/tomcat-configuration

我认为在你的情况下,Tomcat 不会覆盖 WEB-INF/web.xml,而是在 conf 文件夹中查找。

【讨论】:

以上是关于tomcat安装后,在“服务”中为啥没有?的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Tomcat 8 中安装地理服务器

为啥 JDBC 驱动程序调用在 Tomcat 中有效,但在 JBOSS 中无效

windows下安装多个tomcat服务

Linux下安装Tomcat7

如何把应用程序打包呀

Centos7安装配置tomcat 9并设置自动启动