我在设置一些我很确定/应该/很容易的东西时遇到了麻烦,所以我想我会把它扔给人群。我似乎无法在网络或 SE 上的其他地方找到我正在寻找的东西。
我当然是在简化我的项目,但基本上我有一个 JAX-WS 带注释的 Jersey 资源类,它看起来像这样:
@Path("myresource")
public class MyResource {
@Autowired
MyComplexObjectDAO daoInstance;
@Path("findObject/{id}")
@GET
public MyComplexObject findObject( @PathParam(value="id") String id ) {
return daoInstance.findObject( id );
}
@Path("saveObject")
@PUT
public MyComplexObject saveObject( MyComplexObject objectToSave ) {
MyComplexObject savedObject = daoInstance.saveObject( objectToSave );
return savedObject;
}
}
所以你可以看到我正在使用 spring 自动装配 DAO 对象,然后我在 REST 处理程序中使用 DAO 方法。
'findObject' 调用似乎工作正常 - 到目前为止,它完全按照我的预期工作。
'saveObject' 调用没有按我想要的方式工作,这就是我需要一些建议的地方。
您可以看到我正在尝试直接将我的复杂对象的实例作为 REST 方法的参数。另外,我想在保存复杂对象后返回一个实例。
我整理了一些“客户端”代码来测试它。
@Test
public void saveTest() {
WebResource wsClient = createWebServiceClient();
MyComplexObject unsavedInstance = createMyComplexObject();
MyComplexObject savedInstance =
wsClient
.path("saveObject")
.accept(MediaType.APPLICATION_XML)
.put(MyComplexObject.class, unsavedInstance);
assertNotNull(savedIntent);
}
返回以下错误:
com.sun.jersey.api.client.UniformInterfaceException: PUT http://localhost:8081/rest/myresource/save returned a response status of 400 Bad Request
我不明白为什么这不起作用,我想我已经尝试了我能想到的一切。任何帮助或指导将不胜感激。
非常感谢!