// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= Oracle CloudでのWebアプリケーションの実行
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Oracle CloudでのWebアプリケーションの実行 - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Oracle CloudでのWebアプリケーションの実行

Oracle Cloudはビジネス用のエンタープライズ・クラウドです。Oracle Cloudは、統合開発およびデプロイメント・プラットフォームに提供されるセルフサービス・ビジネス・アプリケーションを、新規サービスをすばやく拡張および作成するためのツールとともに提供します。Oracle Cloudの詳細は、link:https://cloud.oracle.com[+Oracle Cloudのホームページ+]を参照してください。

このドキュメントでは、Oracle CloudをNetBeans IDEに登録する方法と、IDEでサポートされるOracle Cloud機能の一部を示します。このドキュメントでは、完全にクラウドで作業する場合と、ローカル・サーバーで作業してからクラウドにデプロイする場合の利点と決定の一部を説明します。最後に、link:quickstart-webapps.html[+Webアプリケーションの概要+]の手順に従って単純なWebアプリケーションを作成し、Oracle Cloudで実行します。

Java Training Beatブログのlink:https://blogs.oracle.com/javatraining/entry/oracle_cloud_development_with_netbeans[+NetBeansおよびEclipse (OEPE)を使用したOracle Cloud開発+]のチュートリアル・シリーズも参照してください。


image::images/netbeans-stamp-80-74-73.png[title="このページの内容は、NetBeans IDE 7.2、7.3、7.4および8.0に適用されます"]


*このチュートリアルに従うには、次のソフトウェアとリソースが必要です。*

|===
|ソフトウェアまたはリソース |必須バージョン 

|link:https://netbeans.org/downloads/index.html[+NetBeans IDE+] |7.3、7.4、8.0、Java EEバージョン 

|Oracle Cloudプラグイン |NetBeansプラグイン・マネージャを介してNetBeans Update Centerから入手可能 

|link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+Java Development Kit (JDK)+] |バージョン7またはバージョン8 

|Oracle Java Cloud Service |link:http://cloudcentral.c9dev.oraclecorp.com/mycloud/f?p=SERVICE:free_trial:0[+Oracle Cloud Public Availabilityホームページ+]でサインアップ 

|Oracle Java Cloud Service SDK |link:http://cloud.oracle.com[+Oracle Cloudホームページ+]からダウンロードします。 

|link:http://www.oracle.com/technetwork/middleware/weblogic/overview/index.html[+Oracle WebLogic Server+] 
(ローカルでのアプリケーションの開発およびテスト用)

 |
Oracle Java Cloud Serviceユーザーズ・ガイドの第4章で指定されているバージョン
このドキュメントは、link:https://cloudeap.oracle.com/mycloud/f?p=service:home:0[+アクティブ化したJava Cloudサービス+]の「リソース」→「ドキュメント」タブから入手できます。 

|link:http://www.oracle.com/technetwork/products/express-edition/downloads/index.html[+OracleXEデータベース・サーバー+] 
(ローカルでのアプリケーションの開発およびテスト用) |11g 
|===


[[sdk-download]]
== Oracle Java Cloud Service SDKのダウンロード

Oracle CloudでWebアプリケーションを開発するには、Oracle Java Cloud Service SDKのローカル・コピーが必要です。Oracle Java Cloud Service SDKは、link:http://cloud.oracle.com[+Oracle Cloudホームページ+]からダウンロードできます。

*Oracle Java Cloud Service SDKをダウンロードする手順:*

1. ブラウザ・ウィンドウでlink:http://cloud.oracle.com[+Oracle Cloudホームページ+]を参照します。
2. メイン・メニューで*「リソース」*ドロップダウン・リストを展開し、*「ダウンロード」*をクリックします。
3. 「Oracle Java Cloud Service SDK」セクションで、*Oracle Cloud Java Service SDKのダウンロード*をクリックします。
4. Oracle Java Cloud Service SDKのダウンロード・ページで、OTN使用許諾契約書を読んで同意し、ダウンロード・リンクをアクティブにします。
5. SDKをローカル・システムにダウンロードし、抽出します。


[[install-plugin]]
== Oracle Cloudプラグインのインストール

IDEでOracle Java Cloud Serviceのサポートを有効にするには、NetBeans Update CenterからOracle Cloudプラグインをインストールする必要があります。NetBeansプラグイン・マネージャを使用して、Oracle Cloudプラグインをインストールできます。

次の手順を実行して、Oracle Cloudプラグインをインストールします。

