0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

tomcat環境で作ったspring bootアプリがglassfish環境でうまく動かなかった

Last updated at Posted at 2021-02-16

前書き

表題の通りです。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で組み込んでもらえるように記述します。

web.xml
<?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>
pom.xml
<!-- 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を作って文字コードを指定します。

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にクラスローダの設定を追加します。

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>
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?