1
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?

Libertyで Spring Boot 3 を動かす

Last updated at Posted at 2024-09-25

目的

Libertyで Spring Boot 3 のプログラムをテストします。

Spring Boot 3 プログラムのベースを入手

いつものDockerに用意するのではなく、Spring Boot 3 プログラムのベースを作成するところから説明します。
Spring InitializerでMavenを指定してプロジェクトをダウンロードします。

Spring Initializer

image.png

画像のように指定して GENERATE ボタンを押してダウンロードします。
PackagingはWarにします。

Eclipseにプロジェクトをインポート

ダウンロードした zip を Eclipseにインポートします。

zip は unzip しておきます。インポートするとそこがプロジェクトのディレクトリになるので、それを考慮します。

File > Import で Existing Maven Projects を選択し、

image.png

unzipしたディレクトリを選択するとインポートできます。

image.png

他に必要な構成 (方法はここでは省略)

  • Libertyサーバーの追加とプロジェクトのビルドパスへの追加

注:Libertyは最新を使うようにします。導入済みのものでテストしてたら、最新で修正される関係ないエラーが発生してしまいました。mavenのプラグインからでも起動はできるように構成はできますが、ここでは別の構成としました。

Hello World!!コードを追加してビルド

Eclipseを使ってソースを追加します。

HelloController.java
package pdprof.spring;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HelloController {

	@RequestMapping(value = "/hello")
	@ResponseBody
	private String hello() {
		return "Hello World!!";
	}
}

書き方の詳細は気になったキーワードで検索、ということでここでは省略します。
その後はプロジェクトの右クリックメニューから Run As > Maven install でwarファイルを作成します。

image.png

注: war は Mavenプロジェクトのtargetディレクトリに作成されます。

Libertyサーバーの構成と起動

Eclipseで先ほど作成したLibertyサーバーの server.xml に feature を追加します。また、springBootApplicationの location を maven install したときに作成される war ファイルを指定します。

server.xml
<server description="new server">

    <!-- Enable features -->
    <featureManager>
    	<feature>servlet-6.0</feature>
        <feature>springboot-3.0</feature>
        <feature>localConnector-1.0</feature>
    </featureManager>

    <!-- To access this server from a remote client add a host attribute to the following element, e.g. host="*" -->
    <httpEndpoint httpPort="9080" httpsPort="9443" id="defaultHttpEndpoint"/>

    <!-- Automatically expand WAR files and EAR files -->
    <applicationManager autoExpand="true"/>
    
    <springBootApplication location="/home/keniooi/git/spring-boot/workspace/pdprof/target/pdprof-0.0.1-SNAPSHOT.war">
		<applicationArgument>--server.servlet.context-path=/spring-boot</applicationArgument>
    </springBootApplication>

    <!-- Default SSL configuration enables trust for default certificates from the Java runtime --> 
    <ssl id="defaultSSLConfig" trustDefaultCerts="true"/>
</server>

構成を保管したらサーバーを起動します。

image.png

http://localhost:9080/spring-boot/hello にアクセスして動作を確認します。

image.png

Gitレポジトリ

ここまではプログラムの作成方法でしたが、Dockerを使った実行環境を構築して、動作を確認します。用意したGitレポジトリをクローンします。

git clone https://github.com/keniooi/spring-boot.git
cd spring-boot/spring-boot-docker/

レポジトリの構成

  • workspace - eclipse workspace
  • spring-boot-docker - Docker環境構築用ファイル

workspaceのほうはそのまま使用するか、別のworkspaceにインポートするなどして使用します。

Libertyのイメージをビルドして開始

Spring Bootコードとサーバー構成を含むイメージをビルドします。

./setup-docker.sh
./start.sh

コンテナーの動作確認

http://localhost:9080/spring-boot/hello にアクセスして動作を確認します。

image.png

トラブルシューティング

毎度のことですが、よくつかう dockerコマンドを書いておきます。この文書でもpodman, dockerとまとまりがないですが、Linux では dockerがpodmanを呼び出すようになっていました。

docker ps # 動作中のContainer確認
docker logs -f spring-boot # ログ確認
docker restart spring-boot # 再起動
docker inspect spring-boot # container 確認
docker exec -it spring-booti bash # Container内状況確認

など試してみましょう。

まとめ

Eclipseを使ってLibertyで動作するSpring BootのHello World!!を作成しました。
Spring BootのアプリケーションをDockerコンテナーで起動して動作をテストしました。

1
0
1

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
1
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?