1. メイン・メニューから「ツール」>「プラグイン」を選択して、プラグイン・マネージャを開きます。
2. プラグイン・マネージャの「使用可能なプラグイン」タブを選択します。
3. Oracle Cloudプラグインのチェックボックスを探し、選択します。「インストール」をクリックします。

「インストール」をクリックすると、IDEによってNetBeans IDEインストーラが開かれます。インストーラ・ウィザードの手順を完了して、プラグインをインストールする必要があります。

Oracle Cloudプラグインをインストールすると、「クラウド・プロバイダの追加」ウィザードによってサポートされるクラウド・プロバイダのリストにOracle Cloudが表示されます。


== IDEへのOracle Cloudの登録

Oracle Cloudを使用する前に、IDEの「サービス」ウィンドウに登録する必要があります。Oracle Java Cloud Service SDKを別途インストールする必要があります。

*注意:*NetBeans IDEでOracle Cloudを操作するには、Oracle Cloudにアカウントが必要です。

*Oracle CloudをIDEに登録するには、次の手順を実行します。*

1. IDEで「サービス」ウィンドウを開きます(「ウィンドウ」→「サービス」または[Ctrl]-[5])。
2. 「クラウド」ノードを右クリックし、「クラウドの追加」を選択して「クラウド・プロバイダの追加」ウィザードを開きます。
image::images/add-cloud.png[]
3. 「クラウドを選択」フィールドで、Oracle Cloudを選択し、「次」をクリックして「Oracle Cloud」パネルを開きます。
image::images/oracle-cloud1.png[]
4. すべてのフィールドに入力します。Oracle Java Cloud Service SDK JARが含まれているフォルダを参照します。「次」をクリックします。

「次」をクリックすると、IDEによりクラウドへの接続がテストされます。接続に成功した場合は、クラウド・サービスのリストが表示されます。Oracle Cloud Remoteサーバー(Oracle WebLogic)のみが現在使用可能です。

*注意:* Oracle Cloudプロバイダを登録した後、「プロパティ」でクラウドの詳細を変更できます。「Oracle Cloud」ノードを右クリックし、「プロパティ」を選択して、「プロパティ」を開きます。

5. Oracle Cloudプロバイダがクラウド・リソースのリストに表示されていることを確認します。「終了」をクリックします。

Oracle Cloudは、「サービス」ウィンドウの「クラウド」ノードにリストされています。「Oracle Cloud」ノードを右クリックして、サービスのリストをリフレッシュする、ジョブおよびログのリストを開く、クラウド・インスタンスを削除する、またはクラウドのプロパティを表示するコマンドを提供するコンテキスト・メニューを開くことができます。

image::images/cloud-contextmenu.png[]

Oracle CloudをIDEに登録すると、Oracle Cloud Remoteサーバー・ノードのインスタンスも「サーバー」ノードに表示されます。(表示されない場合は、「Oracle Cloud」ノードを右クリックし、「リフレッシュ」を選択します。)

image::images/registered-cloud-and-server.png[]

Oracle Cloud Remoteノードを展開して、リモート・サーバーにデプロイされているアプリケーションのリストを表示できます。


== ジョブおよびログの表示

NetBeans IDEがOracle Cloudに送信するリクエストごとに、ジョブが生成されます。すべてのジョブにはステータス(「送信」、「実行中」、「失敗」、「完了」)があり、1つ以上のログ・ファイル(ホワイトリスト・チェック・ログ、ウイルス対策スキャン・ログ、デプロイメント・ログ)がある場合があります。「ジョブおよびログの表示」アクションで、最近のジョブおよびそのログを表示できます。

「Oracle Cloud」ノードを右クリックし、ジョブおよびログの表示を選択します。エディタ・ウィンドウに、最後の50個のジョブおよびログのリストが表示されます。ロードには少し時間がかかります。ジョブ・リストは自動的にリフレッシュされません。「リフレッシュ」をクリックして、リストをリフレッシュします。

image::images/jobs-n-logs.png[]


== Oracle Cloud Remoteサーバー

Oracle Cloud Remoteサーバーは、Oracle Cloudで実行されているOracle WebLogicのインスタンスです。Oracle Cloud Remoteノードを展開し、そのサーバーで実行されているアプリケーションのリストを表示します。アプリケーションを右クリックして、アプリケーションを開始、停止およびアンデプロイするコマンドを含むポップアップ・メニューを開きます。メニューの「表示」をクリックして、ブラウザにアプリケーション・ホーム・ページを開くことができます。

image::images/webapp-contextmenu.png[]

デプロイされたアプリケーションのリストを更新するには、Oracle Cloud Remoteノードを右クリックし、「リフレッシュ」を選択します。

