簡単だと確信しているものを設定するのに苦労しているので、それを群衆に投げると思いました。Webや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
なぜこれが機能しないのかわかりません。私は考えられるすべてのことを試したと思います。どんな助けや指示も大歓迎です。
本当にありがとう!