Mac で GlassFish を使う

WildFly, TomEE ときたので、ついでで GlassFish にも手を出してみる。

インストール

公式ページのここから適当なバージョンの GlassFish をダウンロード。(私は Ver 6.2.5 をチョイス。なお、環境は MacOS Monterey, java17 です)

解凍すれば使えるようにはなっている。

問題は置き場所だが、多分、ほとんどの人がまずはお試しで使うと思うので、/usr/local ではなく、ユーザーホームの適当なフォルダに配置すればいいと思う。

/glassfish6/bin

に移動して

./asadmin start-domain

でまずは起動。

ブラウザで localhost:4848 にアクセスして、以下のような画面が表示されればまずは GlassFish のインストール自体は成功しています。

Quick Start Guide, Application Development Guide, Create New JDBC Resource あたりの Documentation は要チェックかな。
ただし、説明が Ver5 に準拠しているため、若干の試行錯誤は必要そう。

次に簡単な war ファイルをデプロイしたいんだが、その前に・・・

GlassFish の port を変更

8080 ポートは、WildFly や Tomcat などで使用されている場合が多いと思うので、あらかじめ 80 に変更しておきたい。

これは上のコンソール画面から簡単に行える。

画面右のノードから configurations -> server-config -> Network Config -> Network Listners の順に展開。

下図の Port: 8080 のところを 80 に変更。

再起動が必要かと思ったが、その場で変更できるようだ。

実際、この状態で localhost:80 にアクセスすると

というウェブページが表示される。

ここらへん、Tomcat あたりと違う。

(追記)GlassFish では、実行環境の単位を domain と呼んでいるようだ。だから、start-domain なんですね。

簡単な war ファイルをデプロイする

適当なハロワでもいいんでしょうが、TomEE の時に使った async-servlet2 を流用。

(ソースコードは github にあげてあります)

NetBeans などの IDE でビルド。

ただし、今回は GlassFish が JakartaEE 9.1 に対応しているようなので、ソースの javax を jakarta に変更。

java も 1.8 から 17 に変更。

ビルド時の plugin も TomEE 関係は不要なので、コメントアウト。

async-servlet2.war が作成できたら、コンソール画面からデプロイしてみましょう(コマンドラインからもデプロイできるようですが、今回は GlassFish に慣れることが目的なので簡便にコンソール画面から)

コンソール画面左の Applications を展開して、右画面から war ファイルを投入。

このとき、コンテキストルートを指定しておきましょう

指定しておかないと ファイル名 + 謎の数字列 (async-servlet2134890 みたいな感じ) がコンテキストルートになってしまうようです。

デプロイできたら、localhost/async-servlet2/ にアクセス。

リンクを踏んで適当なパラメータを設定してさらに再読み込み。

2 x 4 = 8 の値がやや遅れて(非同期で遅延させているんですが、細かいことは割愛)ブラウザに表示されました。

狙い通りに動いてくれました。

順調、順調。

次はデータベースの利用でしょうか。

データベースを使う

データベースを利用した簡単なウェブアプリをデプロイしたい。

これも TomEE のところで作成した jpa-hibernate を流用する。

ただ、データベースユーザーを tomee さんにしてしまうとわけがわからなくなるので、PostgreSQL ユーザー glassfish さんを新たに作成、データベース glassfish の所有者とした。

JakartaEE なので、

JDBC Connection Pool → JDBC Resource

の順で設定していく。

やり方は色々あるようなんですが、ここもコンソール画面で押していきます。

まず jdbc ドライバにパスを通す(→これは不要でした。よくこのように説明してある記事を見かけますが、おそらく Java  業界で有名な寺田さんがブログでこのように説明したため(↓)、

誤って広まったと思われます。/domain/lib といういかにもなフォルダがあるわけですから、このやり方は不自然ですし、先に言及した documentation にもそんなことは一言も書かれていません。所定の位置に jdbc ドライバを設置しておけば glassfish は自動で認識してくれます)。

jdbc ドライバを登録した後は、以下の手順で設定。

JDBC Connection Pool の設定

glasfish データベースへの接続情報を JDBC Connection Pool (Pool 名は TestPool とした)に登録した後、Ping ボタンを押下して Ping Succeeded が返ってくれば OK です。

キモは Datasource Classname に org.postgresql.ds.PGSimpleDataSource を指定するところでしょうか。

一回でダメな時は、GlassFish 自体を再起動してください。

JDBC Resource の設定

JDBC Resource は、JDBC Connection Pool に TestPool を指定してあげれば OK です。
JNDI ネームは jdbc/test としました。

