ASi

Amazon Linux / GlassFish に servlet を deploy

結論から言うと、servlet からの MySQL への JPA を介したアクセスに成功できず諦めた。以下は途中までの記録でしかない。

JDBC Connection Pool

下記を参考
http://niwaka.hateblo.jp/entry/2015/02/25/215731
https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-usagenotes-glassfish-config.html


sudo cp mysql-connector-java-5.1.40-bin.jar /usr/sbin/glassfish4/glassfish/domains/domain1/lib/ext/


JDBC Connection Pool を作る

  • JDBC - JDBC Connection Pools を開き
  • Pool Name: MySQLPool
  • Resource Type: javax.sql.DataSource
  • Database Driver Vendor: MySql
  • Introspect: not checked # 分からないのでとりあえず
  • Next


…としたが、
http://stackoverflow.com/questions/33048435/glassfish-admin-console-throws-java-lang-illegalstateexception-when-creating-jdb
https://java.net/jira/browse/GLASSFISH-21314
が発生して頓挫。


結局
http://qiita.com/akiraabe/items/c11c3aad7873ca0239ec に asadmin での追加方法がありそれを実施。

$ sudo /usr/sbin/glassfish4/bin/asadmin create-jdbc-connection-pool --datasourceclassname com.mysql.jdbc.jdbc2.optional.MysqlDataSource --restype javax.sql.DataSource MySQLPool
# 上で作った pool 名を指定して、jdbc/MySQL を persistence.xml に指定する jta-data-source として作成する。
$ sudo /usr/sbin/glassfish4/bin/asadmin create-jdbc-resource --connectionpoolid MySQLPool jdbc/MySQL


改めて

  • JDBC - JDBC Connection Pools を開き MySQLPool が作成されていることを確認。
  • Additional Properties タブを開き下記を追加。パスワード無しはうまくいかないようなのでこの時設定した。(設定するのが当然だが検証だったため未設定であった)

User root
PortNumber 3306
DatabaseName DB1
serverName localhost
Password ****

  • General タブで Ping ボタンを押し Succeeded。
  • JDBC - JDBC Resources を開き、jdbc/MySQL が作成されていることを確認。

servlet deploy

結論から言うと GlassFish は諦めた。


Eclipse での開発を前提としていたが、Eclipse 4.6 現在、Targeted Runtime として GlassFish を local PC (OSX) で動作させようとすると、JDK6 or 7 を要求される。しかし JDK7 すら既にサポート切れで Oracle からダウンロードは通常はできない。


OSX Sierra 10.12.2 現在 OSX の通常の JDK は 8 である。

$ /usr/libexec/java_home
/Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home


servlet のデプロイまではでき、GlassFishMySQL との接続まではできたらしいが、servlet からの JPA での MySQL へのアクセスは成功しなかった。何か設定の齟齬かもしれないが、それを追求する気にならなかった。ブラウザ向けの GUI コンソールで JDBC Connection Pool が作れないのが known issue であったが、fix は GlassFish ver 5.x になる、といったような開発状況で、トラブルがあった時の解決に付いてリスクが高い。