问题标签 [spring-jersey]

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 投票
1 回答
91 浏览

cookies - 如何更改 Jersey 客户端中的 CookieSpec?

我在项目中使用了 Jersey Client,如下所示:

clientConfig.connectorProvider(new ApacheConnectorProvider());
clientConfig.register(MultiPartFeature.class);
客户端 = ClientBuilder.newClient(clientConfig);

它实际上使用 httpClient 来完成这项工作。但现在我在这个问题中遇到了 CookieSpec 问题:Fixing HttpClient warning “Invalid expires attribute” using fluent API。我需要更改 CookieSpec,但找不到更改配置的位置。

0 投票
2 回答
615 浏览

spring-boot - 无法再从 HttpServletRequest SpringBoot 2.2、Jersey 2.29 获取表单数据

我们有一个 SpringBoot 应用程序,并且正在使用 Jersey 来审核传入的 HTTP 请求。

我们实现了 Jersey ContainerRequestFilter来检索传入的HttpServletRequest 并使用 HttpServletRequest 的getParameterMap()方法来提取查询和表单数据并将其放入我们的审计中。

这与 getParameterMap() 的 javadoc 一致:

“请求参数是随请求发送的额外信息。对于 HTTP servlet,参数包含在查询字符串或发布的表单数据中。”

这是与过滤器有关的文档:

https://eclipse-ee4j.github.io/jersey.github.io/documentation/latest/user-guide.html#filters-and-interceptors

在更新 SpringBoot 后,我​​们发现 getParameterMap()不再返回表单数据,但仍然返回查询数据。

我们发现 SpringBoot 2.1 是支持我们代码的最后一个版本。在 SpringBoot 2.2 中,Jersey 的版本更新为 2.29,但在查看发行说明后,我们没有看到与此相关的任何内容。

发生了什么变化?我们需要改变什么来支持 SpringBoot 2.2 / Jersey 2.29?

这是我们代码的简化版本:

JerseyRequestFilter - 我们的过滤器

RequestInterceptorModel - 地图未填充表单数据,仅查询数据

JerseyConfig - 我们的配置

完整示例

以下是使用我们的示例项目重新创建的步骤:

  1. 在此处从 github 下载源代码:
  1. 使用 pom.xml 文件导航到项目目录
  2. 运行项目:
  1. 在新终端中运行以下 curl 命令来测试 Web 服务
  1. 在日志中,您将看到表单参数
  2. 停止正在运行的项目,ctrl-C
  3. 将 pom 的父版本更新为 SpringBoot 的较新版本

  1. 再次运行项目:
  1. 再次调用 curl 调用:
  1. 这次日志会缺少表单参数
0 投票
0 回答
44 浏览

java - Jersey1.0 到 Jersey 2.0 迁移产生 UniformInterfaceException

我正在从 Jersey 1.19.4 迁移到 Jersey 2.31 它正在产生 UniformInterfaceException。我对泽西岛完全陌生。谁能帮我调查和解决这个问题?

0 投票
1 回答
199 浏览

jax-rs - Jersey 2 和 Spring Boot - 无法在 Provider 上使用 @Context 进行注入

在 Spring Boot 2.4 上使用 Jersey 2.3。我有 2 个 JAX-RS 提供程序。其中一个实现了 ContainerRequestFilter(PreMatching),另一个扩展了 JacksonJaxbJsonProvider(来自 jackson-jaxrs-json-provider)。

我将 ContainerRequestFilter 中的属性设置到 ContainerRequestContext 上。然后我尝试使用@Context 将 ContainerRequestContext 注入到另一个 JAX-RS Provider 中。但是这种注入总是无效的。

如果我使用 @Context 将相同的对象注入到 JAX-RS 资源中,Jersey 会注入它。不知道我在这里缺少什么。非常感谢任何帮助。

0 投票
0 回答
161 浏览

spring - Spring + Jersey 集成问题 - SpringScopeContext 必须在 Singleton 范围内

我在将 Jersey 与 Spring 集成时遇到了麻烦。启动服务器时出现以下异常。

泽西 2.32,春季 5.2.12,Weblogic:12.2.1.3

