JAVA関連のことを調べてみた

JAVA関連のことを調べてみた

nablarch: nablarch-example-batchをdockerコンテナにする方法

## はじめに
nablarch-example-batchは、nablarchフレームワークのバッチアプリケーション実装例である。

ただし、nablarch-example-batchはdocker用のexampleを提供していない。
このページでは、dockerコンテナでnablarch-example-batchを動かす方法を説明する。

### 結局、どうやったらできるのか

以下の通り。`mvn package`コマンドは[nablarch-example-batch手順](https://github.com/nablarch/nablarch-example-batch)に従って事前に実行する前提とする。

“`compose.yml
services:
backend:
build: .
“`

“`dockerfile:Dockerfile
# syntax=docker.io/docker/dockerfile:1
FROM amazoncorretto:8-alpine3.19-jre

WORKDIR /opt/app

# zipの中

元記事を表示

nablarch: nablarch-example-restをdockerコンテナにする方法

## はじめに:nablarch-example-restの課題

nablarch-example-restは、nablarchフレームワークのRESTアプリケーション実装例である。

ただし、nablarch-example-restはdocker用のexampleを提供していない。
かわりに[waitt(Web Application Integration Test Tool)](https://github.com/kawasima/waitt)ツールによるexampleが提供されているが、
waittは複数アプリの結合などを行うことが難しい上にメンテナンスされていないため、tomcatバージョンも変更困難である点が難点。

このページでは、より人気が高く機能も豊富であるdockerコンテナでnablarch-example-restを動かす方法を説明する。

## 前提条件

– docker(インストール手順は[こちら](https://qiita.com/KO_YAmajun/items/41ea85d30f143b25135c)を参照)
– jdk(8または17)

元記事を表示

tomcat: docker環境下で管理画面にアクセスするためのDockerfileは?

## はじめに:Tomcatとは

Apache Tomcat は、Java用のWebコンテナである。
war(Web Application Archive)ファイルを用いてWebページやRESTAPIを公開することができる。

## この記事でできること

dockerのTomcatイメージはデフォルトでは管理画面を提供しないので、利用にはひと手間が必要。
この記事では、docker環境下でtomcatの管理画面の利用方法を説明する。

:::note
– docker環境下で、`http://localhost:8080/manager/html` から tomcatの管理画面にアクセスできる
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/161516/51afaf81-5384-b9cd-ee38-905953b91df6.png)

### 前置き

このページではdockerはセットアップできている前提とする。dockerのセットアップ方法はこちら

https:/

元記事を表示

JSPの基礎

JSPの基礎について自分用の備忘録をまとめる
学習のため参考にしたページは下記(読んだ順を昇順に記載)