deploy

基本的には、前回と同様です。

ソースコードをビルドして、管理画面の Applications からデプロイ(deploy)。

ただし、persistence.xml で、transaction の platform を指定する必要があるようです。

  <property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.SunOneJtaPlatform" />

を加えてください。

これがないと、ビルドはできますが、デプロイ時や動作時に

DdlTransactionIsolatorJtaImpl could not locate TransactionManager to suspend any current transaction

Unable to build Hibernate SessionFactory

といったエラーが出ます。

動作確認

デプロイ後、localhost/(context root)/Test にアクセスすると

というページが表示されます。

title, director に適当な文字列を入れ、persist を押下。

PostgreSQL 側では、指定したデータベースのテーブルにこれら文字列が永続化されています。

めでたし、めでたし。

おわりに

java のアプリケーションサーバは色々ありますが、GlassFish は、やはり安心しますね。

 

追記

GlassFish は、WildFly と並ぶ JakartaEE の代表的なアプリケーションサーバーなので、業界からの関心も高い。

最近(2022/11〜)、富士通の Hiroki Sawamura さんが、開発者向けのメーリングリストに開発の進め方に関して一つの提案をしていた。

興味のある方は、メーリスに登録して一読することを勧める。

こういうのは、オープンソースの一つの在り方だよなあと。

知り合いの方々も関与しているのであまり悪口は言いたくはないが、「日本初のオープンソースの電子カルテ」プロジェクトはもう無茶苦茶だったよなあ。
OpenDolphin -wikipedia 風解説-』あたりの記事をご覧ください。

 

ライブラ杯2022

いつものようにチャンミの結果発表。

結論から書くとワイはプラチナゲット。

決勝の走りは↓。

それほど強いとはされていないメジロアルダンでクリオグリ2体の猛追を退けて勝ったので、この点はけっこうな人から褒められた。

まあ、それなりに勝ち目あると思ったから出走させているので、ワイ的にはそれほど驚いていないけど。

なお、所属しているサークルのメンバーもほぼ全員 B で1位になっている。

思うに、今回チャンミは

・グラライ環境になって育成しやすくなった

・告知がかなり早かった

ということがあって、準備できた人が多かったと思う。

さらにマイル戦だったので、デッキ構成がほぼ『スピ3賢2ハロ1』で固定でいけた。迷うところがなかったので育成回数もこなせたのではないかと思う。

勝ち個体もクリオグリ一辺倒ということはなく、それなりに準備して挑んだトレーナーはけっこう満足度が高いチャンミだったのではなかろうか。

 

なんだが・・・

まあ、この話題も触れておくか。

? ◯体蹴りライブの話

これだよなあ。。

あんまり喋って気分のいい話題ではないので twitter では全く触れなかったのだが、ここで言わせてもらうと、流石にあのライブで文句言うやつは精神年齢低いでしょ?

それなりに手間かけて育成した個体がバックダンサーやってたら(勝ちを確信しているような人には)気分のいいものではないというのは想像できるが、これゲームっすよ。

あれで自分が馬鹿にされている・煽られていると感じたなら、それはちょっとゲームに入り込みすぎだと思う。

ちなみに同じサークルの B 2位だった人は「映像が手間かかっていて楽曲もいいし、不快な気分にはならなかった。1位になれればそれに越したことはないが、デッキパワーや手持ちキャラの関係で結果は納得しているので、ライブは一つの区切りとしてちょうどよかった」と言っていた。

受け止め方としては、こんなものじゃないかと思う。

あれを一種の屈辱と感じて喚き立てた連中がいたんだが、精神年齢の低いキッズ層かな?

なんというか、育成した個体にアイデンティティの一部持ってかれているような印象を受けた。

?  チャンミ用育成の流れ

ついでで書いておく。

今回はまず初期の頃、「先行・差・追込」編成が(サークル内では)流行った。

余裕があれば追記するが、某氏の育成したキングヘイローが差にも関わらず妙に強かったから。

ただ、育成個体が増えるにつれこの編成は廃れた。

各育成個体の完成度が上がってくるとやはり「先行が強い」ことがわかってきたから。

これは、何度か練習すればわかってくる。

上述のキングは「電光石火+終盤スキル多め」というスキル内容だったのだが、それらが有効発動しても序中盤でのリードが十分あれば前脚質の方が先着することが次第に多くなっていった。

ただ、ここで大事だと思うのは、(後で否定されてもいいが)一つの基準があるとそれが目標になって育成方針・キャラ編成が練れてくる、という点だ。

