程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

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

发布于2021-11-28 10:30     阅读(802)     评论(0)     点赞(7)     收藏(1)


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

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

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

当远程主机调用这个 URL 地址时,JBoss 响应:“Could not find resource for full path: 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 的日志中没有发现错误。

感谢帮助。

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


解决方案


不知道这是否会有所帮助,但我遇到了类似的问题。这篇文章或许能帮到你。阅读完所有内容后,我找到了解决所有问题的方法。答案是从 resteasy 版本 3.0.9.Final 切换回 2.3.5.Final。它并不完美,实际上它很丑陋,但效果很好......



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.javaheidong.com/blog/article/337848/ae46196a2ab7bd0f4384/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

7 0
收藏该文
已收藏

评论内容:(最多支持255个字符)