Java tomcat 7.0.56 windows(eclipse)尾部追加斜杠;tomcat 7.0.28 linux(已部署的war)未附加尾部斜杠
我不熟悉配置Tomcat服务器,映射Java web应用程序路径 我得到了一个Apache CXF web服务,它使用以下web.xml文件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:/
<?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中以不正确的、重叠的映射方式工作?