ヘルスチェックを実装する
手順
リポジトリの実装
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コードが記載されていないことを確認する。