だから、この時点で「エースは先行」というトレンドに変わった。

ここから先は、各トレーナーのデッキパワーや手持ちキャラとの兼ね合い。

ワイは最終的には「大逃げ1・先行2」編成になったが、(サークル内では)「先行2・デバフ(差・追)1」編成が多かった。

? クリオグリは強いが、意識しすぎるのもどうかと

最初の方で「それなりに勝ち目あると思ったから」と書いたが、もう少し詳しく。

忘れないように動画のコメントに書いたが・・

ちょっと時間経って見返したけど、必ずしも「強い」とされているキャラが必ず勝つとは限らないというのがよくわかる。
・水マルは大逃げ2体出された関係でスピードイーター不発
・クリオグリは片方は固有不発
・強硬策から固有出したクリオグリは善戦したが、レーンの魔術師非搭載らしく水マルに引っかかって若干ロスしてる
本来、追い込み向きに想定されていない個体を無理して脚質転換させているので、つくりが甘くなってしまう傾向がある。
さらに最終直線の速度も脚質補正があるとはいえ、スピ1600超えの先行とさほど差がないようで、結局、差し切れていない。(この「惜しくも届かず」展開は本当によく見た)

予選あたりで「惜しくも届かず」展開が多かったので、スピード+終盤スキルマシマシの先行でも勝てるだろうと考えたわけです。

? オ◯リ一着、引退

ところで、クリオグリを意識しすぎてか「クリオグリの固有をナーフすべき」みたいな主張する人をたまに見かける。
twitter でそこそこフォロワー集めてたオ◯リ一着という人がいたのだが、マジで言ってたね。

が、主張が過激すぎたせいか、アンチも発生。

結局、引退しちゃったw

初期の頃など、そんなおかしな主張する人でもなかったのだが、インフルエンサー気取りになってから、主張がどんどん過激になっていった。

経緯を見てた人たちからすると、アレ?って感じだったけど。

特別な情報持っているわけでもない単なるユーザーの一人が、明確なデータも示さずに自分の思いこみで運営の方針にケチをつけるとか、分別ある人だったら絶対にしない。

運営は、チャンミの結果はチェックしているはずで、彼らがいうように不当なまでにクリオグリが強ければ、何らかの手は打ってる。

実態は、「仕上がったクリオグリの勝率はいい」程度だと思う。

そうだとしても、クリオグリをナーフするよりは、ライバルになりそうなキャラ出せばいいだけの話。
(→結局、サイゲさん、クリオグリには使えない強力な賢さオグリサポカ出してきた。これはこれで、なかなかいい対応)

仕上がってない個体も育成できず「ぼくちんが負けたのは、クリオグリが強すぎるせいだ。ナーフしろナーフしろ」ってガキかよ。

サイゲさんによれば、ウマ娘は「10年持つコンテンツに育てたい」らしいので、ある意味幼稚なユーザーは引退してもらった方がいいのかも。

 

ヲタの私服がダサいのは似合う服ではなくて着たい服を着るから?

よくヲタのファッションがダサいと言われるが、その理由は「頭の中がアニメやゲームなどでいっぱいになって、ファッションに興味がないんだろう」と漠然と思われていると思う。

んー、ちょっと違うかな。

確かに着るものに頓着しないという傾向はあるだろうが、強いこだわりを持っているヲタも多い。

例えば、ミリタリー系が好きなヲタは多い

あなたの周囲にもいるでしょ、迷彩服大好きなヲタが。

まあ、私もその傾向あるんだがw

ただ、このとき似合うかどうかよりも着たいものを優先してしまう。

全体な見た目よりも「ここは旬なオーストリア軍モノで、ワッペンかっこいいし」といった(他人から見るとどうでもいいようなw)ディティールを重視して着るモノを選んでしまう。

この傾向は「他人の視線」を意識するまで続く。

ここはヲタ向けのファッション指南のサイトでもなんでもないんで、そういった層にあれこれいうつもりは微塵もない。

むしろ、「他人の視線」を意識するまでは、当事者たちは幸せなんで、それでいいんじゃないかと思っている。

 

 

L.L.Bean 1912 は名作

日常使いでこのところよく使っているのは、Karaku の他に L.L.Bean 。

どっちも通販メインだなw

ところで L.L.Bean といえば、アウトドアなシャツ・アウター類が充実している印象があるが、ジーンズもけっこう良い。

最近、よくはいているのは 1912 というジーンズ。

おすすめの色は ash gray。

これをワンサイズオーバーを腰のベルトでぎゅっとしぼってはくと、なかなか様になる。