基本的には下記ページで学習し、
このページのメモは、下記ページで学習の際に記載されていなかったことや、追加で調べたことを記載し、まとめる
#### 参考ページ
[JSPって何?〜JSPの基礎を知ろう!!〜](https://qiita.com/Yuriko-Y/items/06a16dde3d85ec83342b)
[Spring BootでThymeleafとJSPを併用する](https://qiita.com/KoSunOQ/items/754ebdab15f7a308edf0)
[Servlet&JSPコンテナとしてのTomcat,Spring MVC,Springbootの関係。](https://qiita.com/naiveprince0507/items/a35193d5bd219846367d)
[【Java】Spring BootでThymeleafとJSPを共存させる方法](https://qiita.com/yaju/items/9306784cbf1df

元記事を表示

[BigQuery API(V2)] Javaでデータセットを取得する

BigQuery API V2(Java)を使用して、
BigQueryのデータセットを取得する方法
についてご紹介します。

取得可能なデータセットはAPIで使用するメールアドレス
(サービスアカウントメールアドレス or OAuth2.0認証を行うメールアドレス)
からのアクセス権限が付与されているものだけです。

権限付与に関しては
[⧉[BigQuery API(V2)] JavaでBigQueryを使う(2.権限付与)](https://qiita.com/doran/items/8b7ba29672527426e88d#2-権限付与)
を参照ください。

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[BigQuery API(V2)] JavaでBigQueryを使う](https://qiita.com/doran/items/8b7ba29672527426e88d)
を参照ください。
:::

|No||目次|
|—|—|—|
|1||[データセット一覧を取得](#1-データセット一覧を取得)|
||1

元記事を表示

Bean定義について

Bean定義とは何か、自分用の備忘録としてまとめる

### Spring FrameworkにおけるBean
Spring FrameworkにおけるBeanの使い方では、使用するBeanの定義をXMLファイルに宣言する必要がある。
以下のような感じで毎回。。。
“`

“`
詳細な設定方法については、ググればたくさん詳しいものが出てくると思うのでここでは割愛。

とにかくインスタンス化したいクラスを作成するたびにXMLファイルを編集する必要があり、面倒くさいんですね。

### Spring BootでBeanの管理をもっと簡単に
そこで、Spring Bootです。
Spring Bootではアノテーション方式で設定が可能なのです。

まず、Beanインスタンス作成するためのメソッドの前に@Beanアノテーションを追加し、Beanインスタンスを返値として指定します。

また、そのメソッドを保持するクラスの前には@Configurationアノテーションをつけてください。
これで設定ファイル(XM

元記事を表示

Javaで「文字列リテラル」の動作を確認してみた

# 概要

Javaで「文字列リテラル」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/num/index3.html

# 実装

以下のファイルを作成しました。
“`JSample3_1.java
class JSample3_1{
public static void main(String[] args){
System.out.println(“Hello World”);
System.out.println(“こんにちは”);
}
}
“`

以下のコマンドを実行しました。
“`
$ javac -encoding UTF-8 JSample3_1.java
$ java JSample3_1
Hello World
こんにちは
“`

# まとめ

何かの役に立てばと。

元記事を表示

[BigQuery API(V2)] JavaでBigQueryを使う

BigQuery API(V2)をJavaで使ってみました。
今回の記事はAPIの利用を開始するのに必要なことを記事にしました。

***BigQuery APIとは***
BigQueryとは、Googleが提供するデータウェアハウスです。
大容量のデータを高速で安価に解析できることが特徴です。

BigQueryを操作するAPIはいくつも用意されています。
今回はその中のメインとなる「BigQuery API」を利用します。
|API|内容|
|—|—|
|BigQuery API|データセット、テーブル、ジョブ、ルーティンなどのコアリソースを作成、変更、削除するためのリソースを提供するメインのAPI|
|BigQuery Data Policy API|列レベルのセキュリティとデータ マスキングに関する BigQuery データポリシーを管理|
|BigQuery Connection API|BigQuery で Cloud SQL などのリモート データソースを操作できるように、リモート接続を確立するためのコントロール プレーンを提供するAPI|
|BigQuery

元記事を表示

VSCodeVimで末尾にセミコロンをいれるショートカットを作りたい!

# セミコロン 末尾に打つの 面倒くさい (五七五)
`C++`や`Java`を書くとき, セミコロンいれるの面倒くさいですよね.今回はVSCodeの拡張機能のVimで簡単に末尾にセミコロンをいれるショートカットをキーバインディングを使って設定してみました.

以下はMacでの設定です.その他のOSは適宜キーなどを読み替えてください.

# 手順
## どのキーを割り当てるか決める
* `Shift` + `Enter`
* `Ctrl` + `Enter`
* `Ctrl` + `;`
など.

## setting.jsonに記述
`keybindings.json`を開き,設定を追加します.

開き方

1. 左下の設定マークをクリックする
1. キーボードショートカット(Keyboard Shortcuts)をクリックする.
1. 右上の紙がクルッと回っているようなアイコンをクリックする.

### `Shift` + `Enter`の場合
“`

元記事を表示

【Java】CyclicBarrierによる処理同期化

Javaではマルチスレッドによる並列処理に対して同期化処理をすることができます。
同期化処理とは複数のスレッドが並行して実行されているときに処理の順番を制御することです。

同期化支援するクラスとしてCyclicBarrierというクラスが存在しています。
バリアーと呼ばれる複数スレッドが待機するポイントを処理の中で実装し、全てのスレッドがバリアーに到達すると実行されるバリアーアクションと呼ばれる処理を実行するのがCyclicBarrierの機能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/935552/dbba36d4-012c-91fd-561b-8d28723617ad.png)

CyclicBarrierのインスタンスを生成する際には第1引数に同期をとるスレッド数、第2引数にバリアーアクションの処理を受け取ります。

“` Sample.java
public static void main(String[] arg) throws Exception {

元記事を表示

JavaのNullハンドリング

– 環境
Java 11以上

数年ぶりにJava(サーバーサイド)を使う機会があり、Nullチェックの方法についてのメモ。
以下のようなクラスのオブジェクトのGetterにアクセスしたいが、オブジェクトもフィールドもnullかもしれない場合の実装方法について、検討してみた。

“`Java
@Data
@AllArgsConstructor
@NoArgsConstructor
class SampleClass {
private BigDecimal bd;
}
“`

## よくある方法(やりたくない)
“`Java
// ①nullだったら何らかの値にしたい場合
var str = (obj == null ? “” : (obj.getBd() == null ? “” : obj.getBd().toPlainString()));
System.out.println(“str=” + str);

// ②nullだったら何もしたくない場合
if (Objects.nonNull(obj) && Objects.nonNull(obj.ge

元記事を表示

Javaで「文字リテラルと文字コード」の動作を確認してみた

# 概要

Javaで「文字リテラルと文字コード」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/num/index1.html

# 実装

以下のファイルを作成しました。
“`JSample1_1.java
class JSample1_1{
public static void main(String[] args){
System.out.println(‘a’);
System.out.println(‘あ’);
}
}
“`
“`JSample1_2.java
class JSample1_2{
public static void main(String[] args){
System.out.println(‘a’);
System.out.println(0x0061);
System.out.println(‘\u0061’);
}
}
“`

以下のコマンドを実行しました。
“`
$ javac -encoding UTF-

元記事を表示

Springboot-MVCのデモ作成

SpringBootで、MVCモデルでアプリケーションを作成する必要が出てきたので、
練習、忘備録として記録。

formに検索条件を入力したら、DBの該当レコードを右側に表示する簡単なアプリを作成。
MybatisでのDB接続、Validationの実装など、仕事で使いそうなところを軽く確認。

### Github Repository
https://github.com/ryoheiY/Spring-mvc-demo

インメモリDBを使っているので、cloneすればすぐ動作します。
一応テストコードも用意。
## Controller
以下コントローラ、
詰まった点
・executeSearchメソッドにて、@Validatedアノテーションの引数の直後にBindingResultを
 セットしなければならなかった。
・executeSearchメソッドにて、BindingResultと紐づけるにはModelの属性名を
 クラス名の頭文字lowercaseで指定しなければならず、解決に時間がかかった。
~~~java
package com.example.demo.sear

元記事を表示

JSONとJavaオブジェクトの相互変換にはObjectMapperクラスを使おう【JSONの配列データにも対応】

JAVAのAPIの開発などで、

・「JSON」を「Javaオブジェクト」に変換する

または

・「Javaオブジェクト」を「JSON」に変換する

という実装をよく見かける。つまりJSONとjavaオブジェクト間の相互変換処理である。
しばらくすると忘れてしまうため、備忘録のため実装方法をまとめておく。

# 1.JSONデータ → Javaオブジェクトへの変換
まずはJSONデータからJavaオブジェクトへの変換処理についてまとめてみる。
例として配列構造を含むJSONを変換してみる。
“`json
{
“id”: 10,
“title”: “ユーザー情報”,
“userInfo”: [
{
“name”: “ジョジョ”,
“age”: 30
},
{
“name”: “DIO”,
“age”: 35
}
]
}
“`

## 変換用のクラスを用意する
変換対象となるJSONデータおプロパティ名に応じたフィールドを用意したクラスを作る。
配列構造となる部分は、UserInfo型のフィールドを用意することで対応する。

“`ja

元記事を表示

[Cloud Storage API(V2)] Javaで変更通知(通知サブスクリプション)を登録・削除する

Cloud Storage API V2(Java)を使用して、
Cloud Storageの変更通知(通知サブスクリプション)を登録・削除する方法
についてご紹介します。

Cloud Storageの変更通知の受信はPub/SubというGCPのサービスを利用します。

:::note info
Pub/Sub、Cloud Functionsの準備や設定に関しては、
[⧉[Pub/Sub – Cloud Functions] Google Cloud APIからの通知を受け取る](https://qiita.com/doran/items/343dac28c46143d61917)
を参照ください。
:::

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Cloud Storage API(V2)] JavaでCloud Storageを使う](https://qiita.com/doran/items/2a5f7ef8070fd5b8c94d)
を参照ください。
:::

|No||目次|
|—|—|—|
|1||[

元記事を表示

[Cloud Storage API(V2)] Javaで論理的削除されたオブジェクトをリストア(復元)する

Cloud Storage API V2(Java)を使用して、
Cloud Storageの論理的削除されたオブジェクトをリストア(復元)する方法
についてご紹介します。

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Cloud Storage API(V2)] JavaでCloud Storageを使う](https://qiita.com/doran/items/2a5f7ef8070fd5b8c94d)
を参照ください。
:::

|No|||目次|
|—|—|—|—|
|1|||[オブジェクトをリストア](#1-オブジェクトをリストア)|
||1||[スコープ](#11-スコープ)|
||2||[実行](#12-実行)|
||3||[レスポンスの内容](#13-レスポンスの内容)|
|2|||[バケット内の複数オブジェクトをリストア](#2-バケット内の複数オブジェクトをリストア)|
||1||[スコープ](#21-スコープ)|
||2||[実行](#12-実行)|
||3||[レスポンスの内容](#23

元記事を表示

MapのKeyの小文字化がStreamAPIで簡単にできた

# はじめに

Mapのキーに大小文字が混在している場合、for文の中で`String.toLowerCase()`と`Map.put()`を繰り返してキーを小文字化する処理を作ったことがあるが、最近のJavaではStreamを使って簡単にできるらしいと聞いたので試しに書いてみた。

# サンプルコード

“`java:toLowerKey()
public static Map toLowerKey(Map map) {
return map.entrySet().stream()
.collect(Collectors.toMap(
e -> (e.getKey() == null) ? e.getKey() : e.getKey().toLowerCase(),
e -> e.getValue(),
(oldEntry, newEntry

元記事を表示

@WebMvcTestや@JdbcTestではなく@SpringBootTestを使おう

`@WebMvcTest`や`@JdbcTest`は、テスト起動時のAuto Configurationで生成されるBeanを減らすことで、テスト時間を削減することが目的です。
対して`@SpringBootTest`は基本的に`main()`メソッド実行時と同じだけAuto ConfigurationでBeanが生成されます(特に`webEnvironment = RANDOM_PORT`または`webEnvironment = DEFINED_PORT`の場合)。
しかし、テスト時間削減により効果的なのはDIコンテナの作成回数を減らすことです。それに比べればAuto Configurationで生成されるBeanを減らすことによる時間削減効果は微々たるものです。
加えて、`@WebMvcTest`や`@JdbcTest`は一部のBeanが生成されないため、「あれ?この機能が動かないぞ?」といったハマりに頻繁に遭遇します。これのトラブルシュートは不可能ではありませんが、けっこう大変です。
そうなると、基本的には
1. `@SpringBootTest`を使う
1. DIコンテナ作成回

元記事を表示

[Cloud Storage API(V2)] Javaでバケットのアクセス制御リスト(ACL)エントリを作成・更新・削除する

Cloud Storage API V2(Java)を使用して、
Cloud Storageのバケットのアクセス制御リスト(ACL)エントリを作成・更新・削除する方法
についてご紹介します。

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Cloud Storage API(V2)] JavaでCloud Storageを使う](https://qiita.com/doran/items/2a5f7ef8070fd5b8c94d)
を参照ください。
:::

|No||目次|
|—|—|—|
|1||[ACLを作成](#1-aclを作成)|
||1|[スコープ](#11-スコープ)|
||2|[実行](#12-実行)|
||3|[レスポンスの内容](#13-レスポンスの内容)|
|2||[ACLを上書き](#2-aclを上書き)|
||1|[スコープ](#21-スコープ)|
||2|[実行](#22-実行)|
||3|[レスポンスの内容](#23-レスポンスの内容)|
|3||[ACLを更新](#3-aclを更新)|
|

元記事を表示

Javaで「実行環境のエンコーディングに合わせてプログラムを実行する」の動作を確認してみた

# 概要

Javaで「実行環境のエンコーディングに合わせてプログラムを実行する」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/encoding/index4.html

# 実装

以下のファイルを作成しました。
“`JSample4_1.java
class JSample4_1{
public static void main(String[] args){
System.out.println(“いい天気ですね”);
}
}
“`

以下のコマンドを実行しました。
“`
$ javac -J-Dfile.encoding=UTF-8 JSample4_1.java
$ java JSample4_1
いい天気ですね
“`

# まとめ

何かの役に立てばと。

元記事を表示

OTHERカテゴリの最新記事