image::images/server-contextmenu.png[]

 


== ローカル・マシンでのアプリケーションの開発

ローカル・マシンでアプリケーションを開発し、それを定期的にクラウドにデプロイすることをお薦めします。Webアプリケーションを完全にOracle Cloudで開発することもできますが、次の理由でローカル開発をお薦めします。

* 実行中のサーバーでのローカル・デプロイメントには数秒かかります。クラウドへのデプロイメントには数分かかります。
* 増分デプロイメントはローカルでのみ使用可能です。
* デバッグはローカルでのみ使用可能です。

ただし、ローカルでの開発とOracle Cloudへのデプロイにはリスクも存在します。ローカルに開発するアプリケーションは、Oracle Cloud Remoteサーバーで稼働しないことがあります。安全のために、Oracle Cloud Remoteと同じサーバーであるOracle WebLogic Server 11gでローカルに開発します。

ローカル・サーバーとOracle Cloudサーバー間でWebアプリケーションのサーバーを手動で変更する必要があります。ローカルに開発してCloudに定期的にデプロイする自動的な方法はありません。

*WebアプリケーションのサーバーをローカルとOracle Cloud間で変更する手順:*

1. 「プロジェクト」ウィンドウでアプリケーションのノードを右クリックし、「プロパティ」を選択します。
image::images/project-contextmenu.png[]
2. 「プロジェクト・プロパティ」で、「実行」カテゴリを選択します。
image::images/run-properties.png[]
3. 「サーバー」ドロップダウン・リストから、目的のサーバー(Oracle Cloud RemoteまたはローカルOracle WebLogic)を選択します。サーバーをIDEに登録する必要があります。「サービス」ウィンドウの「サーバー」ノードを右クリックしてサーバーを追加できます。


== Webアプリケーションの作成

link:quickstart-webapps.html[+Webの開発の概要+]に進み、そのチュートリアルを完了します。ローカルOracle WebLogic ServerでWebアプリケーションを開発します。アプリケーションが完成したら、サーバーをOracle Cloud Remoteに変更し、アプリケーションを実行します。

*注意:*Oracle WebLogic Serverをローカルにインストールし、サーバーをIDEに登録する必要があります。詳細は、link:https://netbeans.org/kb/docs/javaee/weblogic-javaee-m1-screencast.html[+Oracle WebLogic ServerへのWebアプリケーションのデプロイのビデオ+]を参照してください。

アプリケーションをOracle Cloud Remoteサーバーにデプロイする前に、「出力」ウィンドウを開きます(「ウィンドウ」→「出力」→「出力」または[Ctrl]-[4])。「出力」ウィンドウの「Oracle Cloud Remoteデプロイメント」タブに注意してください。このタブには、デプロイメントの進捗状況が表示されます。

image::images/output-cloud-tab.png[]


[[crud]]
== JSFでのCRUDアプリケーションの作成

NetBeans IDEおよびOracle Cloudは、Oracle WebLogic ServerにホストされているWebアプリケーションを通じて管理されるOracleデータベース・バックエンドがあるユースケースで使用できます。NetBeans IDEにより、既存のOracleデータベースのエンティティ・クラスを作成し、生成されるエンティティ・クラスのJavaServer Faces (JSF)ページを作成できます。このシナリオでは、OracleXEデータベース・サーバーおよびOracle WebLogicアプリケーション・サーバーのオンプレミス・インストールが必要です。

*重要: *Oracle Cloud Remote WebLogic ServerではJPA 2.0がサポートされません。オンプレミスWebLogicサーバーがJPA 2.0対応の場合は、JPA 2.0を無効にするか、CRUDアプリケーションのJPA 1.0持続性プロバイダを使用します。

*注意: *このドキュメントでは、エンティティ・クラスとJSFページの作成を簡単に説明します。詳細は、link:jsf20crud.html[+データベースからのJavaServer Faces 2.0 CRUDアプリケーションの生成+]を参照してください。

*JSFでCRUDアプリケーションを作成する手順:*

1. OracleXEデータベース・サーバーでサンプルHRスキーマを有効にし、スキーマをNetBeans IDEに登録します。詳細は、link:../ide/oracle-db.html[+NetBeans IDEからのOracleデータベースへの接続+]を参照してください。

NetBeans IDEにHRスキーマを登録する際には、HRユーザー名とパスワードを使用します。