警告:已检测到以下警告:警告:在未在活动 Jersey 错误范围内运行的代码中检测到 HK2 故障。警告:检测到未知 HK2 故障:MultiException stack 1 of 1 java.lang.IllegalArgumentException:实现类 org.jvnet.hk2.spring.bridge.internal.SpringScopeContext 必须在 org.jvnet.hk2.internal.ServiceLocatorImpl 的 Singleton 范围内.checkConfiguration(ServiceLocatorImpl.java:1722) 在 org.jvnet.hk2.internal.ServiceLocatorImpl.addConfiguration(ServiceLocatorImpl.java:2118) 在 org.jvnet.hk2.internal.DynamicConfigurationImpl.commit(DynamicConfigurationImpl.java:286) 在 org. jvnet.hk2.spring.bridge.internal.SpringBridgeImpl.initializeSpringBridge(SpringBridgeImpl.java:64) at org.glassfish.jersey.server.spring.SpringComponentProvider.initialize(SpringComponentProvider.java:

<Mar 1, 2021 5:33:15,903 AM CST> <Servlet:“REST Web 应用程序”无法在 Web 应用程序启动时预加载:“ws.war”。MultiException 有 1 个异常。他们是:

  1. java.lang.IllegalArgumentException:实现类org.jvnet.hk2.spring.bridge.internal.SpringScopeContext必须在Singleton范围内

    在 org.jvnet.hk2.internal.ServiceLocatorImpl.checkConfiguration(ServiceLocatorImpl.java:1722) 在 org.jvnet.hk2.internal.ServiceLocatorImpl.addConfiguration(ServiceLocatorImpl.java:2118) 在 org.jvnet.hk2.internal.DynamicConfigurationImpl.commit (DynamicConfigurationImpl.java:286) 在 org.jvnet.hk2.spring.bridge.internal.SpringBridgeImpl.initializeSpringBridge(SpringBridgeImpl.java:64) 在 org.glassfish.jersey.server.spring.SpringComponentProvider.initialize(SpringComponentProvider.java:87) ) 截断。请参阅日志文件以获取完整的堆栈跟踪原因:java.lang.IllegalArgumentException:实现类 org.jvnet.hk2.spring.bridge.internal.SpringScopeContext 必须在 org.jvnet.hk2.internal.ServiceLocatorImpl.checkConfiguration 的 Singleton 范围内( ServiceLocatorImpl.java:1722) 在 org.jvnet.hk2.internal.ServiceLocatorImpl。addConfiguration(ServiceLocatorImpl.java:2118) at org.jvnet.hk2.internal.DynamicConfigurationImpl.commit(DynamicConfigurationImpl.java:286) at org.jvnet.hk2.spring.bridge.internal.SpringBridgeImpl.initializeSpringBridge(SpringBridgeImpl.java:64)在 org.glassfish.jersey.server.spring.SpringComponentProvider.initialize(SpringComponentProvider.java:87) 被截断。查看日志文件以获取完整的堆栈跟踪

0 投票
0 回答
91 浏览

java - 带有 Jersey、Oauth ResourceServer 和 EnableGlobalMethodSecurity 的 Spring Boot 不起作用

我试图让一个使用球衣(jax-rs)实现资源的spring boot应用程序工作。该应用程序配置了 ResourceServer,并且使用 JWT 令牌进行身份验证工作正常。所以我可以使用 HttpSecurity 配置控制访问。

但是在我的资源中,我想使用 GlobalMethodSecurity。所以基本上我只想允许调用者使用 JWT 令牌并使用注释进行角色检查(例如@RolesAllowed))

不幸的是,我所有的@RolesAllowed 都被忽略了。

我正在做这样的事情:https ://github.com/phosphene/spring-boot-session-jersey-test-demo

只是这个例子 - 虽然启用了全局方法,但实际上并没有任何注释。

那么,到目前为止我做了什么?我启用了全局方法安全性。此外,我的 scanBasePackages 确实包括我项目中的所有类(资源等)。

我有一个注册所有资源的 JerseConfig:

