gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 08:10:59 25 4
gpt4 key购买 nike

问题很简单,但是意思比较奇怪。

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

@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/

25 4 0
文章推荐: java - 如何在 javafxports-Application 中使用外部 Jar
文章推荐: java - 为什么 JDialog 显示不正确
文章推荐: java - 将 String、ArrayList 等对象添加到 List