发布于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 的类似问题/错误 - 但没有发现类似的问题。我很难相信这个简单(基本用法)示例中甚至可能存在错误。
感谢帮助。
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黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!