記憶庫

自分用のメモです。

今日のスクラップ

超人ロックがホンモノかニセモノか確実に見分ける方法はない
つまりすべて「ニセモノ」なのだ!
たとえホンモノがいたとしてもな!

聖悠紀超人ロック 永遠の旅人」

トラブルシューティング

データベース未起動によるエラー

事象

以下のメッセージが表示される。

18:14:17,228 WARN [org.springframework.web.context.support.XmlWebApplicationContext] (ServerService Thread Pool -- 83) Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.jdbc.datasource.init.DataSourceInitializer#0': Invocation of init method failed; nested exception is org.springframework.jdbc.datasource.init.UncategorizedScriptException: Failed to execute database script; nested exception is org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: Cannot create PoolableConnectionFactory (java.net.ConnectException: ポート1,527のサーバーlocalhostへの接続中にメッセージConnection refused: connectでエラーが発生しました。)

原因

ローカル環境のApache Derbyが起動していない。

対処法

ローカル環境のApache Derbyを起動し、WildFlyを再起動する。

WildFlyにJDBCデータソースを設定する

手順

PostgreSQL JDBCドライバの入手

以下のサイトから、最新のPostgreSQL JDBCドライバを入手する。

jdbc.postgresql.org

JDBCドライバのデプロイ

WildFly管理コンソールのメニューの「Deployments」をクリックする。

画面左上の"Add"ボタンをクリックする。

選択項目から「Upload Deployment」を選択する。

「Add Deployment」画面が表示されるので、前項で入手したPostgreSQL JDBCドライバをドラッグ&ドロップする。

"Next>>"ボタン、"Finish"ボタンをクリックする。

画面の左側に、アップロードしたファイル名が表示されていることを確認する。

JDBCデータソースの設定

管理コンソールを、"Configuration" ⇒ "Subsystems" ⇒ "Datasources" ⇒ "Non-XA" と辿り、画面右上の"Add"ボタンをクリックする。


【要精査】Non-XAだと2フェーズコミットが出来ないはず。それでいいか検証。


ラジオボタンの選択項目から、一番上の"Custom"を選択し、"Next>>"ボタンをクリックする。


Nameに以下を設定する。

ChameleonReadCommitted


JNDI Nameに以下を設定する。ここで設定したJNDI名は、Webアプリケーションから参照される。

java:/jdbc/ChameleonReadCommitted


※ NameとJNDI Nameは、後で設定するトランザクション分離レベルが判るような名前にしておく(ここではREAD COMMITTEDに設定する)。


"Next>>"ボタンをクリックする。


ダイアログ上部の"Detected Driver"をクリックすると、先ほどデプロイした "derbyclient-10.12.1.1.jar" がリストに表示されるので、選択して"Next>>"ボタンをクリックする。


Connection URLに、以下を設定する。

jdbc:derby://localhost:1527/C:/Users/Equinox/Chameleon;create=true

"Next>>"ボタン、"Finish"ボタンをクリックする。


Datasourceの列に "ChameleonReadCommitted" が追加されたことを確認する。

トランザクション分離レベルの設定

作成した "ChameleonReadCommitted" の右側にあるプルダウンの "View" をクリックすると、データソースの編集画面が表示されるので、"Connection"タブをクリックする。

接続設定の画面が表示されるので、"Edit"リンクをクリックすると、画面が編集モードになるので、Transaction Isolation: の項目から TRANSACTION_READ_COMMITTED を選択し、"Save"ボタンをクリックする。

TODO:"Save"ボタンをクリックすると、"The Data Source ChameleonSerializable is still enabled. Please disabled it, to make changes to the configuration."メッセージが表示される。

疎通確認

管理コンソールを"Configuration" ⇒ "Subsystems" ⇒ "Datasources" ⇒ "Non-XA" ⇒ "ChameleonDS"と辿り、"View"をクリックする。

"Connection"をクリックし、"Test Connection"ボタンをクリックする。

ダイアログがポップアップし、メッセージ "Successfully created JDBC connection." が表示されれば疎通OK。

WildFlyの管理コンソールにアクセスする

手順

WildFlyを展開したディレクトリ)\bin\standalone.bat を実行し、WildFlyを起動する。

Webブラウザから http://localhost:8080/ に接続し、画面中央右の "Administration Console" リンクをクリックする。

