搞了一整天,總算試出CXF的REST介面可以運作的設定模式,雖然wrapped mode一直搞不定,不過,總算搞定unwrapped mode的設定方式。主要必需注意的事情是:
- interface上一定要有@WebService annotation
- 在需要傳遞的參數上必需要使用 @HttpResource 指定對應的uri pattern
- 因為是unwrapped mode, 接受的參數都必需要用VTO (value transfer object)包起來,如同CXF 文件Java REST annotation中的範例一樣
- CXF 會根據 URI template中的參數名稱{param}將參數對於到VTO中的property。
範例 (interface), spring 設定中的 serviceFactory必需設定unwrapped = false
@WebService(targetNamespace="http://employee.some.company.com")
public interface EmployeeService {
@Get
@HttpResource(location="/employees/{serial}")
@WebResult(name="Employee")
Employee getEmployee(GetEmployee getEmployee);
}