記憶庫

自分用のメモです。

ヘルスチェックを実装する

手順

リポジトリの実装

HTTPレスポンスとして返却する文字列を取得するためのリポジトリを実装する。

まずはインタフェースを定義する。

package knowledgefort.chameleon.domain.repository.common.healthcheck;

import org.springframework.stereotype.Repository;

@Repository
public interface HealthCheckRepository {
	String check();
}

次に、インタフェースに対応するMapper XMLを実装する。
PostgreSQLにはOracleのDUAL表に相当するものは存在しない。
SQLで固定値を取得する場合は、FROM句を指定しない。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC
    "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="knowledgefort.chameleon.domain.repository.common.healthcheck.HealthCheckRepository">
    <select id="check" resultType="string">
    <![CDATA[
        SELECT
            'Health Check OK.'
    ]]>
    </select>
</mapper>
サービスの実装

サービス層では、リポジトリから受け取った文字列をコントローラに返却するだけ。

package knowledgefort.chameleon.domain.service.common.healthcheck;

public interface HealthCheckService {
	String check();
}
<||

>|java|
package knowledgefort.chameleon.domain.service.common.healthcheck;

import javax.inject.Inject;

import org.springframework.stereotype.Service;

import knowledgefort.chameleon.domain.repository.common.healthcheck.HealthCheckRepository;

@Service
public class HealthCheckServiceImpl implements HealthCheckService {

	@Inject
	private HealthCheckRepository healthCheckRepository;

	@Override
	public String check() {
		return this.healthCheckRepository.check();
	}
}
コントローラの実装

サービスから受け取ったDBアクセスの取得結果をModelオブジェクトに設定する。
Modelオブジェクトに設定した値は、JSPから参照される。

package knowledgefort.chameleon.app.common.healthcheck;

import javax.inject.Inject;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import knowledgefort.chameleon.domain.service.common.healthcheck.HealthCheckService;

@Controller
@RequestMapping("healthcheck")
public class HealthCheckController {

	@Inject
	private HealthCheckService healthCheckService;

	@RequestMapping
    public String index(Model aModel) {
    	String _result = this.healthCheckService.check();
    	aModel.addAttribute("message", _result);
        return "common/healthcheck/index";
    }
}
JSPの実装

Tilesテンプレートの適用外としたいので、以下のパスに格納する。

/chameleon-web/src/main/webapp/WEB-INF/views/common/healthcheck/index.jsp

コントローラが設定した値を表示するだけなので、内容はこれだけ。

${message}
疎通確認

以下のURLに接続し、"healthcheck"が表示されることを確認する。

http://localhost:8080/chameleon-web/healthcheck/

さらに、HTMLコードが記載されていないことを確認する。