[{PageViewPlugin}]
[ServiceMix], [Twitter Account Activity API]
!!!Abstract
|Sometime I have developed web services such as [gnssws|https://github.com/tateshitah/gnssfinder/tree/master/gnssws], [tlews] and [https://github.com/tateshitah/webhook]. I would like to record information related to web service.
!!!Topic
!! How to describe the interface
| It should be referred existing web services such as recruit web service[1]. 
!! How to make it
*General
| I like [Java], so Jersey which is one of implementation of JAX-RS[2] should be recommended. 
*[Tomcat]を使って実装
| check [3]!Servlet3.0以降、[Tomcat]7以降だとweb.xmlの設定がいらなくなるが、その条件として、ResourceConfigクラスを継承したConfigクラスをつくり、Pathを指定しておくのがポイントか。うまくいくと、hostname/application name/ResourceConfigで設定したpath/Pathアノテーションで設定したパス名?**=**...でアクセスできるようになります。最後までインプットしないと404がでるかも。
|まあ、別にWeb.xmlを編集してもいいんだけどね。gnsswsは、そっちでやってます。
*POSTの扱い
|Twitterのwebhookに成功すると。JSONをPostしてきます。POSTアノテーションを指定したメソッドでその処理をするのですが、JSONのようなTextを受け取るときのやり方が意外と探すのに苦労。ここ[4]をみながら、以下のように実装するとできた。
{{{
    @POST
    public Response postIt(String body){
        ResponseBuilder builder=Response.ok();
        System.out.println("something posted!"+body);
        return builder.build();
    }
}}}
*Jerseyを使っていて、JDK11にすると、コンパイルは通るけど実行上は、java.lang.NoClassDefFoundError: javax/activation/DataSourceとか起きて、動きません。原因は、Jerseyの中で使っているJAFとJAXBがJDK11ではなくなっているため。[5]で解決。Jerseyのアップデートでも解決するのだろうか。。

!!!Reference
#[#1]Recruit Co., Ltd., リクルート WEBサービス, [http://webservice.recruit.co.jp]
#[#2]Oracle Corporation, Jersey, [https://jersey.github.io]
#[#3]edgegram, 2015-11-25, Jerseyの設定2(web.xmlとかApplicationクラスとか), [https://edgegram.hatenablog.jp/entry/2015/11/25/194919]
#[#4]Stack Over Flow, 2016-12-16, How do I get the JSON body in Jersey?, [https://stackoverflow.com/questions/41157949/how-do-i-get-the-json-body-in-jersey]
#[#5]YUICHI SAKURABA, 2018年7月4日, 事例から学ぶ、Java SE 11移行、[http://www.javainthebox.com/2018/07/java-se-11.html]