0

同じローカル 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();
}

質問:

  1. これは PUT の正しい書き方ですか?
  2. createCache()生成された JSON を に PUT するには、メソッド内に何を記述すればよいhttp://localhost:8080/ehcache/rest/personですか?
  3. PUT を使用する場合、コマンド ラインの CURL コメントはどのようになりますか?
4

2 に答える 2