2021年3月22日月曜日

EclipseでwebアプリケーションのDebug

 JavaのIDEであるEclipseを使ってWebアプリケーションをデバックする方法を纏めました

Eclipseのセットアップはこの回で完了していることが前提。

作成したソースコードにブレークポイントを設定します
(行ナンバーの場所でダブルクリック)

デバッグ・モードでサーバーを始動をクリックします

アプリケーションサーバーTomcatが起動します

ブラウザを立ち上げてhttp://localhost:8080/sample01/S01へアクセスします

パースペクティブがデバッグに切り替わります
先ほど設定したブレイクポイントで一時停止しています。
カーソルをオブジェクトに合わせるとポップアップが表示され、変数の内容が細かく確認できます

デバッグ情報が取得できたら、継続してプログラムを実行するため、再開をクリックします

レスポンスを返却した状態

ブラウザにもレスポンスが帰りました

一通りの確認が完了したら、サーバーを停止をクリックしサーバーを停止します




2021年3月21日日曜日

Java servletでHello World

 一連の開発環境が整ったところで、Java servletで簡単なサンプルを作って動作検証してみます。

作成するものは「ブラウザからアクセスされたら、HTMLを生成して応答を返す」です。

Eclipseを起動しておきます。(Eclipseのセットアップはこの回で説明した通り)

メニュー「ファイル」-「新規」-「プロジェクト」を選択します

「Web」-「動的Webプロジェクト」を選択して次へをクリックします

プロジェクト名を指定し(今回はsample01としました)次へをクリックします

次へをクリックします
完了をクリックします

プロジェクトが完成しました。

ここからJavaのservletクラスを作っていきます
ソース(src)を右クリックして「新規」-「クラス」を選択します

クラス名を指定します(Servlet01としています)
Javaクラスの編集準備が出来ました。
このクラスを以下のコードにします

※ソースコードの表示部分に一部HTMLタグが含まれており、正しく表示されていなかったので3/23改変しています。


package sample01;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/S01")
public class Servlet01 extends HttpServlet {

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out.println("<html><head></head><body>");
		out.println("<p>Simple Application</p>");
		out.println("<p>Servlet01</p>");
		out.println("</body></html>");

	}

}
Tomcatの設定ファイルを極力変更したくないので、@WebServletアノテーションにURL「/S01」を指定しています

