2011-06-11 100 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