• 検索結果がありません。

abc はコンピュータフォント 3 校での変更点 tif 22% 展開先は c: のようにドライブ名だけを指定します c: jet のよう に指定すると 左図のように jet フォルダが 2 重になってしまいます この状態では動作しなくなるので 注意してください 015 1{dri

N/A
N/A
Protected

Academic year: 2022

シェア "abc はコンピュータフォント 3 校での変更点 tif 22% 展開先は c: のようにドライブ名だけを指定します c: jet のよう に指定すると 左図のように jet フォルダが 2 重になってしまいます この状態では動作しなくなるので 注意してください 015 1{dri"

Copied!
14
0
0

読み込み中.... (全文を見る)

全文

(1)

3校での変更点

010

015

{drive}/jet/netbeans/bin/netbeans64.exe

のショートカットを作成する

020

4.

[リンク先]欄に

" -J-Xmx512m --fontsize 14"

と追記する

C:¥jet¥netbeans¥bin¥netbeans64.exe -J-Xmx512m --fontsize 14

030

-J-Xmx512mは、NetBeansが使用するメモリの最大値を512MBにします。--fontsize 14は画面表示に使 われるフォントサイズを14ポイントに指定します。

{drive}JETを展開したドライブで す。左図ではC:¥です。

これ以降、JETを配置したドライブを {drive}と表記します。

9110.tif 53%

展開先は、c:¥のようにドライブ名だけを指定します。c:¥jetのよう に指定すると、左図のようにjetフォルダが2重になってしまいます。

この状態では動作しなくなるので、注意してください。

9112.tif 22%

本文の90%のフォントサイズ、黒枠で囲む。

(2)

040

・ファイルダイアログが開くので、

{drive}/jet/payara

を選択する

045

-4 Payara Serverを起動する

[サーバー]ノードを展開し、Payara Serverを表示する

Payara Serverを右ボタンでクリックし、start]を選ぶ

⇒出力ダイアログが開き、サーバーの起動状態が表示される

※出力ダイアログが開かない場合は、Payara Serverを右クリックし、View Domain Server Log]を 選択する

(注意)初回の起動時のみ、起動完了まで1分~最大3分程度の時間を要します。

050

{drive}/jet

projects

sampleProjects

060

プロジェクトをコンパイルして、設定ファイルなどと共に

1

つのファイルにまとめることを ビルドといいます。ここでは

builder

というプロジェクトを開いて、ビルドし、さらに実行し てみましょう。

builder

は、新規プロジェクトを作成する時に使うツールです。

9116.tif 60%

9118.tif 68%

この部分は、ゴシ、青、太字

(3)

100

①[プロジェクト]タブをクリックする

②[ファイル]⇒[プロジェクトを開く]と選択する

③ファイルダイアログで、{drive}/jet projects sampleProjectsと選択する

④[builder]プロジェクトをクリックして選択し、[プロジェクトを開く]ボタンを押す

手順 2 builder プロジェクトをビルドして実行する

①上段の ボタンを押して実行に使うブラウザを指定する

ChromeEdgeSafariなどInternet Explorer以外のブラウザを選択する。また、巻末資料「1.既定 のブラウザを設定する方法]には、あらかじめ既定値を決めておく方法の説明がある)

builderプロジェクトを1度クリックして選択状態にする

ボタンを押してプロジェクトをビルドする

④ビルドが完了したら ボタンを押してプロジェクトを実行する

ブラウザに実行画面が表示される

プロジェクトのビルドと実行は、以上で完了です。この

builder

プロジェクトは、空のプロ ジェクトを生成するプロジェクトビルダーで、新しいプロジェクトを作りたい時に利用します。

ここで、

3

章で使う

sample01

プロジェクトを作っておきます。プロジェクト名に

sample01

と入力して、このまま作成ボタンを押してください(一般に、

GroupID

は変更する必要はあり ません)。これで、

sample01

プロジェクトが作成されます。作成される場所は、

builder

と同 じフォルダになります。メニューから[ファイル]⇒[プロジェクトを開く]と選択し、

sample01

プロジェクトを開いてみてください。また、ビルドして実行してみましょう。

なお、

builder

プロジェクトを使わず、

