问题标签 [jersey-1.0]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
39122 浏览

jersey - 如何强制 URIBuilder.path(...) 对“%AD”等参数进行编码?此方法并不总是正确地用百分比编码参数

如何强制URIBuilder.path(...)对参数进行编码,例如"%AD"

方法pathreplacePath并不总是正确地用百分比编码参数segmentURIBuilder

当参数包含字符“%”后跟两个字符共同构成 URL 编码字符时,“%”不编码为“%25”。

例如

"test" 是 " https://dummy.com?param=%AD "
但它应该是 " https://dummy.com?param=%25AD " (字符 "%" 编码为 "%25")

UriBuilderImpl.queryParam(...)当“%”后面的两个字符是十六进制时,该方法的行为如下。即,方法“com.sun.jersey.api.uri.UriComponent.isHexCharacter(char)”对于“%”之后的字符返回true。

我认为 UriBuilderImpl 的行为是正确的,因为我猜它试图不对已经编码的参数进行编码。但在我的场景中,我永远不会尝试使用已经编码的参数创建 URL。

我应该怎么办?

我的 Web 应用程序使用 Jersey,并且在许多地方我使用类 UriBuilder 构建 URI 或调用对象的方法getBaseUriBuilderUriInfo

每次调用方法时,我都可以将“%”替换为“%25” queryParamreplaceQueryParam或者segment。但我正在寻找一个不那么繁琐的解决方案。

如何让 Jersey 返回我自己的 UriBuilder 实现?

super.queryParam(...)我想创建一个扩展 UriBuilderImpl 的类,该类覆盖这些方法并在调用或其他任何操作之前执行此替换。

有什么方法可以让 Jersey 在调用UriBuilder.fromURL(...)UriInfo.getBaseUriBuilder(...) 等时返回我自己的 UriBuilder 而不是 UriBuilderImpl?

看着方法RuntimeDelegate,我想到了扩展RuntimeDelegateImpl。我的实现将覆盖该方法createUriBuilder(...),该方法将返回我自己的UriBuilder,而不是UriBuilderImpl. 然后,我将添加该文件META-INF/services/javax.ws.rs.ext.RuntimeDelegate,并在其中添加我的RuntimeDelegateImpl.

问题是 jersey-bundle.jar 已经包含META-INF/services/javax.ws.rs.ext.RuntimeDelegate指向 的com.sun.jersey.server.impl.provider.RuntimeDelegateImpl,因此容器加载该文件而不是我的javax.ws.rs.ext.RuntimeDelegate. 因此,它不会加载我的RuntimeDelegate实现。

是否可以提供我自己的实现RuntimeDelegate

我应该采取不同的方法吗?

0 投票
4 回答
8747 浏览

java - 我如何告诉 Jersey 客户端在它反序列化的每个类上执行与 @JsonIgnoreProperties(ignoreUnknown = true) 等效的操作?

我有一个类,我正在使用 Jersey 客户端反序列化。这个类有一个看起来像这样的方法:

没有二传手。按原样,这将引发此异常:

我读过这篇文章,事实证明我可以通过在CodedElementModel类上添加这个注释来解决这个问题:@JsonIgnoreProperties(ignoreUnknown = true)

问题是我有很多方法抛出这个异常。有没有办法将 Jersey 客户端配置为好像@JsonIgnoreProperties(ignoreUnknown = true)在每个类上都设置了一样,所以我不必手动注释它们?我不想通过手动添加此注释来更改 ~30 个文件。如果有人在没有 setter 的情况下添加了 getter,这将防止将来出现此类错误。

以下是我创建 Jersey 客户端的方式:

我觉得clientConfig可能有一个设置可以做到这一点,但我不知道如何找到它。

0 投票
0 回答
738 浏览

jersey - Jersey框架的根资源类扫描模式

我在 eclipse 中创建了示例项目并将其部署在 tomcat 中。

我正在使用下面的 jar 文件。

asm-3.1.jar

jersey-core-1.10.jar

jersey-server-1.10.jar

jersey-servlet-1.10.jar

以下是课程。

我的 web.xml

我的疑惑

  1. Jersey 框架如何注入/扫描 JAX-RS 资源。如果我们没有明确提供类名

  2. 一些文档说(下面提供了链接),我们必须显式注册包名称以告诉 Jersey 框架,以便它可以扫描这些包并注入 AX-RS 资源。

