问题标签 [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.
jersey - 如何强制 URIBuilder.path(...) 对“%AD”等参数进行编码?此方法并不总是正确地用百分比编码参数
如何强制URIBuilder.path(...)
对参数进行编码,例如"%AD"
?
方法path
和replacePath
并不总是正确地用百分比编码参数segment
。URIBuilder
当参数包含字符“%”后跟两个字符共同构成 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 或调用对象的方法getBaseUriBuilder
。UriInfo
每次调用方法时,我都可以将“%”替换为“%25” queryParam
,replaceQueryParam
或者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
?
我应该采取不同的方法吗?
java - 我如何告诉 Jersey 客户端在它反序列化的每个类上执行与 @JsonIgnoreProperties(ignoreUnknown = true) 等效的操作?
我有一个类,我正在使用 Jersey 客户端反序列化。这个类有一个看起来像这样的方法:
没有二传手。按原样,这将引发此异常:
我读过这篇文章,事实证明我可以通过在CodedElementModel
类上添加这个注释来解决这个问题:@JsonIgnoreProperties(ignoreUnknown = true)
。
问题是我有很多方法抛出这个异常。有没有办法将 Jersey 客户端配置为好像@JsonIgnoreProperties(ignoreUnknown = true)
在每个类上都设置了一样,所以我不必手动注释它们?我不想通过手动添加此注释来更改 ~30 个文件。如果有人在没有 setter 的情况下添加了 getter,这将防止将来出现此类错误。
以下是我创建 Jersey 客户端的方式:
我觉得clientConfig
可能有一个设置可以做到这一点,但我不知道如何找到它。
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
我的疑惑
Jersey 框架如何注入/扫描 JAX-RS 资源。如果我们没有明确提供类名
一些文档说(下面提供了链接),我们必须显式注册包名称以告诉 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") 之类的注释进行扫描?
谢谢,
尼拉吉
java - Jersey 1.x 将加号替换为空格符号。我怎样才能防止这种情况?
我正在使用球衣客户端向我的球衣服务器发送查询参数。这是查询:?sort=id+ASC
但在我检索此查询参数的代码中return uriInfo.getQueryParameters().getFirst("sort");
,此值的计算结果为id ASC
。为什么会发生这种情况,我该如何预防?
java - 阐明:在我的 wadl 中,为什么我所有的资源路径属性都以“/rest”为前缀?
资源类定义如下:
我有一个这样定义的方法:
当我运行 maven 命令运行enunciate doc 目标时,生成的 wadl 如下所示:
这个“/rest/”在资源路径中来自哪里?我在我的项目中到处搜索,没有任何参考。
这是我的 enunciate.xml 配置文件:
java - Jersey 为无效资源路径自定义错误处理?
这是一个非常相似的问题,但我的问题更具体。
如果我输入了无效的资源路径,例如 /foobar,它会返回 404。我希望它返回 400。400 是“错误请求”。我觉得这对客户来说更有用。我如何配置 Jersey 1.x 来代替它?
java - 泽西岛:WAR 没有收到 POST
我有以下 Servlet:
我有以下客户:
PHP 中的服务器测试代码 - 获取“Key”的字符串值并将该值输出到文件
PHP 测试脚本有效。它接收到帖子,我可以在服务器上的文本文件中查看 data1。然而,Servlet @POST 方法似乎没有被调用。
反正有调试这个吗?有人对如何使它起作用有任何想法吗?我不确定是否应该使用@FormParam 或@QueryParam 或@HeaderParam。@POST 方法是如何被调用的?
rest - 对多个 PATH 使用 Single Jersey REST 类
我已经开始使用 JAX-RS 开发 REST 服务。使用 Jersey 非常简单,但是我在使用 Spring MVC 和 Jersey REST 类时遇到的一个区别是,Spring 支持必须忽略 Root Path 元素并在方法级别具有单独的路径映射。因此,如果有上传/下载功能,我可能不希望有 2 个类,一个是上传,一个是下载,Jersey 现在要求我这样做,因为在类级别可能只有 1 个根路径,如下所示:
如果我忽略根级别@Path 即在类级别,Jersey 在启动服务器时无法识别我的类。这是我想要实现的目标:
任何线索将不胜感激。
谢谢
java - 使用 launch4j 生成的可执行文件中的 Grizzly / Jersey 资源
当 Web 服务器从 launch4j 生成的可执行文件运行时,我在运行带有 Jersey Resources 的 Grizzly Web 服务器时遇到问题。资源在 launch4j 生成的可执行文件中,但程序无法访问它们。如果我直接从 jar 执行它,它运行没有问题。但我需要提供一个 .exe 来运行网络服务器。
网络服务器代码:
我在 my.packages.resources 中有一个名为 InfoRestResource 的类,代码如下:
launchj4 Maven 配置:
输出
当我运行 .exe 时:
另一方面,当我从 Jar 运行它时,它工作正常,我得到以下输出:
我真的很感激任何帮助解决这个问题!谢谢!
java - 有没有办法记录每个 Web 服务调用到泽西岛的应用程序
我在我的应用程序中使用Jersey 1.8。现在,有很多服务类。有没有办法记录所有来自不同服务的请求。这意味着,是否可以创建类似于通用过滤器的东西,所有请求都将通过该过滤器发送,我可以从中跟踪和记录所有传入请求。