Java tomcat 7.0.56 windows(eclipse)尾部追加斜杠;tomcat 7.0.28 linux(已部署的war)未附加尾部斜杠

Java tomcat 7.0.56 windows(eclipse)尾部追加斜杠;tomcat 7.0.28 linux(已部署的war)未附加尾部斜杠,java,eclipse,web-services,tomcat,servlets,Java,Eclipse,Web Services,Tomcat,Servlets,我不熟悉配置Tomcat服务器,映射Java web应用程序路径 我得到了一个Apache CXF web服务,它使用以下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:/

我不熟悉配置Tomcat服务器,映射Java web应用程序路径

我得到了一个Apache CXF web服务,它使用以下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" id="WebApp_ID" version="3.0">
  <display-name>KiiktatServices webszolgáltatás (Apache CXF)</display-name>
  <servlet>
    <description>Apache CXF Endpoint</description>
    <display-name>cxf</display-name>
    <servlet-name>cxf</servlet-name>
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
    <init-param>
      <param-name>static-welcome-file</param-name>
      <param-value>/services.html</param-value>
    </init-param>
    <init-param>
      <param-name>static-resources-list</param-name>
      <param-value>/services.html</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>cxf</servlet-name>
    <url-pattern>/*</url-pattern>
  </servlet-mapping>
<!--   <servlet-mapping> -->
<!--     <servlet-name>cxf</servlet-name> -->
<!--     <url-pattern>/services/*</url-pattern> -->
<!--   </servlet-mapping> -->
<!--   <servlet-mapping> -->
<!--    <servlet-name>default</servlet-name> -->
<!--    <url-pattern>/*</url-pattern> -->
<!--   </servlet-mapping> -->
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/css/*</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/js/*</url-pattern>
  </servlet-mapping>
  <session-config>
    <session-timeout>60</session-timeout>
  </session-config>
<!--    <welcome-file-list> -->
<!--        <welcome-file>services.html</welcome-file> -->
<!--    </welcome-file-list> -->
</web-app>

基克塔塔塔斯(阿帕奇CXF)
ApacheCXF端点
cxf
cxf
org.apache.cxf.transport.servlet.CXFServlet
静态欢迎文件
/services.html
静态资源列表
/services.html
1.
cxf
/*
违约
/css/*
违约
/js/*
60
默认情况下,apachecxfwebservice提供统一的webservices描述页面 我需要将其更改为一个信息量更大、样式更新颖的页面。 有可能向接受静态欢迎文件的CXF提供az init param。 我将cxfservlet映射到
/*
,如上
web.xml
代码部分所示

我还有一些静态CSS、JS资源,我必须将它们映射到
default
servlet才能使其工作,当我将其映射到
cxf
servlet时,它就不工作了

当我在Eclipse中的localhost Windows Tomcat 7.0.56服务器上启动此组合时,它会在contextpath的末尾添加一个尾随斜杠,因此
services.html
与CSS、JS一起显示

在此之后,我从项目创建了一个WAR。WAR中捆绑了一个
(WebContent/)META-INF/context.xml
,但我在
conf/Catalina/localhost/{WAR.name}.xml
中也得到了一个单独的context.xml(命名为WAR的名称),它优先于在context.xml中捆绑的,在context.xml中我引用数据库连接,用于虚拟主机。但是我没有在
中定义docBase和path,所以它们不相关

当我将此WAR部署到Debian上的Tomcat-7.0.28时,它不会将尾部斜杠放在路径的末尾。
services.html
静态html页面仍然显示,但是JS、CSS被破坏了。在我手动添加一个尾随斜杠后,页面正确显示

web.xml中有注释部分,它们是另一个解决方案的一部分。在这里,我将webservice映射到
/services/*
cxf
servlet,而不是使用其内置的
静态欢迎文件
init参数。另外,我正在使用
欢迎文件
作为
默认
servlet,并将默认servlet映射到
/*
。结果是一样的,它在我的本地开发人员机器上放置了尾随斜杠,工作正常,但在Linux Tomcat上部署后没有像WAR那样放置尾随斜杠

我已经为这个问题挣扎了好几天了。我知道也有类似的问题,我在这里和其他地方搜索过,但没有找到解决方案

这里说明,如果我得到了
/*
映射,那么Tomcat不会重定向,但它在本地主机窗口上重定向。。。


您有什么想法吗?

如果您将某些内容映射到
/*
,然后将
DefaultServlet
的映射更改为
/
以外的内容,您可能会破坏整个服务器。
DefaultServlet
处理一些事情,如在涉及目录时添加尾部斜杠、解析欢迎文件等。通过让您的
cxf
servlet处理所有事情,您已经超越了该配置


我想您在映射
cxf
servlet时应该更加小心。

谢谢,我根据您的建议使它工作了。我将CXFServlet映射到“/services/*”的url模式,并将DefaultServlet映射到“/”。如果我将cxf映射到“/*”,将DefaultServlet映射到“/”,那么它也可以工作,但是如果我不让cxf与静态资源路径混合,那么它会更干净。我现在不明白的是,为什么它在Eclipse中以不正确的、重叠的映射方式工作?