【发布时间】:2016-12-19 11:24:45
【问题描述】:
我想要以下代码:
@POST
@Path("path")
@Consumes(MediaType.TEXT_PLAIN)
@Produces(MediaType.TEXT_PLAIN)
public String doSomething(String body, CustomObject o) {
return o.getText();
}
简单地说,一个 POST 方法,它接受字符串请求正文(映射到第一个参数)并根据参数中的 CustomObject 以字符串响应进行响应。自定义对象值通过ValueFactoryProvider 提供 - 基本上该值填充在过滤器中。
但是,我无法调用资源 - 我得到:
java.lang.IllegalStateException: The resource configuration
is not modifiable in this context.
你能指出我正确的方向吗?谢谢。
注意:这种类型的代码目前在我们的 Spring 实现中使用(Spring 智能映射所有内容),我们目前正在开发 Java EE 版本,我们希望有类似的 API。
【问题讨论】:
-
所以您正试图在您的 ValueFactoryProvider 中提取填充在过滤器内的值?
-
...是的,你无处不在! :) 让我快速告诉你我在做什么。我正在研究 PowerAuth 2.0 - 一种用于移动银行的开源银行级安全性。为了简化集成,我提供了集成库。我们已经有一个用于 Spring 的,现在我正在为纯 Java EE 构建一个。目标是拥有一个库,允许开发人员仅注释现有 REST 资源并使用预填充的身份验证数据添加自定义参数...
-
如果你想让它可移植,那么你不想使用 ValueFactoryProvider。那是泽西岛特有的。现在我想起来了,我认为没有标准的 JAX-RS 方法来处理这个用例。对于泽西岛,我确切地知道如何处理这个问题,但我不确定你是否想要一个特定于泽西岛的解决方案。如果有人想使用 Wildfly,它使用 RESTEasy 作为 JAX-RS 实现。
-
...嗯...有趣的一点,@peeskillet。我有这种感觉(“JAX-RS 可能没有这样的东西”)。看来,对于非 Spring 部署,我们将不得不提供不太方便且更便携的集成解决方案(基本上,我们将窃取我们在 Spring 中的 7 个版本)。还是非常感谢! :)
-
或者你可以只使用标准的 CDI,让用户注入你提供的服务。这是另一种选择(可移植)
标签: java jakarta-ee jersey jersey-2.0