アプリケーションサーバーtomcatへ組み込みます
サーバービューのlocalhost tomcatを右クリックして「追加および削除」をクリックします
作成したプロジェクト「sample01」を選択状態で「追加」をクリックします(この時点で「sample01」が使用可能から構成済みに移動します。
そして完了をクリックします

サーバービューのlocalhost tomcatに「sample01」が追加になっていますのでサーバーを始動ボタンをクリックします

コンソールビューにtomcatの起動メッセージが流れて起動が完了します

ブラウザを立ち上げて、作成したWebアプリケーションにアクセスします
http://localhost:8080/sample01/S01

URLの意味
httpプロトコル
localhostサーバー
8080Tomcatの実行ポート番号
sample01Webアプリケーション名
S01サーブレットマッピング

プログラムで指定した下記の文字が表示されていれば成功です
Simple Application
Servlet01

2021年3月19日金曜日

Java統合開発環境Eclipseのインストール

 統合開発環境(IDE)がEclipseに決定したことを受け、Windows10へEclipseをインストール、アプリケーションサーバーであるtomcatのデバッグができる設定までを纏めました。

前提条件

Eclipseは日本語化が完了しすぐ使えるEclipse  All in One を使用します

    ここへアクセス https://mergedoc.osdn.jp/

    最新版Eclipse2020をクリックします

    JDKは既にインストール済みなので、JDK無しのもので、Downloadボタンをクリックします
    なお、下記のような説明文にもあるように解凍ソフト7zipを事前に準備しておきます
    • Windows では 7-Zip で解凍してください。それ以外で解凍した場合、パス長 260 文字制限により正常動作しません。
    zipファイルのダウンロードリンクをクリックします

    ダウンロード中...
    ダウンロードが完了したら、任意の場所に解凍するだけでインストールは完了です

    解凍したフォルダの中にあるeclipse.exeをダブルクリックして起動します


    起動時に作成したソースコードなどを格納するワークスペースの保存先を聞かれるので、指定して起動をクリックします。
    (この場所をデフォルトとして使用にチェックを入れておくと次回以降このダイアログは出なくなります)
    起動が完了しました

    続けていくつかやっておくと便利な設定をしていきます

    まずjava(JDK)の設定をします
    メニュー「ウィンドウ」-「設定」-「Java」-「インストール済みのJRE」ここで自身の環境にインストール済みのJRE(JDK)を指定しておきます

    これは好みですが、IDEの外観を「ダーク」にしてみます
    メニュー「ウィンドウ」-「設定」-「一般」-「外観」ここでルック&フィールを「ダーク」に指定し、適用して閉じるをクリックします

    Eclipseの再起動が必要ですが、見た感じがこんな感じになりました。


    ここからTomcatのデバッグ用の設定をします


    メニュー「ウィンドウ」-「ビューの表示」-「その他」と進み「サーバー」の中から「サーバー」を選択し開くをクリックします。

    サーバービューが表示されました。
    「使用可能なサーバーがありません」をクリックします。

    サーバーのタイプを選択で「tomcat」でフィルターし、インストール済みのTomcat9を選択し次へをクリックします

    Tomcat9インストール先ディレクトリ、JREを指定して次へをクリックします

    まだアプリケーションが無いので、このまま完了をクリックします

    Tomcat9がセットアップされました。

    次回は簡単なサーブレットを作成し、このサーバー上で起動させるところまでを記載したいと思います。

    2021年3月18日木曜日

    IDE(EclipseかVisualStudioCodeが候補)を決める


    結果から申し上げますとKingFisheの開発はEclipseで行きます。

     IDEとは統合開発環境のことで、Javaで開発を行う場合、次の3つの内どれかを使うのが一般的です。

    • IntelliJ IDEA
    • Eclipse
    • NetBeans
    今回KingFisheの開発を進めるに当たり、個人的な趣向もあり、IDEではありませんが、プラグインを追加することで拡張でき、なおかつ軽量なVisualStudioCodeが使えないか検討しました。


    VisualStudioCodeにJavaとTomcatプラグインを追加

    なかなか良くできていて、見た感じもGood。
    ただ、私がやり方を知らないだけかもしれませんが、コンパイルや実行エラーが英語表示、Tomcatのコンソールが文字化けする、VisualStudioCodeでのJavaの開発自体がマイナーなんでしょうか、ネットの情報も少なめということで、学習コストを考えて今回は見送りとしました。


    Eclipse All in One

    こちらは、最初から必要なものが一式そろっていて、直ぐ開発に取り掛かれるのと、何といっても歴史があり、ネット上の情報も豊富なことから、Eclipseでの開発を行う事に決定しました。
    次回以降、EclipseのインストールとWebアプリケーション(Hellow World レベル)を紹介したいと思います。

    2021年3月17日水曜日

    MySQL データのバックアップとリストア(2)

    MySQL8.0 コマンド(mysqldump)を使用してデータベースのデータバックアップとリストアを実施してみます。

     今回はデータベース運用中のオンラインバックアップとリストアです

    全データベースをバックアップするコマンド

    C:\>mysqldump -u [ユーザー] -p --all-databases > [バックアップファイル]
    

    データベース指定してバックアップするコマンド

    C:\>mysqldump -u [ユーザー] -p [データベース名] > [バックアップファイル]
    

    全データベースを復元するコマンド

    C:\>mysql -u [ユーザー] -p  < [バックアップファイル]
    

    データベースを指定して復元するコマンド

    C:\>mysql -u [ユーザー] -p -D [データベース名] < [バックアップファイル]
    


    実施環境:Windows10,MySQL8.0.22

    バックアップ前の状態は以下の様な構成(テーブルはすべてInnoDB)

    • データベース 「javadev」 この中に テーブル「new_table1」と「new_table2」
    • データベース 「javadev2」 この中に テーブル「new_table1」
    workbenchでバック前の内容を確認してみます



    全データベースをバックアップするコマンド(途中改行しないように)

    C:\>mysqldump -u root -p --all-databases > c:\Download\data\alldata.dmp
    

    これでc:\Download\data\alldata.dmpというファイルが作成されます(バックアップファイル)

    ここからリストアしてみましょう

    確認できるようにテーブルを削除しておきます


    全データベースを復元するコマンド(途中改行しないように)

    C:\>mysql -u root -p  < c:\Download\data\alldata.dmp
    

    workbenchで結果を確認してみます(きれいに復元されました)




    最後に

    上記例はいずれも、mysqldumpの「--lock-tables」オプションが有効になっている状態です(デフォルト)。
    これは、バックアップにあたり、テーブルロックを行い実施しますので、オンライン中、行ロックを含む、ロック状態のテーブルがあるとコマンドがロック解放待ち状態になります。

    ロック待ちをしたくない場合、mysqldumpで「--single-transaction」オプションを指定すると、バックアップ開始時のスナップショットを元にバックアップが実行されます。
    (この場合、バックアップ開始時点の状態がバックアップされる)

    C:\>mysqldump --single-transaction -u [ユーザー] -p --all-databases > [バックアップファイル]
    


    これをバッチファイル化してタスクスケジューラー等に組み込み場合 -p[パスワード] (-pに半角スペースを入れず続けて記述したもの)を使います。

    ただし、" [Warning] Using a password on the command line interface can be insecure."パスワードをコマンドに書き込むなというワーニングが出ます。

    C:\>mysqldump --single-transaction -u [ユーザー] -p[パスワード] --all-databases > [バックアップファイル]
    

    適格請求書等保存方式(インボイス制度)と消費税の端数処理

    消費税の税額計算は 売上税額-仕入れ税額=納税額 2023年10月以降、この納税額の計算の元になる請求書は適格請求書(インボイス)の保存が必要となる。 2019年10月から消費税が10%に引き上げられる際に、日用品等は8%に据え置かれ複数税率を扱う事業者が発生する。 この軽減税率...