2. Java EE5おびよびWebLogicサーバーのオンプレミス・インストールを使用してJava Webアプリケーションを作成します。アプリケーションに対してJSFフレームワークを有効にします。
image::images/crudapp-eevers.png[]
image::images/crudapp-jsf.png[]
3. 「プロジェクト」ウィンドウで、プロジェクトのルート・ノードを右クリックし、「新規」→「データベースからのエンティティ・クラス」を選択します。「データベースからのエンティティ・クラス」ウィザードが開きます。
4. 「データベースからのエンティティ・クラス」ウィザードで、「データ・ソース」ドロップダウン・ボックスから「新しいデータ・ソース」を選択します。「データ・ソースを作成」ダイアログが開きます。
image::images/crudapp-newdatasource.png[]
5. このデータソースに、登録したOracle Cloudアカウントのデータベース・サービス名と一致する名前を付けます。
image::images/cloud-db-name.png[]
6. 手順1で作成したOracleXE HRデータベース接続を選択します。「OK」をクリックします。「データ・ソースを作成」ダイアログが閉じます。
image::images/create-datasource.png[]
7. 「データベースからのエンティティ・クラス」ウィザードで、「使用可能な表」フィールドにHRスキーマ表名が入力されます。EMPLOYEESなど、表の1つを選択し、「追加」をクリックします。ウィザードの残りの部分をクリックして、エンティティ・クラスを含むパッケージに任意の名前を付け、他のフィールドはすべてデフォルト値を受け入れます。
8. 「プロジェクト」ウィンドウで、プロジェクトのルート・ノードを右クリックし、「新規」→「エンティティからのJSFページ・クラス」を選択します。「新規エンティティからのJSFページ・クラス」ウィザードが開きます。
9. 「エンティティ・クラス」パネルで、「すべて選択」をクリックし、「次」をクリックします。
10. 「生成されたJSFページとクラス」パネルで、パッケージとJSFファイル・フォルダに適切な名前を付け、「終了」をクリックします。
11. 「プロジェクト」ウィンドウでプロジェクトのルート・ノードを右クリックし、「実行」を選択します。IDEは、プロジェクトをビルドし、それをオンプレミスWebLogicサーバーにデプロイします。プロジェクトのランディング・ページにブラウザが開きます。

これで、CRUDおよびJSFを使用したJava Webアプリケーションのローカル・バージョンが作成されます。アプリケーションをローカルにテストおよび調整できます。アプリケーションが最終状態になったら、Oracle Cloudにデプロイします。

*Oracle CloudへのCRUD/JSFアプリケーションのデプロイ*

1. 「プロジェクト」ウィンドウでプロジェクトのルート・ノードを右クリックし、「プロパティ」を選択します。
2. 「プロパティ」ウィンドウで「実行」カテゴリを選択します。このカテゴリで、「サーバー」ドロップダウン・リストを展開し、Oracle Cloud Remoteを選択します。「OK」をクリックします。
image::images/crudapp-properties.png[]
3. 「プロジェクト」ウィンドウで、プロジェクトの「構成ファイル」ノードを展開し、「`persistence.xml`」をダブルクリックします。ファイルがXMLエディタの「デザイン」ビューに開きます。
4. 「表生成戦略」で、「作成」を選択します。
image::images/crudapp-persistence.png[]
5. オンプレミスWebLogicサーバーでJPA 2.0が有効になっている場合は、持続性プロバイダを、JPA 2.0を使用するデフォルトのEclipseLinkから、OpenJPAなどのJPA 1.0プロバイダに変更する必要があります。

*注意: *オンプレミスWebLogicサーバーがJPA 2.0対応でない場合、EclipseLinkはJPA 1.0にフォールバックします。この場合は、持続性プロバイダを変更する必要がありません。

6. 「プロジェクト」ウィンドウでプロジェクトのルート・ノードを右クリックし、「実行」を選択します。IDEは、プロジェクトをビルドし、それをOracle Cloud Remoteサーバーにデプロイします。IDEの「出力」ウィンドウの「Oracle Cloud Remoteデプロイメント」タブで、デプロイメントの進捗状況をフォローできます。

*注意: *Oracle Cloudは、データベース表のアップロードをまだサポートしていません。したがって、これがOracle Cloud上にある場合は、アプリケーションで使用可能なデータはありません。


== ホワイトリスト・サポートのテスト

Oracle Cloudは、 ``System.exit()`` などの一部の標準Java APIメソッドをサポートしません。Oracle Cloud_ホワイトリスト_は、許可されているすべてのメソッドを定義します。Oracle Cloudへのアプリケーションのデプロイメント中に、クラウド・サーバーはホワイトリストへのコンプライアンスをテストします。ホワイトリストに違反している場合、クラウド・サーバーはアプリケーションのデプロイを拒否します。

