DRYな備忘録

Don't Repeat Yourself.

JavaやったことないけどMacでGlassFishうごかしてHello,World

参考

GlassFish on Mac

GlassFishとは

ログ

環境

% cd
% which java
/usr/bin/java
% java -version
java version "1.8.0_71"
Java(TM) SE Runtime Environment (build 1.8.0_71-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.71-b15, mixed mode)

brewで入るのかな?

% brew search glassfish
glassfish

あるぽ

% brew install glassfish
==> Downloading http://download.java.net/glassfish/4.1.1/release/glassfish-4.1.1.zip
######################################################################## 100.0%
==> Caveats
The home of GlassFish Application Server 4 is:
  /usr/local/opt/glassfish/libexec

You may want to add the following to your .bash_profile:
  export GLASSFISH_HOME=/usr/local/opt/glassfish/libexec
  export PATH=${PATH}:${GLASSFISH_HOME}/bin

Note: The support scripts used by GlassFish Application Server 4
are *NOT* linked to bin.
==> Summary
🍺  /usr/local/Cellar/glassfish/4.1.1: 1,611 files, 126.8M, built in 3 minutes 26 seconds
%

入った。起動してみる。You may want to add the following to your .bash_profile:と言われているように、デフォルトではPATH通ってないので、binのPATHを打つ。

% /usr/local/Cellar/glassfish/4.1.1/libexec/glassfish/bin/asadmin start-domain domain1
Waiting for domain1 to start ...
Successfully started the domain : domain1
domain  Location: /usr/local/Cellar/glassfish/4.1.1/libexec/glassfish/domains/domain1
Log File: /usr/local/Cellar/glassfish/4.1.1/libexec/glassfish/domains/domain1/logs/server.log
Admin Port: 4848
Command start-domain executed successfully.
%

で、なんか立ってるのか?

% lsof -i tcp:4848
COMMAND   PID    USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
java    22996 otiai10  384u  IPv6 0xffaa401a3ea77ea9      0t0  TCP *:appserv-http (LISTEN)
% lsof -i tcp:8080
COMMAND   PID    USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
java    22996 otiai10  367u  IPv6 0xffaa401a3fee3969      0t0  TCP *:http-alt (LISTEN)
%

4848番と8080番でなんかjavaで立ってる。ブラウザで確認。

4848番

f:id:otiai10:20160429041628p:plain

うわ、なんかすげーORACLEっぽい。知らんけど。

8080番

f:id:otiai10:20160429041526p:plain

なんか普通に動いてる。

Hello, GlassFish

Tomcatと同じレイヤーということは、なんか設定ファイルがあって、特定のURL pathに対して、特定のアクションを紐づけられるんじゃねえかな、と思ったり。

Deploying and Undeploying Applications (Oracle GlassFish Server 3.0.1 Quick Start Guide)

To deploy the hello.war sample, the command is:

as-install/bin/asadmin deploy sample-dir/hello.war

え???? まじ???? そういう感じなの?????!!!?!

とりあえずやってみる。上記のページから(若干怖いけどoracleドメインだからだいじょうぶだろう)hello.warをダウンロードして、

% /usr/local/Cellar/glassfish/4.1.1/libexec/bin/asadmin deploy ~/Downloads/hello.war
Application deployed with name hello.
Command deploy executed successfully.
%

んんんん??? 成功してるぞ!!?? 確認

f:id:otiai10:20160429042641p:plain

otiai10でsubmit、っと

f:id:otiai10:20160429042715p:plain

わーお... It works...

URL Pathと処理の紐づけはいつどこがしてるんだ??? .warじゃなくてビルド前の.javaが見たいぞい。

とりあえずこのコントローラはAdmin Console(4848番)から消せるようだ。

f:id:otiai10:20160429043426p:plain

hello.warを雛形に、unko.warをつくる

hello.warが動いたのが確認できたので、これをほぼ丸パクリ雛形にして、unko.warをつくって /unko をハンドリングしてみる。

% cd
% mkdir unko
% cd unko
% jar xvf ~/Downloads/hello.war
  created: META-INF/
 inflated: META-INF/MANIFEST.MF
  created: WEB-INF/
  created: WEB-INF/classes/
 inflated: WEB-INF/classes/LocalStrings.properties
  created: images/
 inflated: WEB-INF/sun-web.xml
 inflated: WEB-INF/web.xml
 inflated: images/duke.waving.gif
 inflated: index.jsp
 inflated: response.jsp
%

解凍できた。

ためしに、これを変更せずにwarに固めてdeployしてみる

% jar cf ../unko.war .
% /usr/local/Cellar/glassfish/4.1.1/libexec/bin/asadmin deploy ../unko.war
remote failure: Error occurred during deployment: Exception while loading the app : java.lang.Exception: Virtual server server already has a web module hello loaded at /hello therefore web module unko cannot be loaded at this context path on this virtual server. Please see server.log for more details.
Command deploy failed.
%

ひとつのdeployされたApplicationはmoduleとして扱われ、異なるmodule同士は同じURL Routingを持ってはいけない、みたいな雰囲気を感じたので満足です。

さて、unkoをつくっていく。

プロジェクト内でhelloの記述があるのはこんくらい

f:id:otiai10:20160429051333p:plain

だるいんで、これ全部unkoに変えて

.warファイルをビルド

% jar cf ../unko.war .

デプロイ --force

% /usr/local/Cellar/glassfish/4.1.1/libexec/bin/asadmin deploy --force ../unko.war
Application deployed with name unko.
Command deploy executed successfully.
%

f:id:otiai10:20160429053108p:plain

文字化けしてる。jspを編集してmetaタグ挿入したけどそういうことではないっぽい。

soutoku.hatenablog.com

これっぽい。だるいのでまた今度でいいや。



_人人人人人人人人人人人人_
> というかJava書いてない <
 ̄^ Y ^ Y ^ Y ^ Y ^ Y ^ Y ^ Y  ̄

DRYな備忘録