JJUG-CCC再演祭 in 大阪に行ってきました

kanjava.connpass.comに行ってきました。

JAX-RS入門および実践

@さんのお話。
資料は、ここJAX-RSにアップされています。
サンプルを実装してみたかったので、プロジェクトをここChapter 1. Getting Startedを参考に作成

mvn archetype:generate -DarchetypeArtifactId=jersey-quickstart-grizzly2 -DarchetypeGroupId=org.glassfish.jersey.archetypes -DinteractiveMode=false -DgroupId=com.example -DartifactId=simple-service -Dpackage=com.example -DarchetypeVersion=2.22.2
  • まず上記サンプルの以下のメソッドの動作を確認
@Path("myresource")
public class MyResource {
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String getIt() {
        return "Got it!";
    }
}

f:id:tomoTaka:20160228094418p:plain

以降は上記MyResourceクラスに@さんの資料で紹介されていたメソッドの一部を実装してみました。

  • 01 QueryParamを使用
	@Path("addition")
	@GET
	@Produces("text/plain")
	public int calculate(@QueryParam("a") int a, @QueryParam("b")int b){
		return a+b;
	}

f:id:tomoTaka:20160228083816p:plain

  • 02 PathParamを使用
	@Path("hello/{name}")
	@GET
	public String sayHello(@PathParam("name")String name){
		return String.format("Hello %s!", name);
	}

f:id:tomoTaka:20160228083835p:plain

  • 03 MatrixParamを使用
	@Path("additionMatrix")
	@GET
	public int calculateMatrix(@MatrixParam("left")int left,
							   @MatrixParam("right") int right){
		return left + right ;
	}

f:id:tomoTaka:20160228083850p:plain

  • 04 HeaderParamとCookieParamを使用
	@Path("hoge")
	@GET
	public String getHeader(@HeaderParam("foo")String foo,
					@CookieParam("bar")String bar){
		return String.format("header foo=%s, bar=%s %n", foo, bar);
	}

ブラウザで、Headerとかcookieの設定がわからないのでcurlコマンドで確認

 curl -H 'foo:fooval' --cookie "bar=barval" http://localhost:8080/myapp/myresource/hoge

f:id:tomoTaka:20160228083905p:plain
-vオプションを指定して詳細も確認
f:id:tomoTaka:20160228084136p:plain

  • 05 FormParamを使用
	@POST
	public String sayHelloForm(@FormParam("yourName")String name){
		return String.format("Hello yourName=%s %n", name); 
	}
curl -v  http://localhost:8080/myapp/myresource/ -X  POST -d 'yourName=Tomo'

f:id:tomoTaka:20160228085451p:plain

とりあえずここまでの実装をアップしました。GitHub - tomoTaka01/simple-service: Jersey samples
まだまだ勉強しないといけないことが沢山です。今後は少しでも機能を追加していきたいです!

よくある業務開発の自動化事情

@さんのお話。すごく共感できるお話であっと言う間に時間がすぎてしまいました。
もっといろいろお話お聞きしたいです!

G1 GC -HeapStats を添えて-

@さんのお話。2部構成でとてもわかりやすかったです!

  • 01 Heap Stats

詳細は、この記事codezine.jpにあります!
HeapStats使ってみたいです。Macにインストールするのではなく、Dockerを使ってLinuxにインストールしたいと思っていますが、今後の課題に、、、

  • 02 G1GC

スライドはwww.slideshare.netにアップされていました。
勉強会でも他の方が質問されていたのですが、そもそもどのGCを使っているか?を確認したことがなかったです(汗)
確か以下のコマンドで確認できるようです(すみません間違っていたらご指摘頂けたら嬉しいです)

java -XX:+PrintFlagsFinal -version | grep GC

以下の結果が表示されました。ここでtrueが2つ表示されていますが?「:=」の方が使われているようですが、どこで指定されているかが?です、、、

...
bool UseG1GC                                   = false
bool UseParallelGC                            := true
bool UseParallelOldGC                          = true
bool UseSerialGC                               = false

GCを以下オプション指定できるようです。いままで使ったことはないです、、、

java -XX:+UseG1GC 

最後にいつも会場を提供していただいている楽天株式会社様、@さん、関Javaスタッフの皆様ありがとうございます!
勉強する機会をいただくことができて本当に毎回感謝です!(まだまだ勉強しないといけないことが多くて、、、(涙)