2011-06-11 97 views
0

使用化MessageBodyReader多个参数以下方法不允许我的servlet容器启动:在RESTful服务

@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。

回答

1

JAX-RS只允许一个实体参数。这个共振非常简单:每个请求最多可以有一个主体(spec不支持多部分) 因此您必须创建两个方法。 顺便说一句,我认为在同一个类中混合使用JAXRS和JAXWS不是一个好习惯。

+0

Right ...一种可能的方法是将'Customer'和'Control'集合到一个'CustomerWithControl'类中,然后在内部调用接受单独的'Customer'和'Control'作为参数的方法。 – chahuistle 2011-06-16 21:29:13