NetBeans

の機能でスケルトンプロジェクトを作成 する方法は、巻末資料「

3.

プロジェクトの作成方法」を参照してください。

110 ここまで

9180.tif 53%

9160.tif 40%

9130.tif

9140.tif 9150.tif

9130.tif9140.tif サイズは文字に合わせて、

適宜、調整してください 110

ここから

(4)

115

例えば、

CDI

ビーンの中に、書籍の

List

を返すメソッドがある時、メソッドに

@Produces

を 付けると、書籍の

List

をインジェクトできるようになります。

120

例題のように

@Produces

を付けると、他の

CDI

ビーンに、

130

windowsでは{drive}JETを展開したc:¥のようなドライブ文字です。また、Macでは/ユーザ/<home>/ですが、エイリ アスとして~を使えるので、/ユーザ/<home>/jet/dockerは、~/jet/dockerと同じです。

140

Macではvoluems:は、- ~/docker/mysql_data:/var/lib/mysqlです

150

⑦[接続をテスト]ボタンを押して、「接続に成功しました」と表示されることを確認する

⑧[次

>

]ボタンを押す

(5)

2.6 Payara Server の設定

前節までで、

MySQL

サーバーを動かし、

NetBeans

からデータベースを起動したり、内容を見 たりできるようになりましたが、プログラムでデータベースを読み書きするには、

Payara Server

にも設定が必要です。

というのも、プログラムは

JPA

を利用してデータベースを操作しますが、

JPA

での操作を

M

SQL

に伝えるのは

Payara Server

だからです。

Payara Server

MySQL

への接続情報を知 っておく必要がありますし、また、効率よく接続するために接続プールを作成しておくことも 必要です。さらにプログラムが名前を指定するだけでデータベースサービスを利用できるよう に、接続名(データソース)を提供する必要があります。そこで、

Payar Server

に次の

2

つ の設定を行います。

①コネクションプールの作成

②データソースの作成

設定の具体的な方法は、巻末資料に

Windows

専用と一般的な方法に分けて記載しています。

Mac OS

は一般的な方法で設定します。比較的簡単な手順ですから、資料を読んで必要な設定を

済ませてください。

次節では、いよいよ、データベースに値を書き込んで表示してみることにします。

160 ここまで 160 ここから

(6)

サーバーコンソールでデータソースを参照する手順

NetBeans

の中から

Payar Server

を右クリックして

Admin Console

を開く あるいは、

http://localhost:4848

をブラウザで開く

②[共通タスク]⇒[リソース]⇒[

JDBC

]⇒[

JDBC

リソース]と選択する

データソース一覧

Payara Server以外のサーバーでは、それぞれのマニュアル等を参照してください。

図で、

java:comp/DefaultDataSource

と表示されているのが、デフォルトで用意されて いる論理

JNDI

名です。これを

DataSourceLookup

に指定します。ただ、デフォルトでは接続 プールが

H2Pool

となっているので、このままでは使えません。そこで、

jdbc/mydb

の接続プ ールである

mydbpool

を割り当て直すことにします。

割り当て直しの手順

①データソース一覧から

jdbc/__default

をクリックして編集画面を開く

②プール名を

H2Pool

から

mydbpool

に変更して[保存]ボタンを押す

9330.tif 97%

170 ここから

170 ここまで

9300.tif

97%

(7)

5.6 SecurityContext

EL

式の中で行った認証チェックは、

SecurityContext

オブジェクトをインジェクトするこ とで、プログラムの中でも実行することができます。

@Inject

SecurityContext context;

String userName = context.getCallerPrincipal().getName(); // ユーザー名を得る boolean result = contex. isCallerInRole("admin"); // グループを調べる

合わせて覚えておきましょう。

180

http://localhost:8080/sample27-05/bookshop/member

182

http://localhost:8080/sample27-05/bookshop/member/5

184

http://localhost:8080/sample27-05/bookshop/member

186

http://localhost:8080/sample27-05/bookshop/member?id=7

188

http://localhost:8080/sample27-05/bookshop/member

190

これから、ソースコードを少しずつ見ながら、クライアント

API

