Java EEを使ったWebアプリケーションを勉強したいため、ローカル(Windows10)に開発環境を構築する。
Webアプリケーションサーバーはpayara、DBはoracle、IDEはNetBeansを使うことにした。
用意したもの
Apache NetBeans 12.5
Apache-NetBeans-12.5-bin-windows-x64.exe。公式からダウンロードした。NetBeansにはJava EEが含まれている。
JDK 11
jdk-11.0.13_windows-x64_bin.exe。公式からダウンロードした。NetBeans自体がこれで動いてるのかな?たぶん。
Payara Server 5.2021.9
payara-5.2021.9.zip。公式からダウンロードした。今回のWebアプリケーションサーバ―
Oracle Database 19c
WINDOWS.X64_193000_db_home.zip。公式からダウンロードした。Oralceを攻めたい
A5MK
a5m2_2.16.2_x86.zip。公式からダウンロードした。DBいじる用
SQL Plus Version 21.3.0.0.0
instantclient-basic-windows.x64-21.3.0.0.0.zip & instantclient-sqlplus-windows.x64-21.3.0.0.0.zip。公式からダウンロードした。2つないと動かないらしい。あとは、microsoft visual ~系がいるらしいが、自分の端末(Windows10)では特になにか入れなくても動いた。
A5MKではできないコマンドをDBに対して実行する用
手順1
JDK11をインストールしてから、NetBeansをインストールする。特になにか設定などはなかったように思う。
手順2
Payaraのzipを展開する。次にNetBeansのServices>Serversから展開したPayaraを追加する。自分は以下のように追加した
手順3
Oracle DBのzipを展開する。展開した中にある以下のインストーラーを起動する。
app\oracle\product\19.3.0\dbhome_1\setup.exe
インストーラーに従い、進めていく。
自分は、データベース・インストールでは、単一インスタンス・データベースを作成を選択し、
システムクラスはデスクトップクラスを選択(うろ覚え)、
Oracleホーム・ユーザーは仮想アカウントの使用を選択した。
以下を参考にした。
https://www.oborodukiyo.info/ORACLE/19c/ORA-DownloadOracle19cForWindows
インストール後、以下のファイルを必要であれば編集する。
app\oracle\product\19.3.0\dbhome_1\network\admin\tnsnames.ora
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
↓これがなければ追記する↓
ORCLPDB =←接続文字列任意
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orclpdb)←プラガブルデータベースのサービス名。サービス名はlsnrctl statusで確認できるらしい。
)
)
↑↑↑
以下を参考にした。
https://kenko-keep.com/pdb-ora-01017/
手順4
SQL Plus関連zip(instantclient-basic-windows.x64-21.3.0.0.0.zip & instantclient-sqlplus-windows.x64-21.3.0.0.0.zip)を展開する。2つのzipは同じディレクトリに展開する。
展開後、DBにあったtnsnames.oraを(zip展開先の親)\instantclient_21_3配下に置く。←もしかしたら不要かも
環境変数を設定する。
変数名:値
NLS_LANG:Japanese_Japan.JA16SJISTILDE
ORACLE_BASE:(DB展開先)例 E:\app\oracle\product\19.3.0
ORACLE_HOME:(DB展開先)例 E:\app\oracle\product\19.3.0\dbhome_1
TNS_ADMIN:(SQL Plus展開先に置いたtnsname.oraの場所) 例:E:\~\instantclient_21_3 ←もしかしたら、直接DBにあるtnsname.oraを指定してもいいのかもしれない
環境変数「Path」に「%ORACLE_HOME%」を追加
以下を参考にした。
https://www.bnote.net/oracle/instant_sqlplus.html
Oracle DBにはコンテナ・データベース(CDB)と、その下にプラガブル・データベース(PDB)と呼ばれる子DBがあるらしく、ユーザー(スキーマ)はPDBにしか作成できないため、PDBに作成する。CDB、PDBはこれまでのDBインストールで既に作成されている。(経験談)
以下を参考にPDBにユーザーを作成する。
https://www.dbsheetclient.jp/blog/?p=1566
上記、リンク先にある通り、インストール直後のPDBのOPEN_MODEは「MOUNTED」のため、「READ WRITE」に変更する必要がある。
手順5
A5MKを起動。データベースの追加と削除から、PDBへの接続を作る。作成したユーザーで接続できればOK
手順6
NetBeansの左上のFileタグからNew Projectを選択し、Web Applicationプロジェクトを作成する。Categoriesはよく分かっていないが、使い慣れてるMavenにした。
以下にあるファイルを編集する。
(作成されたプロジェクト)\src\main\resources\META-INF\persistence.xml
ない場合は、プロジェクトを右クリック>New>Otherで開くNew File画面から
Categories:Persistence
File Types:Persistence Unitを選択して作る。
ファイル内容は以下
<persistence-unit name="xxxxxx" transaction-type="RESOURCE_LOCAL">←扱うDBは1つなので、RESOURCE_LOCALを指定。複数扱いたい場合は、分散トランザクションできるJTAを指定する。
<exclude-unlisted-classes>false←実はよく意味をわかっていない。
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@ORCLPDB"/>
<property name="javax.persistence.jdbc.user" value="xxxxx"/>
<property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver"/>
<property name="javax.persistence.jdbc.password" value="xxxxx"/>
<property name="javax.persistence.schema-generation.database.action" value="create"/>←実はよく意味をわかっていない。
</properties>
</persistence-unit>
以下を参考にした
https://accelebiz.hatenablog.com/entry/20150322/1426997344
以上で環境構築は終了。
お疲れ様でした。