java - 在 RESTful 服务中使用 MessageBodyReader 获取多个参数

标签 java jersey jax-rs

以下方法不允许我的 servlet 容器启动:

@PUT
public String upload(final Customer customer, final Control control) {
  // ...
}

毫不奇怪,我明白了:

SEVERE: Missing dependency for method ... at index 0
SEVERE: Missing dependency for method ... index 1
SEVERE: Method, ..., is not recognized as valid resource method.

我已经为每种类型实现了 MessageBodyReaders。删除任何参数都可以使 servlet 容器正常启动,因此我怀疑必须对通过实体提供程序解析的参数数量进行限制。

问题是我需要这两个参数,因为我同时提供 SOAP 和 REST 支持,当然,我没有更改方法签名的自由,而且我也没有想要创建一种特定的 Jersey 方法和一种特定的 JAX-WS 方法作为入口点。

我使用的是 Jersey 1.7。

最佳答案

JAX-RS 只允许一个实体参数。原因很简单:每个请求最多只能有一个主体(规范不支持多部分) 所以您必须创建两个方法。 顺便说一句,我认为在同一个类中混合使用 JAXRS 和 JAXWS 并不是一个好的做法。

关于java - 在 RESTful 服务中使用 MessageBodyReader 获取多个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6316376/

相关文章:

json - 将默认 REST 响应更改为 JSON 而不是 XML

json - 使用 Spring 3.1.2 从 Jackson 1.9 升级到 2.5 时出现问题 - 未找到 ProviderBase 类

java - JAXB:注释对象列表元素标签名称的简单方法

java - 检查 POST 正文中是否包含属性

java - JSF 2.0 AJAX : Call a bean method from javascript with jsf. ajax.request(或其他方式)

java - 创建引用父数组列表的方法

java - 将组合框超出的内容包裹在可用空间中?

java - 修改了冒泡排序,但无法正常工作

Java REST API : Can not deserialize instance of Object out of START_ARRAY token

java - 如何让 Jersey 2.6 与 Tomcat 6 和 Java 1.6 一起工作?