java - RESTEasy - 某些方法 URL 地址不起作用

标签 java rest jboss path resteasy

问题很简单,但是这意味着更奇怪。

我的方法定义如下(例如)

@GET
@GZIP
@Path("/v2/something/anything/goes/here")
void getData(@BeanParam ApiCommonRequest req) throws Exception;

当远程主机调用此 URL 地址时,JBoss 响应:“无法找到完整路径的资源:http://localhost/rest/v2/something/anything/goes/here

有趣的是(经过几个小时的调查后我发现)当我将 URL 开头(在服务器 @Path 定义中)从“/v2”更改为“/v3”时,它最终正常工作。

所以以下完全有效:

@GET
@GZIP
@Path("/v3/something/anything/goes/here")
void getData(@BeanParam ApiCommonRequest req) throws Exception;

我尝试了所有可以想到的组合,但没有“v2”和类似的不是具体问题 - 它也受到其他 URL 地址的困扰 - 没有太多意义它具体出了什么问题。

它甚至有助于将 URL 部分分离为不同的 @Path 注释 - 意思是:当我有相同的 URL 工作和不工作时 - 仅通过将部分 URL 放入父类 @Path 定义。这也“修复了它”(再一次 - 相同的 URL 地址工作和不工作受 @Path 注释的写得有点不同的影响)。因此,这似乎意味着 URL 地址本身不会出现问题 - 就像某些 URLRewrite 配置一样。 (我也检查过,是否可能存在一些冲突)

所以这不起作用:

@Path("/rest")
public interface MyAPI {
  @GET
  @GZIP
  @Path("/v2/something/anything/goes/here")
  void getData(@BeanParam ApiCommonRequest req) throws Exception;
}

但这有效!:

@Path("/rest/v2")
public interface MyAPI {
  @GET
  @GZIP
  @Path("/something/anything/goes/here")
  void getData(@BeanParam ApiCommonRequest req) throws Exception;
}

需要将“/v2/something/anything/goes/here”更改为“/v3/something/anything/goes/here”没有任何意义,也不是真正的解决方案。

这可能是 RESTEasy JBOSS 的错误吗?我确实投入了大量时间在互联网上挖掘 JBOSS 的类似问题/错误 - 但没有发现类似的情况。我很难相信这个简单(基本用法)的示例中甚至可能存在错误。

  • 有一件事可能会有所帮助,那就是在启动期间观察 JBOSS RestEasy 方法安装是否有一些错误消息或任何日志条目? JBOSS 日志中未发现错误。

感谢您的帮助。

附注当我使用 @Context Dispatcher 制作基于反射的 REST 文档时(我通过 JBOSS 获取了所有可用的 REST 方法),这些非工作 URL 方法通常被提到为已部署:-))

最佳答案

不知道这是否有帮助,但我也遇到过类似的问题。 This文章可能对你有帮助。阅读完所有内容后,我找到了所有问题的解决方案。答案是从 Resteasy 版本 3.0.9.Final 切换回 2.3.5.Final。它并不完美,事实上它很丑,但效果很好......

关于java - RESTEasy - 某些方法 URL 地址不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31360159/

相关文章:

java - Spring Boot Actuator 指标 mem 和 mem.free

java - 下载图像时 Blackberry Http 连接超时。为什么?

java - 没有蓝图 xml 的 Karaf 中的 RESTful 服务

java - 无法索引类 module-info.class atlog4j-api.jar : java. lang.IllegalStateException : Unknown tag! pos=4 poolCount = 24

java - 在 Java 中复制构造函数而不是 Clone

java - GWT 将 div 添加到面板中

python - Cherrypy REST 教程返回 TypeError : _expose() takes exactly 1 argument

iphone - RESTKit 是 ASIHTTPRequest 的良好替代品吗?

deployment - JBoss 远程部署

java - 迁移到 JBoss 6.1,为 cxf 添加 spring