Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将SpringServlet映射到root,并在root中提供静态内容?_Spring_Rest_Servlets_Static - Fatal编程技术网

如何将SpringServlet映射到root,并在root中提供静态内容?

如何将SpringServlet映射到root,并在root中提供静态内容?,spring,rest,servlets,static,Spring,Rest,Servlets,Static,我有一个JAX-RSSpring服务,我在其中添加了swagger。Swagger构建了服务的json描述,该描述必须作为静态文件提供。我还包括了swagger ui,可以很好地查看json描述。我的问题是,当将servlet路径映射到根目录时,它将不会为/swagger下的静态swagger文件提供服务。服务很好。如果我将服务映射到非根路径,如/rest/*,这两种方法都可以使用。我宁愿在中间有一条没有“休息”的好路线。< /P> 因此,当我有/时,服务位于根/处,转到/swagger/返回4

我有一个JAX-RSSpring服务,我在其中添加了swagger。Swagger构建了服务的json描述,该描述必须作为静态文件提供。我还包括了swagger ui,可以很好地查看json描述。我的问题是,当将servlet路径映射到根目录时,它将不会为/swagger下的静态swagger文件提供服务。服务很好。如果我将服务映射到非根路径,如/rest/*,这两种方法都可以使用。我宁愿在中间有一条没有“休息”的好路线。< /P> 因此,当我有
/
时,服务位于根
/
处,转到
/swagger/
返回404 not found。如果我更改为
/rest/*
,则服务在
/rest/
下工作,并且在
/swagger
上可以看到swagger。是否可以在不需要将服务置于
/rest/*
下的情况下进行此工作

我在春季3.0.7版和泽西1.8版。编辑:另外,它在Weblogic 10.3.6.0上运行

web.xml:


数据访问服务
com.my.Startup
org.springframework.web.context.ContextLoaderListener
上下文配置位置
类路径:application-context.xml
本地部署
符合事实的
泽西servlet
com.sun.jersey.spi.spring.container.servlet.SpringServlet
com.sun.jersey.config.property.packages
com.my.rs
com.sun.jersey.api.json.POJOMappingFeature
符合事实的
1.
泽西servlet
/

我通过使用过滤器定义而不是servlet定义来实现这一点。此外,JERSEY 1.8中还有一个bug,导致我的挂载点需要一个尾部正斜杠(),所以我更新为JERSEY 1.19。当我的项目的功能稳定时,我计划进一步更新到2.x和Spring4.x

下面是web.xml,它允许我在与我的服务相同的根目录中拥有一个招摇过市的ui视图:

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

<display-name>Data Access Service</display-name>

<listener>
    <listener-class>com.my.Startup</listener-class>
</listener>
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:application-context.xml</param-value>
</context-param>
<context-param>
    <param-name>local-deployment</param-name>
    <param-value>true</param-value>
</context-param>

<filter>
    <filter-name>jersey</filter-name>
    <filter-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</filter-class>
    <init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>com.my.rs</param-value>
    </init-param>
    <init-param>
        <param-name>com.sun.jersey.config.feature.Redirect</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <param-name>com.sun.jersey.config.feature.FilterForwardOn404</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>jersey</filter-name>
    <url-pattern></url-pattern>
</filter-mapping>

数据访问服务
com.my.Startup
org.springframework.web.context.ContextLoaderListener
上下文配置位置
类路径:application-context.xml
本地部署
符合事实的
运动衫
com.sun.jersey.spi.spring.container.servlet.SpringServlet
com.sun.jersey.config.property.packages
com.my.rs
com.sun.jersey.config.feature.Redirect
符合事实的
com.sun.jersey.config.feature.FilterForwardOn404
符合事实的
com.sun.jersey.api.json.POJOMappingFeature
符合事实的
运动衫

阅读该章和文档中的下一章:是的,这是我在发布之前尝试过的文档部分,但它不起作用。即使添加到application-context.xml也没有什么区别。我没有自定义的默认servlet。我应该补充一点,这是在WebLogic10.3.6.0上运行的。谢谢你的帮助!啊,我刚刚重读了你的问题。映射到/的不是spring dispatcher servlet,而是jersey servlet,因此无法工作。