前書き
表題の通りです。glassfish触るのは初めて。
手抜き対応でなんとなく動いたので自分用にメモを残します。
※今回は実装の正らしさよりも、とりあえずglassfish環境で動かしてみることを最優先にしています。
正らしさについては別途調べて更新しようと思います。。
限定公開して2年経ったので備忘として全体公開します。
事象
1.そもそもアプリがデプロイできなかった。
2.APIに日本語でパラメータを渡そうとしたら文字化けした。
3.war内のライブラリが読み込まれない。
環境としてはたしか下記の通り。
- 開発環境(ローカル)
- OS:Windows 10
- JavaEEサーバ:tomcat v8.5
- 今回利用した環境
- OS:Linux
- JavaEEサーバ:glassfish4.x
そもそもの話
デプロイするときにGlassfish上のライブラリの方が資材のライブラリよりも先に読み込まれてしまうらしい。
こちらの方は直接Glassfishのライブラリを最新化することで対応されています。
Glassfish4.1上でJacksonを含むアプリを動かす際の注意事項
ライブラリをヘァッと変更できればよかったのですが、他の資材への影響が怖かったので設定ファイルを設けることで回避することにしました。
Guideを読むまで気づかなかったのはしんどいなあ。
GlassFish Server Application Development Guide
対処
1.そもそもアプリがデプロイできなかった。
以下を参考にさせていただきました。
Spring Boot App does not deploy on Glassfish 4.1
とりあえず適当なところにweb.xmlを作成し、mavenで組み込んでもらえるように記述します。
<?xml version="1.0" encoding="UTF-8"?>
<web-app
metadata-complete="true"
version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
</web-app>
<!-- Spring boot deploy on Glassfish -->
<plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webXml>src/main/resources/web.xml</webXml>
</configuration>
</plugin>
これで何とかエラーを吐かずにデプロイできました。
2.APIに日本語でパラメータを渡そうとしたら文字化けした。
glassfish-web.xmlを作って文字コードを指定します。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app>
<parameter-encoding default-charset="UTF-8" />
</glassfish-web-app>
3.ライブラリが読み込まれない。
glassfish-web.xmlにクラスローダの設定を追加します。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app>
<parameter-encoding default-charset="UTF-8" />
<class-loader delegate="true"/>
</glassfish-web-app>