当前位置: 首页 > 知识库问答 >
问题:

找不到Jersey REST webservice子资源

司马同
2023-03-14

起初,在我的web服务器中,我只有一个REST servlet。类似于:

@Path("/")
public class Controller {
  @GET
  @Produces({ MediaType.TEXT_HTML })
  public Response get(@Context UriInfo info) throws Exception {
    ...
  }

  @GET
  @Path("resource1")
  @Produces({ MediaType.TEXT_HTML })
  public Response resource1() throws Exception {
    ...
  }

  ...

 }

和web.xml:

 <servlet>
    <servlet-name>rest</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>xpto.mypack1;xpto.mypack2</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

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

但是后来我想向服务器添加一些静态html,所以我将servlet映射更新为/rest/*

控制器servlet类的@path指令从“/”到“/rest”。一切都很好,但是controller的子资源或方法与@path指令停止工作…IE:

    null

我使用了trace util,得到了以下结果:

对于/[app-name]/rest(它有效):

  • X-Jersey-Trace-002接受右手路径java.util.regex.matcher[pattern=/REST(/.*)?region=0,11 lastmatch=/REST]:“/REST”->“/REST”:“
  • X-Jersey-Trace-003接受资源:“rest”->@path(“/rest”)xpto.mypack.controller
  • X-Jersey-Trace-000接受根资源类:“/REST”
  • X-Jersey-Trace-001匹配路径“/rest”->“/application.wadl(/.)?”,“/rest(/.)?”
    null

我希望有人能帮助我。

共有1个答案

司马庆
2023-03-14

如果将servlet映射定义为/rest/*,则不要在资源的@path注释中重复/rest。即。您所需要做的就是保持控制器原样(在上面的问题中),只需更改servlet映射即可。资源可用的URL为:

<application_context_path>/<servlet_mapping>

因此,如果将@path注释从@path(“/”)更改为@path(“rest”),并且还将servlet映射更改为/rest,那么您的资源将在以下位置可用:

<application_context_path>/rest/rest/*
 类似资料:
  • 我正在做一个项目,编译并运行我的IDE工作正常。所有资源都找到了,它正常工作。然而,当我构建我的. jar时,它能够找到一些资源,但不是全部。我的项目结构看起来是这样的: 当我运行jar文件时,它能够找到图像并使用它们,但是当我尝试访问html文件时,它不会打开。下面是jar的项目结构; 我以前从未处理过jar文件,所以这似乎是我犯的一个非常明显的错误。感谢您的帮助,谢谢! 编辑:访问找不到的文件

  • 我正在使用ADT 我的styles.xml:

  • 问题内容: 出了点问题,这非常令人沮丧。我在Velocity的主页上读到,当我运行webapp时,应设置一些属性。我已经做到了,但是无论我做什么,我都会遇到相同的错误。 这是我设置道具并使用速度的地方 这些文件当然保存在/ WEB-INF / mailtemplates /中。 如果我用这个我得到这个错误: 感谢您的时间:) 问题答案: 您正在使用Webapp资源加载器,该资源加载器适用于Velo

  • 问题内容: 我在使用findViewById(id)时遇到了一个奇怪的问题。即使资源肯定存在,它也会返回未找到的资源。它是布局中的一个Textview,与另一个textview相邻,我可以通过id找到其中一个textview,但另一个显示未找到资源。有什么可能会发生这种情况吗? 问题答案: 尝试清理您的项目或发布一些代码。 如果您正在使用Eclipse,则有时无法正确地重新生成ID。这需要清理项目

  • 我从github导入了一个工作项目,由于styles.xml和build.grable存在问题,我发现自己无法运行/rebuild project。 以下是我访问过的关于这个问题的链接: Theme.appcompat.light.DarkActionBar-找不到资源 Android错误:找不到资源-theme.appcompat.light.DarkActionBar和Android虚拟设备

  • 这个问题非常相似(如果不是相同的话): “找不到基本名称消息的捆绑包”错误 为MessageSource找不到ResourceBundle[消息]:无法为基名消息找到bundle 基本上,我有以下代码: 当我试着跑的时候 我试图更改文件名,在代码中更改文件名,添加资源文件夹(但我认为它已经被正确地包括在内),并放置消息。属性文件位于所有可能的文件夹中。奇怪的是,eclipse本身显示了这个错误,它