RestEasy配置中有多个前缀

时间:2013-04-26 12:26:38

标签: java jersey resteasy

我正在使用Jboss RestEasy Web服务,我需要多个url来映射到该Web服务。我是否有可能为'resteasy.servlet.mapping.prefixconfigured

设置多个前缀

这是我在web.xml中的配置

 <servlet-name>REST Service</servlet-name>
      <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servletclass>
      </servlet>

      <servlet-mapping>
        <servlet-name>REST Service</servlet-name>
        <url-pattern>/rest/*</url-pattern>
      </servlet-mapping>

      <servlet-mapping>
        <servlet-name>REST Service</servlet-name>
        <url-pattern>/service/*</url-pattern>
      </servlet-mapping> 

      <context-param>
        <param-name>resteasy.servlet.mapping.prefix</param-name>
        <param-value>/rest</param-value>
      </context-param>

我想为“/ rest”和“/ service”前缀提供服务

2 个答案:

答案 0 :(得分:5)

为了进行快速测试,我将<context-param>更改为<init-param>内的<servlet>,并在RESTeasy 3.0.5中将其更改为我。

因此,解决方法可能是定义两个具有相同配置的servlet,并且仅在resteasy.servlet.mapping.prefix的{​​{1}}值上有所不同,并为它们定义两个映射。

请注意,现在你有两个 servlet,它们过着自己的生活(例如单独的上下文和生命周期),这在某些情况下可能是不可接受的。

更新:另请看一下这个答案,类似于我的答案,虽然更详细(我自己没试过):https://stackoverflow.com/a/25487574/283519

答案 1 :(得分:1)

@pwes非常感谢! 我希望公开两个RESTful服务。 说/ api1和/ api2。 你的建议适用于OP想要的东西和我想要的东西。

以下是每个servlet的配置方式:

<servlet>
    <servlet-name>entity-manager</servlet-name>
    <servlet-class>
        org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
    </servlet-class>
    <init-param>
        <param-name>resteasy.servlet.mapping.prefix</param-name>
        <param-value>/api1</param-value>
    </init-param>
</servlet>

第二个:

<servlet>
    <servlet-name>entity-manager</servlet-name>
    <servlet-class>
        org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
    </servlet-class>
    <init-param>
        <param-name>resteasy.servlet.mapping.prefix</param-name>
        <param-value>/api2</param-value>
    </init-param>
</servlet>