同じローカル Tomcat インスタンスにある Web サービスを使用して、HTTP PUT を (新しいキャッシュを作成し、生成された JSON を取り込むために) ehCache に送信しようとしています。
RESTful Web サービスは初めてで、JDK 1.6、Tomcat 7、ehCache、および JSON を使用しています。
POJO を次のように定義しています。
人物 POJO:
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Person {
private String firstName;
private String lastName;
private List<House> houses;
// Getters & Setters
}
ハウス POJO:
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class House {
private String address;
private String city;
private String state;
// Getters & Setters
}
PersonUtil クラスを使用して、次のように POJO をハードコーディングしました。
public class PersonUtil {
public static Person getPerson() {
Person person = new Person();
person.setFirstName("John");
person.setLastName("Doe");
List<House> houses = new ArrayList<House>();
House house = new House();
house.setAddress("1234 Elm Street");
house.setCity("Anytown");
house.setState("Maine");
houses.add(house);
person.setHouses(houses);
return person;
}
}
GET リクエストごとに JSON レスポンスを作成できます。
@Path("")
public class MyWebService{
@GET
@Produces(MediaType.APPLICATION_JSON)
public Person getPerson() {
return PersonUtil.getPerson();
}
}
war を tomcat にデプロイし、ブラウザを
http://localhost:8080/personservice/
生成された JSON:
{
"firstName" : "John",
"lastName" : "Doe",
"houses":
[
{
"address" : "1234 Elmstreet",
"city" : "Anytown",
"state" : "Maine"
}
]
}
これまでのところ、非常に良いですが、同じ tomcat インスタンスで実行されている (そして REST をサポートしている) 別のアプリがあります。
http://localhost:8080/ehcache/rest/
Tomcat の実行中に、次のような PUT を発行できます。
echo "Hello World" | curl -S -T - http://localhost:8080/ehcache/rest/hello/1
次のように「GET」すると:
curl http://localhost:8080/ehcache/rest/hello/1
生成されます:
こんにちは世界
私がする必要があるのは、POST を作成して、Person によって生成された JSON 全体を配置し、新しいキャッシュを作成することです。
http://localhost:8080/ehcache/rest/person
この前の URL で「GET」を実行すると、次のようになります。
{
"firstName" : "John",
"lastName" : "Doe",
"houses":
[
{
"address" : "1234 Elmstreet",
"city" : "Anytown",
"state" : "Maine"
}
]
}
これまでのところ、これが私の PUT の外観です。
@PUT
@Path("/ehcache/rest/person")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Response createCache() {
ResponseBuilder response = Response.ok(PersonUtil.getPerson(), MediaType.APPLICATION_JSON);
return response.build();
}
質問:
- これは PUT の正しい書き方ですか?
createCache()
生成された JSON を に PUT するには、メソッド内に何を記述すればよいhttp://localhost:8080/ehcache/rest/person
ですか?- PUT を使用する場合、コマンド ラインの CURL コメントはどのようになりますか?