首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ServletPath从RESTEasy 3.0.10.Final变为3.0.23.Final

ServletPath从RESTEasy 3.0.10.Final变为3.0.23.Final
EN

Stack Overflow用户
提问于 2017-06-05 15:58:17
回答 1查看 122关注 0票数 1

我已经用新版本的RESTEasy升级了Wildfli8.2.1。Wildfly可以使用SNI支持(在3.0.10.Final版本中不可用)。因此,我在我的/wildfly/modules/system/layers/base目录中复制了resteasy-jboss 3.0.23.Final内容。但现在我有了不同的行为!我的休息服务没有被调用。当我检查上下文/servlet路径时,我发现了3.0.10.Final和3.0.23.Final版本之间的不同值:

对于RESTEasy 3.0.10,values 有以下值:

代码语言:javascript
复制
        String contextPath = request.getContextPath(); // = "/myApp"
        String servletPath = request.getServletPath(); // = "/api"
        String pathInfo = request.getPathInfo(); // = "/auth"

关于RESTEasy 3.0.23,我有:

代码语言:javascript
复制
        String contextPath = request.getContextPath(); // = "/myApp"
        String servletPath = request.getServletPath(); // = "/api/auth"
        String pathInfo = request.getPathInfo(); // = null

我的JBos-web.xml:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
    <context-root>/myApp</context-root>
</jboss-web>

而且我的web.xml中没有servlet映射。我所拥有的只是用javax.ws.rs.core.Application注释扩展@ApplicationPath的类:

代码语言:javascript
复制
@ApplicationPath("/api")
public class RESTActivator extends Application {
    private final Set<Class<?>> classes;

    public RESTActivator() {
        HashSet<Class<?>> c = new HashSet<>();
        c.add(ARestService.class);
        c.add(AnotherRestService.class);
        classes = Collections.unmodifiableSet(c);
    }

    @Override
    public Set<Class<?>> getClasses() {
        return classes;
    }
}
EN

回答 1

Stack Overflow用户

发布于 2017-06-06 13:28:09

request.getServletPath()request.getPathInfo()在JAX上下文中的行为不是由规范来定义的,所以我猜实现可以自由地管理它们。

如果这些路径组件对您很重要,那么可以考虑通过@javax.ws.rs.core.Context使用注入的@javax.ws.rs.core.Context服务。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44372885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档