链接 1:https ://jersey.java.net/documentation/latest/deployment.html#deployment.servlet.2

链接 2:http ://docs.oracle.com/cd/E19776-01/820-4867/ggnxs/index.html

即使我从 MyApplication 类中删除方法 getClasses(),它也可以正常工作。我的疑问是它如何找到资源 HelloWorldResource.java ?

这是我的 Tomcat 的 catalina.out 日志文件的快照:

在上面的代码中,我没有明确告诉框架注册我的类 HelloWorldResource,因为我已经评论了 getClasses 方法。它是否通过 @Path("helloworld") @Produces("text/plain") 之类的注释进行扫描?

谢谢,

尼拉吉

0 投票
1 回答
1859 浏览

java - Jersey 1.x 将加号替换为空格符号。我怎样才能防止这种情况?

我正在使用球衣客户端向我的球衣服务器发送查询参数。这是查询:?sort=id+ASC

但在我检索此查询参数的代码中return uriInfo.getQueryParameters().getFirst("sort");,此值的计算结果为id ASC。为什么会发生这种情况,我该如何预防?

0 投票
1 回答
823 浏览

java - 阐明:在我的 wadl 中,为什么我所有的资源路径属性都以“/rest”为前缀?

资源类定义如下:

我有一个这样定义的方法:

当我运行 maven 命令运行enunciate doc 目标时,生成的 wadl 如下所示:

这个“/rest/”在资源路径中来自哪里?我在我的项目中到处搜索,没有任何参考。

这是我的 enunciate.xml 配置文件:

0 投票
0 回答
382 浏览

java - Jersey 为无效资源路径自定义错误处理?

这是一个非常相似的问题,但我的问题更具体。

如果我输入了无效的资源路径,例如 /foobar,它会返回 404。我希望它返回 400。400 是“错误请求”。我觉得这对客户来说更有用。我如何配置 Jersey 1.x 来代替它?

0 投票
1 回答
55 浏览

java - 泽西岛:WAR 没有收到 POST

我有以下 Servlet:

我有以下客户:

PHP 中的服务器测试代码 - 获取“Key”的字符串值并将该值输出到文件

PHP 测试脚本有效。它接收到帖子,我可以在服务器上的文本文件中查看 data1。然而,Servlet @POST 方法似乎没有被调用。

反正有调试这个吗?有人对如何使它起作用有任何想法吗?我不确定是否应该使用@FormParam 或@QueryParam 或@HeaderParam。@POST 方法是如何被调用的?

0 投票
1 回答
5666 浏览

rest - 对多个 PATH 使用 Single Jersey REST 类

我已经开始使用 JAX-RS 开发 REST 服务。使用 Jersey 非常简单,但是我在使用 Spring MVC 和 Jersey REST 类时遇到的一个区别是,Spring 支持必须忽略 Root Path 元素并在方法级别具有单独的路径映射。因此,如果有上传/下载功能,我可能不希望有 2 个类,一个是上传,一个是下载,Jersey 现在要求我这样做,因为在类级别可能只有 1 个根路径,如下所示:

如果我忽略根级别@Path 即在类级别,Jersey 在启动服务器时无法识别我的类。这是我想要实现的目标:

任何线索将不胜感激。

谢谢

0 投票
1 回答
502 浏览

java - 使用 launch4j 生成的可执行文件中的 Grizzly / Jersey 资源

当 Web 服务器从 launch4j 生成的可执行文件运行时,我在运行带有 Jersey Resources 的 Grizzly Web 服务器时遇到问题。资源在 launch4j 生成的可执行文件中,但程序无法访问它们。如果我直接从 jar 执行它,它运行没有问题。但我需要提供一个 .exe 来运行网络服务器。

网络服务器代码:

我在 my.packages.resources 中有一个名为 InfoRestResource 的类,代码如下:

launchj4 Maven 配置:

输出

当我运行 .exe 时:

另一方面,当我从 Jar 运行它时,它工作正常,我得到以下输出:

我真的很感激任何帮助解决这个问题!谢谢!

0 投票
3 回答
818 浏览

java - 有没有办法记录每个 Web 服务调用到泽西岛的应用程序

我在我的应用程序中使用Jersey 1.8。现在,有很多服务类。有没有办法记录所有来自不同服务的请求。这意味着,是否可以创建类似于通用过滤器的东西,所有请求都将通过该过滤器发送,我可以从中跟踪和记录所有传入请求。