ユーザを追加していないと、以下のエラー画面に飛ばされる。

管理ユーザを追加するには、(WildFlyを展開したディレクトリ)\bin\add-user.bat を実行する。
以下のように作成するユーザの種別を聞かれるので、何も入力せずにEnterキーを押下する(管理ユーザが選択される)。

登録するユーザ名とパスワードを聞かれるのでご随意に。

以下のように所属するグループ名を聞かれるので、何も入力せずにEnterキーを押下する。

'ManagementRealm' 領域に作成ユーザを追加するかどうか聞かれるので、"yes" を入力してEnterキーを押下する。

最後のリモート接続設定云々(?)の質問には、"no" を入力してEnterキーを押下する。
以上で管理ユーザ登録の手続きは終わり。

再度 http://localhost:8080/ に接続し、画面中央右の "Administration Console" リンクをクリックすると、ログインダイアログが表示されるので、先刻登録したユーザIDとパスワードを入力。

ログインに成功すると、晴れて管理画面が表示される。


参考文献

k-koba.hatenablog.com

Tilesテンプレートからフッター部分を分離する

手順

タイル定義にフッター枠を追加する

/chameleon-web/src/main/webapp/WEB-INF/tiles/tiles-definitions.xmlApache Tilesの定義ファイル)に、フッター枠を追加する。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE tiles-definitions PUBLIC
    "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"
    "http://tiles.apache.org/dtds/tiles-config_3_0.dtd">

<tiles-definitions>
    <definition name="layouts" template="/WEB-INF/views/layout/template.jsp">
        <put-attribute name="title" value="Chameleon" />
        <put-attribute name="header"
            value="/WEB-INF/views/layout/header.jsp" />
        <put-attribute name="body" value="" />
        <!-- フッター枠を追加する -->
        <put-attribute name="footer"
            value="/WEB-INF/views/layout/footer.jsp" />
    </definition>

    <definition name="*/*" extends="layouts">
        <put-attribute name="title" value="title.{1}.{2}" />
        <put-attribute name="body" value="/WEB-INF/views/{1}/{2}.jsp" />
    </definition>
</tiles-definitions>
フッターの記述を移動する

/Chameleon-web/src/main/webapp/WEB-INF/views/layout/template.jsp(レイアウト定義テンプレート) を以下の通りに修正する。

<!DOCTYPE html>
<html class="no-js">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="viewport" content="width=device-width" />
<script type="text/javascript">
    
</script>
<c:set var="titleKey">
    <tiles:insertAttribute name="title" ignore="true" />
</c:set>
<title><spring:message code="${titleKey}" text="chameleon" /></title>
<link rel="stylesheet" href="${pageContext.request.contextPath}/resources/app/css/styles.css">
</head>
<body>
    <div class="container">
        <tiles:insertAttribute name="header" />
        <tiles:insertAttribute name="body" />
        <hr>
        <tiles:insertAttribute name="footer" />
<!-- 
        <p style="text-align: center; background: #e5eCf9;">Copyright &copy; 20XX CompanyName</p>
 -->
    </div>
</body>
</html>

上記でコメントアウトしたフッターの記述を、/Chameleon-web/src/main/webapp/WEB-INF/views/layout/footer.jsp に切り出す。
ついでに表記も修正。

<p style="text-align: center; background: #e5eCf9;">Copyright &copy; 2017 KnowledgeFort</p>
表示確認

以下の通り表示されればOK。

TERASOLUNAブランクアプリケーションを起動してみる

手順

Package Exploler の chameleon-web を右クリックし、Run As ⇒ Run on Server を選択する。

WildFly 10.x を選択し、「Finish」ボタンをクリックする。

ブラウザが起動し、ブランクプロジェクトのサンプル画面が表示される。

f:id:knowledgefort:20191231224705p:plain

SQL DDLの作成(書き掛け)

SQL DDLの作成

以下の内容のSQL DDL を作成し、chameleon-initdb プロジェクト直下に配置する。
文字エンコーディングUTF-8 とし、ファイル名は ddl.txt とでもしておく。

-- SQLファイルを実行する際は、コンソールから以下のコマンドで接続する。
-- connect 'jdbc:derby://localhost:1527/C:/Users/Equinox/Chameleon;create=true';

-- 種族マスタ