NetBeans IDEは、コードの作成時にホワイトリスト違反を通知することで、ホワイトリスト関連のエラーを防ぎます。コード補完はホワイトリストによって制限され、ホワイトリスト違反はコードでハイライト表示されます。Oracle Cloud RemoteサーバーにデプロイされているWebアプリケーションで「検査」アクションを実行すると、「出力」ウィンドウにホワイトリスト違反が表示されます。

*ホワイトリストをテストする手順:*

1. 「プロジェクト」ウィンドウで、<<create-webapp,作成したWebアプリケーション>>を右クリックし、「新規」→「サーブレット」を選択します。新規サーブレット・ウィザードが開きます。
image::images/new-servlet.png[]
2. サーブレットに任意の名前を付け、そのサーブレットの既存のパッケージを選択し、「終了」をクリックします。サーブレット・クラスがエディタに開きます。
3. サーブレットの ``processRequest`` メソッドを探し、メソッド本文に「 ``System.ex`` 」と入力し、[Ctrl]-[Space]を押してコード補完を開きます。 ``System.exit`` はOracle Cloudホワイトリストで禁止されているため、コード補完は ``System.exit`` を補完する可能性のある提案を行いません。IDEは、取消し線が引かれた ``exit`` を表示します。
image::images/cc-failure.png[]
4.  ``System.exit(1);`` の入力を終了します。警告が表示されます。カーソルを警告アイコンにスクロールすると、 ``java.lang.System.exit`` が許可されていないことを通知するツールチップが表示されます。
image::images/whitelist-warning.png[]
5. 「プロジェクト」ウィンドウでアプリケーションのノードを右クリックし、「検査」を選択します。「出力」ウィンドウを開きます(「ウィンドウ」→「出力」→「出力」または[Ctrl]-[4])。「出力」ウィンドウには、ホワイトリストの制限によるエラーを示す「ホワイト・リスト」タブがあります。
image::images/whitelist-output.png[]
6. 「アクション項目」ウィンドウを開きます(「ウィンドウ」→「アクション項目」または[Ctrl]-[6])。ホワイトリスト違反がアクション項目の独立したグループとして表示されます。

*ヒント:* 「アクション項目をカテゴリでグループ化」(左側の下部のボタン)をオンにすると、ホワイトリスト違反をより簡単に表示できます。

image::images/whitelist-tasks.png[]
7. プロジェクトのデプロイを試行します。ホワイトリスト違反が検出されたことを通知し、デプロイメントを続行するかどうかを確認する警告ダイアログが表示されます。「いいえ」をクリックします。ダイアログが消えます。
8. 
「プロジェクト」ウィンドウでアプリケーションのノードを右クリックし、「プロパティ」を選択します。アプリケーションの「プロジェクト・プロパティ」が開きます。「ホワイト・リスト」カテゴリを選択します。アクティブなホワイトリストのリストが表示されます。このダイアログで、ホワイトリストを無効にできます。

WebアプリケーションのサーバーがOracle Cloud Remoteに設定されている場合、Oracle Cloudホワイトリストはプロジェクトとそのプロジェクトのサブプロジェクトの両方に適用されます。たとえば、Oracle Cloud Remoteで実行するように設定されたEnterpriseアプリケーションにOracle Cloudがある場合、ホワイトリストはEnterpriseアプリケーション自体と、Enterpriseアプリケーションの一部である任意のEJBモジュールまたはWebアプリケーションに適用されます。プロジェクトとそのサブプロジェクトの両方の「プロジェクト・プロパティ」に「ホワイト・リスト」カテゴリがあります。「プロジェクト・プロパティ」ダイアログを使用して、プロジェクトとその個々のサブプロジェクトごとにホワイトリストを別々に設定できます。

image::images/whitelist-properties.png[]
link:/about/contact_form.html?to=3&subject=Feedback:%20Running%20Web%20Apps%20on%20Oracle%20Cloud[+ご意見をお寄せください+]

 



== 関連項目

Oracle Cloudサービスの詳細は、次のリソースを参照してください。

* link:https://blogs.oracle.com/javatraining/entry/oracle_cloud_development_with_netbeans[+NetBeansおよびEclipse (OEPE)を使用したOracle Cloud開発+] (Java Training Beatブログ)
* link:https://cloud.oracle.com/mycloud/f?p=service:home:0[+Oracle Cloudホームページ+]

NetBeans IDEでのWebアプリケーションの開発の関連情報は、次のリソースを参照してください。

* link:../../trails/java-ee.html[+Java EEおよびJava Webの学習+]
