最近記載した以下の記事により、Web サイト上で Java EE のアプリケーションが稼働することは理解できたと思う。
しかし、これだけでは肝心のデータベースに接続する方法を記載していない。そのため、今回は仮想マシン上に Oracle DB を作成して Web サイトからデータを参照する方法を紹介する。
大枠の流れは以下になる。
- 仮想ネットワークとゲートウェイを作成する
- Azure 上に仮想マシンの Oracle DB を作成してセットアップする
- クライアント端末の NetBeans で JavaEE のアプリケーションを作成する
- Web サイトと仮想ネットワークを VPN で接続する
- Web サイトを作成し、Tomcat EE をデプロイする
上記で作成されるアプリケーションの構成は以下になる。
今回は上記の構成を目指した JavaEE アプリケーションを作成する。
仮想ネットワークとゲートウェイを作成する
まずは管理ポータルから仮想ネットワークを新規し、チュートリアル: サイト間クロスプレミス接続用の仮想ネットワークの作成を参考に「ゲートウェイの起動」までを参考にゲートウェイを作成する。以下のような画面になればOKだ。
Azure 上に仮想マシンの Oracle DB を作成してセットアップする
仮想ネットワークとゲートウェイを作成した後、仮想ネットワーク上に配置する形で Oracle DB の仮想マシンインスタンスを作成する。このあたりについては私がちまちま情報を書くよりは Creating an Oracle Database 12c virtual machine in Azure を参照していただいた方がいいだろう。
こちらで注意が必要な点は三つだ。その一は Oracle Listener を立ち上げること(デフォルトだと立ち上がっていなかった)だ。こちらは以下を参考に管理ツールを弄れば簡単だろう。
その二は、Windows ファイヤウォールのポートを Oracle DB 向けにあけること(今回はオフにしたが、本番環境では 1521 ポートのみ有効にする)。
その三は、NetBeans 上でアプリケーションを開発するために Oracle DB のエンドポイントで 1521 をオープンにする。
クライアント端末の NetBeans で JavaEE のアプリケーションを作成する
次に JavaEEのアプリケーションを作成する。まずは NetBeans 8.0.1 で JavaEE7 な CDI を利用する際の注意点 を参考にして JavaEE のアプリケーションを作成し、更に JavaEE の実行環境を Microsoft Azure の Web サイト上で稼働させる を参考に NetBeans に TomcatEE を導入する。
以上の下準備が済んだ後、NetBeasn 以下の画面より作成した JavaeEE アプリケーションから [新規接続] を選択する。
ここからは以下の新規接続ウィザードが起動するので、Oracle Thin を選んで[次 >]を押下するが、ojdbc6.jar or ojdbc7.jar が存在しない場合は別途取得して[追加]ボタンからドライバファイルを追加する。
また、Microsoft Azure 上に配置された Oracle DB への接続文字列を以下を参考に記載する。この際、Oracle の SID は「Azure 上に仮想マシンの Oracle DB を作成してセットアップする」にて自身で作成したものになるはずなのでご留意頂きたい。
最後にスキーマを選択するが、今回は伝統のある SCOTT スキーマのデータを参照したいので以下を参考に接続文字列の終了を確認する。
また、以下の様に ojdbc7.jar を WEB-INF/lib 以下の配置して、アプリケーションが Oracle DB に接続する準備をすること。
次に、以下の画面から [新規]-[その他]メニューを選択し、[持続性]-[データベースからのエンティティ・クラス]を選択する。
ここから以下のウィザードが表示され、SCOTT スキーマのテーブルを選択できるので、DEPT と EMP を療法選択する。
ウィザードから XHTML と Java クラスが全て自動生成されるので、この時点で一度ローカルで TomcatEE を起動して疎通を確認するといいだろう。
Web サイトと仮想ネットワークを VPN で接続する
こちらは新管理ポータルである https://portal.azure.com/ にアクセスし、以下の画面を参考に仮想ネットワークと接続する(この際、Web サイトが無料の構成では設定できない点に注意すること)。
この際、仮想ネットワークのゲートウェイ作成が完了していないと以下のようなエラーメッセージがでるので注意してほしい。
Web サイトを作成し、Tomcat EE をデプロイする
こちらについては JavaEE の実行環境を Microsoft Azure の Web サイト上で稼働させる を参照して TomcatEE をデプロイする。デプロイ前に、META-INF/persistence.xml を編集し、接続先を以下の様に仮想マシン上のローカルIPとする。
<?xml version="1.0" encoding="UTF-8"?> <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> <persistence-unit name="com.mycompany_MavenWebApp_war_1.0-SNAPSHOTPU" transaction-type="JTA"> <jta-data-source>exampledb</jta-data-source> <exclude-unlisted-classes>false</exclude-unlisted-classes> <properties> <property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver"/> <property name="javax.persistence.jdbc.url" value="jdbc\:oracle\:thin\:@10.0.1.4\:1521\:example" /> <!-- <property name="javax.persistence.jdbc.url" value="jdbc\:oracle\:thin\:@winoracledb12c.cloudapp.net\:1521\:example" /> --> <property name="javax.persistence.jdbc.user" value="SCOTT" /> <property name="javax.persistence.jdbc.password" value="<password>" /> </properties> </persistence-unit> </persistence>
以下を実施した後、NetBeans で作成した war ファイルを Web サイト上の TomcatEE 上にデプロイしよう。正しくアプリケーションが動作していれば以下のようになる。