我的 ResourceServer 类看起来像这样(并且有效,这意味着如果没有 Bearer 令牌,访问将被拒绝)。准备就绪的东西总是被允许的,并用于我的 docker:

现在,当我将 @DenyAll 添加到我的球衣资源时,就可以访问了。怎么了?

我似乎缺少一些小东西。我阅读了所有其他类似的谷歌帖子,但还没有找到解决方案。

如果你想看看我的项目。在这里:https ://github.com/olijaun/club-manager spring boot 项目位于 club-manager-springboot 文件夹中。我要保护的资源之一就是这个:https ://github.com/olijaun/club-manager/blob/master/club-manager-member/src/main/java/org/jaun/clubmanager/成员/应用程序/资源/SubscriptionPeriodResource.java

感谢您的任何提示!

0 投票
1 回答
51 浏览

java - JerseyTest 框架:在集成测试中测试我的 proxyservlet

我的代码中有一个 ProxyServlet (org.mitre.dsmiley.httpproxy),它执行一些操作并将某些以 */xyz 结尾的 url 转发到不同的应用程序。我有涵盖我的应用程序的集成测试(使用 JerseyTest 框架)并希望使集成测试通过代理 servlet。

目前我的测试用例部署配置如下:

现在,要测试我的代理 servlet,如果我将配置更改如下,

我无法在上面添加 url-pattern servlet-mapping,并且正在为所有 url 调用 proxy-servlet。有人可以告诉我如何为

我检查了所有方法但无法这样做

0 投票
1 回答
655 浏览

java - 在 Spring Boot 应用程序中使用 JAX-RS REST API 作为库

我正在开发一个用于数字签名的 Spring Boot 项目,我想在其中使用经典的 Spring Web 语法(、、等)创建一些 REST@RestController控制器@XMapping。寻找一些库来执行签名工作,我找到了这个,其中包括使用 JAX-RS 规范制作的工作 REST 控制器。所以我认为只需在我的应用程序中公开它们就可以用最少的代码完成工作。最初我考虑自己创建控制器并将工作委托给 lib,但是当我发现这些已经存在的控制器时,我认为我什至可以跳过它并保持代码非常小。

我通过添加org.springframework.boot:spring-boot-starter-jersey依赖项并将它们注册到 Jersey 的ResourceConfig. 但我认为这可能与org.springframework.boot:spring-boot-starter-web和/或不兼容,org.springframework.boot:spring-boot-starter-data-rest因为一旦库中的 JAX-RS API 变得可调用,data-rest从类自动创建的端点就@Repository消失了。

我一直在寻找一种在 Spring Boot 中将这两个东西集成在一起的方法,我不确定这是否可能,或者是一个好主意。老实说,我并不介意使用 JAX-RS 规范编写我的控制器,我过去曾使用过它,我也喜欢它。我不想失去的是自动为@Repository类创建控制器spring-data-rest,因为我真的很喜欢这个功能。

我是在尝试一些非常愚蠢的事情,还是有什么办法可以做到这一点?

0 投票
1 回答
115 浏览

spring-boot - Spring Boot 2.5.4 + Jersey + JSF

我用rest jersey jax-rs和一些带有JSF的GUI构建了一个spring boot +项目。它正在工作,但是每次我启动项目时都会生成一个错误日志,我试图寻找它会是什么但我找不到。有人可以帮我删除它并启动项目而不会出错吗?

这是我的pom:

这是带有错误的启动日志:

我注意到当我放置依赖项时出现错误:

此致。

0 投票
0 回答
15 浏览

java - 在 spring-boot + jersey 应用程序中调用 ResourceConfig.packages("...") 会导致 BOOT-INF/classes 的 java.io.FileNotFoundException

在 spring-boot + jersey 应用程序中调用 ResourceConfig.packages("...") 会导致 BOOT-INF/classes 的 java.io.FileNotFoundException,尽管该目录在 jar 文件中。

这是我的 ResourceConfig 子类:

我在启动时遇到的例外是

jar -tvf my-project-1.0.0.jar如果我用那个目录查看那个 jar 文件就在BOOT-INF/classes那里。