の使い方を解説します が、最初にすべてコードを掲載しておきます。少し長いコードですが、それぞれのメソッドは とても簡単なことがわかるでしょう。

175 ここから

175 ここまで

(8)

44 * *****(データベース処理)*******************************/

45 @EJB protected ProductFacade productDb; // 商品データベース 46 @EJB protected CustomerFacade customerDb; // 顧客データベー 47 @EJB protected AppOrderFacade appOrderDb; // 注文履歴データべース 48 @EJB protected OrderLineFacade orderLineDb; // 注文明細データベース 49

50 /* *****(ユーティリティのインジェクト)********************/

51 @EJB protected ProductManager pm; // 商品マネージャー 52 @Inject protected transient Logger log; // ロガー

53 @EJB protected MailSender sender; // 電子メールユーティリティ 54 @Inject protected Pagenation productPage; // ページングマネージャー 55 @EJB protected OrderManager orderManager; // 顧客の購入履歴の検索

56 @Inject protected MakeText text; // 注文確認メールの文面を作成するユーティリティ 57

58 /* **** (コンテキスト) *********************************/

59 @Inject SecurityContext securityContext;

60 @Inject FacesContext facesContext;

61 @Inject ExternalContext externalContext;

63 /* *****(初期化)******************************************/

64 @PostConstruct 65 public void init() {

66 cart = new ArrayList<>(); // カート 67

68 priceItems = new LinkedHashMap<>(); // 並べ替え選択肢 69 priceItems.put("なし", 1);

70 priceItems.put("安い順", 2);

71 priceItems.put("高い順", 3);

72

73 kindItems = new LinkedHashMap<>(); // 種類選択肢 74 kindItems.put("全商品", AppKind.NONE);

75 kindItems.put("新入荷品", AppKind.KIND1);

76 kindItems.put("おすすめ品", AppKind.KIND2);

77 kindItems.put("特価品", AppKind.KIND3);

78

79 productPage.setup(productDb.count(), 5);// ページングマネージャー 80 }

192 ここから

192 ここまで

p.

194 ここまで 194 ここから

(9)

1 package beans;

2 import db.*;

3 import net.tkxtools.MailSender;

4 import entity.*;

5 import java.io.ByteArrayInputStream;

6 import java.io.Serializable;

7 import java.util.ArrayList;

8 import java.util.LinkedHashMap;

9 import java.util.List;

10 import java.util.Map;

11 import java.util.logging.Logger;

12 import javax.annotation.PostConstruct;

13 import javax.ejb.EJB;

14 import javax.faces.application.FacesMessage;

15 import javax.faces.context.ExternalContext;

16 import javax.faces.context.FacesContext;

17 import javax.faces.event.PhaseId;

18 import javax.inject.Inject;

19 import javax.security.enterprise.SecurityContext;

20 import org.primefaces.model.DefaultStreamedContent;

21 import org.primefaces.model.StreamedContent;

22 import util.Pagenation;

23 /*

24 * ・フィールド変数とアクセサメソッドを持つ 25 * ・初期化処理を行う

26 * ・ページング処理を行う

27 * ・ユーティリティメソッドもスーパークラスに用意する 28 */

29 public class SuperBb implements Serializable {

30 /* *****(変数)********************************************/

31 protected Map<String, Integer> priceItems; // 並べ替え選択肢 32 protected Map<String, AppKind> kindItems; // 種類選択肢 33 protected AppKind kindItem = AppKind.NONE; // 種類選択結果 34 protected Integer priceItem = 1; // 並べ替え選択結果 35

36 protected List<OrderLine> cart; // カート

37 protected Product sel; // 詳細画面に表示する商品

38

39 protected String c_name; // 顧客氏名

40 protected String c_address; // 顧客住所

41 protected String c_mail; // 顧客メール

42 protected String c_msg; // 顧客メッセージ

43

44 /* *****(データベース処理)*******************************/

45 @EJB protected ProductFacade productDb; // 商品データベース

p.

p.

196

ここから

(10)

46 @EJB protected CustomerFacade customerDb; // 顧客データベー 47 @EJB protected AppOrderFacade appOrderDb; // 注文履歴データべース 48 @EJB protected OrderLineFacade orderLineDb; // 注文明細データベース 49

50 /* *****(ユーティリティのインジェクト)********************/

51 @EJB protected ProductManager pm; // 商品マネージャー 52 @Inject protected transient Logger log; // ロガー

53 @EJB protected MailSender sender; // 電子メールユーティリティ 54 @Inject protected Pagenation productPage; // ページングマネージャー 55 @EJB protected OrderManager orderManager; // 顧客の購入履歴の検索

56 @Inject protected MakeText text; // 注文確認メールの文面を作成するユーティリティ 57

58 /* **** (コンテキスト) *********************************/

59 @Inject SecurityContext securityContext;

60 @Inject FacesContext facesContext;

61 @Inject ExternalContext externalContext;

62

63 /* *****(初期化)******************************************/

64 @PostConstruct 65 public void init() {

66 cart = new ArrayList<>(); // カート 67

68 priceItems = new LinkedHashMap<>(); // 並べ替え選択肢 69 priceItems.put("なし", 1);

70 priceItems.put("安い順", 2);

71 priceItems.put("高い順", 3);

72

73 kindItems = new LinkedHashMap<>(); // 種類選択肢 74 kindItems.put("全商品", AppKind.NONE);

75 kindItems.put("新入荷品", AppKind.KIND1);

76 kindItems.put("おすすめ品", AppKind.KIND2);

77 kindItems.put("特価品", AppKind.KIND3);

78

79 productPage.setup(productDb.count(), 5);// ページングマネージャー 80 }

81 /* *****(画像表示処理<小画像>)************************/

82 public StreamedContent getPicS() {

83 if (facesContext.getCurrentPhaseId() == PhaseId.RENDER_RESPONSE) { 84 return new DefaultStreamedContent();

85 } else {

86 Map<String, String> map = externalContext.getRequestParameterMap();

87 String key = map.get("productId");

88 Product e = (Product) (productDb.find(Long.valueOf(key)));

89 ByteArrayInputStream in = new ByteArrayInputStream(e.getPic_S());

90 DefaultStreamedContent ds = new DefaultStreamedContent(in);

91 return ds;

p.

(11)

92 } 93 } 94

95 /* *****(画像表示処理<大画像>)************************/

96 public StreamedContent getPicL() {

97 if (facesContext.getCurrentPhaseId() == PhaseId.RENDER_RESPONSE) { 98 return new DefaultStreamedContent();

99 } else {

100 Map<String, String> map = externalContext.getRequestParameterMap();

101 String key = map.get("productId");

102 Product e = (Product) (productDb.find(Long.valueOf(key)));

103 ByteArrayInputStream in = new ByteArrayInputStream(e.getPic_L());

104 DefaultStreamedContent ds = new DefaultStreamedContent(in);

105 return ds;

106 }

107 } 108

109 /* *****(メッセージを作成しキューに入れる)**************/

110 public void facesMessage(String s) {

111 FacesMessage msg = new FacesMessage(s);

112 FacesContext.getCurrentInstance().addMessage(null, msg);

113 }

114 /* *****(エラーメッセージを作成しキューに入れる)**************/

115 public void facesErrorMsg(String s) {

116 FacesMessage msg = new FacesMessage(s);

117 msg.setSeverity(FacesMessage.SEVERITY_ERROR);

118 FacesContext.getCurrentInstance().addMessage(null, msg);

119 }

120 /* *****(メッセージを作成しキューに入れる)*****************

121 FacesMessage.SEVERITY_FATAL 致命的エラー(4) 122 FacesMessage.SEVERITY_ERROR エラー(3) 123 FacesMessage.SEVERITY_WARN 警告(2) 124 FacesMessage.SEVERITY_WARN 情報(1)

125 *************************************************************/

126 public void facesMessage(FacesMessage.Severity severity, String s) { 127 FacesMessage msg = new FacesMessage(s);

128 msg.setSeverity(severity);

129 FacesContext.getCurrentInstance().addMessage(null, msg);

130 }

131 /* *****(ログインしているユーザーのIDを返す */

132 public String getUserId() {

133 return securityContext.getCallerPrincipal().getName();

134 }

// セッター・ゲッターは記載を省略 196 }

ここまで

(12)

1000

2.2 Payara Server のセットアップ

セットアップには、

Payara Server

GUI

画面(

Admin Console

)で行う方法と、コマン ドを使う方法があります。ここでは、コマンドによる方法を解説します。

GUI

画面による方法 は、次節の「一般的な方法」を参照してください。

コマンドプロンプトを起動して、コマンドをタイプします。例えば、

JET

C

ドライブの直 下に置いた場合は、次のようにタイプします。他のドライブの場合は

C

を実際のドライブ名に 読み替えてください。

c: --- cd c:/jet/payara/bin --- pool.bat --- resource.bat ---

1005

ここから

1005 ここまで

コマンドのあるフォルダに切り替える 接続プールを作成する

データソースを作成する JETのあるドライブに切り替える {drive}は、JET フォルダのある場

所です。WindowsならJETのあるド ライブ、Mac OSならホームディレク トリ(~)です。

(例)

win -- c:¥jet/jdk/bin Mac -- ~/jet/jdk/bin

(13)

3 サーバーのデータベース設定(一般的な方法方法)

サーバー管理画面(

Admin Console

)を使って、設定を行います。

3.1 データベースドライバの登録( JET では不要)

Payara Server

の①か②のフォルダにドライバソフトをコピーします。

payara/glassfish/domains/domain1/lib

domain1

にだけ有効)

payara/glassfish/lib

(全ドメインに有効)

JET

では、あらかじめ①のフォルダに、

MySQL8

用の

JDBC

ドライバをコピーしてあるので、

このコピー操作は不要です。

3.2 コネクションプールの作成

1020

cd {drive}/jet/payara/bin asadmin start-domain

{drive}は、WindowsではJETのあるドライプ(c:¥など)MacOSではホームフォルダ(~)です

※停止コマンドは asadmin stop-domain です 1010

ここから

1010 ここまで

(14)

4.MySQL の外部ボリュームを変更する

MySQL

のデータを記録するフォルダを変更するには、

JET

docker

フォルダにある

docker- compose.yuml

ファイルを書き換えます。ただし、書き換えは、

MySQL

データベースを動かす 前に行ってください。

すでに起動した後であれば、次のコマンドでインスタンスを削除します。これにより、それ までのデータはすべて消去されます。

docker-compose down

書き換える箇所は、

volumes:

の部分です。青字で示す部分を、変更したいフォルダのパスに 書き換えます。

Windows

では、ドライブからの絶対パスで指定しないと正常に機能しないので、

注意してください(例は

C

ドライブの場合)。また、

Mac OS

では、

"~"

はホームフォルダを意 味します。

NetBeans

のメニューから、[ファイル]⇒[ファイルを開く]と選択して、

docker-

compose.yuml

ファイルを開いて編集します。書き換えでは、インデントを変更しないように

してください。また、タブを入力しないように注意してください。

Windows

volumes:

- /c/mysql_data:/var/lib/mysql

Mac OS

volumes:

- ~/mysql_data:/var/lib/mysql

書き換え後、保存して起動します。

docker-compose up -d 1040

ここから

1040 ここまで

参照

関連したドキュメント

えて リア 会を設 したのです そして、 リア で 会を開 して、そこに 者を 込 ような仕 けをしました そして 会を必 開 して、オブザーバーにも必 の けをし ます

手動のレバーを押して津波がどのようにして起きるかを観察 することができます。シミュレーターの前には、 「地図で見る日本

ダウンロードした書類は、 「MSP ゴシック、11ポイント」で記入で きるようになっています。字数制限がある書類は枠を広げず入力してく

この P 1 P 2 を抵抗板の動きにより測定し、その動きをマグネットを通して指針の動きにし、流

「1 つでも、2 つでも、世界を変えるような 事柄について考えましょう。素晴らしいアイデ

○齋藤部会長 ありがとうございました。..

VREF YZのQRは Io = 30 mA になりま す。 VREF ?を IC のでJKする./、QR のæç でJKするような èとしてGさ い。をéえるQRとした./、

真竹は約 120 年ごとに一斉に花を咲かせ、枯れてしまう そうです。昭和 40 年代にこの開花があり、必要な量の竹