こんにちは!
問題は山のようにあるんですが、とりあえず、
EJBを作る際にSessionBeanを作ったんですが、そのBean以外に
DBにアクセスするクラスを自分で勝手に作ったら”abstract”だと
怒られるのですが、
・普通のクラスを使用するのは根本的に間違ってるのでしょうか?
また、
・他にEntityなりSessionなり(よく違いを理解していなくてすいません・・・)
でやる場合は、やはり新しくHomeやRemoteが必要なのでしょうか?
以上なんですが、わかる方がいらっしゃたらお願いします。
※番外編なんですが、もしAPWORKS(富士通さんの)お使いの方いらっしゃいま
したら、EJBを作る時の新規DAクラス作成方法を教えてください。
ながながとすんません。。。でした
No.2ベストアンサー
- 回答日時:
すいません、コンピュータに接続できなかったものですっかり遅くなってしまいました。
質問をよく理解していなかったようですね。ごめんなさい。一応確認ですが、同じサーバーのVM内で EJB の bean と別のクラスのオブジェクトとがアクセスするという事でいいですよね。
こういうことでしょうか?(以下、MyBean を EJB の bean のクラス、MyDbEngine を普通のクラスとします。)
1. MyBean のメソッドの中で myDbEng = MyDbEngine.getInstance(); とか myDbEng = new MyDbEngine(SomeParameters) のようにやって myDbEng.truncateAllTable(); のようにできるか。
2.MyBean のメソッドの中で MyDbEngine.startEngine(this); のようにするとMyDbEngine のほうで myBean = bean のように MyBean のインスタンスのレファレンスを保持してさらに別のスレッドを起動してその中から MyBean のメソッドにアクセスする。ことはできるか。
3.MyDbEngine のメソッドから myBean = new MyBean(); のようにしてこれを利用する。
という事でいいでしょうか。
1.はもちろんOKです。ただ複数の Bean が同時にアクセスすることもあるでしょうから static なデータを持たせる場合には注意が必要です。
2.3.は問題があると思います。EJB の Bean 自体はコンテナ(APWORKS?)が管理するので他からダイレクトにアクセスするのはまずいでしょう。(3.で stateless sessoin bean なら平気なような気もしますが。)この場クライアント側のコードと同じように(JNDIをlookupして)Home を取得してそこから利用しなければならないと思います。ただし、この場合もアクセスする側(MyDbEngine) は EJB である必要は無く、あくまで普通のクラスでかまいません。JSPからEJBを利用する時と同じようなものです。
あと、abstract のほうはちょっとわかりません。何をしたら(javac/ejbc/runtime) 言われるのでしょうか、また、何が(class/method) というのも分からないでしょうか。
また何か違う事を答えているかもしれませんが、そうしたらまた言ってください。
たびたびありがとうございます。
違いがあまりよく分からなかったのですが(ごめんなさい。。。)、
Beanから普通のJAVAクラスを呼び出して(newして)
そのクラスで処理させるというようなことを考えていたんですが、
うーん、やはり同じコンテナ内において
使うとかは無理なのでしょうね。
今は、時間の都合でEJB間通信をしてしまって
abstractが出たときの状態もわからなくなってしましました。。。
(とてもがさつなもんですいません。。。)
でも、なんとなくですが理解しました。
何度もご親切にありがとうございました。
No.1
- 回答日時:
APWORKS は使った事は無いのでちがっていたらすいません。
まず、「普通のクラスを使う事」とは「DBにアクセスする場合には」という事で聞いてらっしゃると思いますが、どんな目的にしろ問題ありません。デザイン的にはという事であれば、それは場合によりけりだと思いますが、EJB はビジネスロジックだけいれてDBアクセスはそれ以外のクラスで、と言うこともよく考えられる事ではないでしょうか。
"abstruct"だと怒られるのは .java のコンパイル時だと思いますが、jbActivate() など SessionBean の interface に含まれるメソッドをインプリメントしていないのではないでしょうか。中身は何も無くても作っておかなければなりません。
public void ejbActivate() throws RemoteException { }
等。
つぎに、Home や Remote がいるかとの事ですが、これが無いものは EJB とは呼ばれない言うのが答えだと思います。
どうもすいません!
先日返事を出したはずだったんですが、
今日見たら何も表示されていなかったので、また改めました。
>EJB はビジネスロジックだけいれてDBアクセスはそれ以外のクラスで、と
言うこともよく考えられる事
それ以外のクラスとはやはりEJBになるんでしょうか?
>ejbActivate() など SessionBean の interface に含まれるメソッドをインプ
リメント・・・
の部分は、一応APWORKSの方で自動生成してくれるのでいました。
>Home や Remote がいるかとの事ですが、これが無いものは EJB とは呼ばれ
ないと言うのが答えだと思います
の部分なんですが、私の言い方が悪かったのかもしれないんですが、
Home,Remote,BeanとあるEJBのBeanにだけアクセスするようなbeanのクラスも
EJBの形にしなければならない、つまりEJB間でしかやれないんでしょうか?
ということだったんです。
とにもかくにもいろいろとありがとうございました。
あつかましくもまたいろいろと書いてしまいましたが、
時間があるときにでもお返事をいただけたらと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- 友達・仲間 粘着質な友達との関わり 1 2022/04/07 17:26
- Java Javaの問題なのですが、 永久ループを使って以下に従って数値を出力するプログラムを作成する。 ・1 3 2023/06/06 18:43
- その他(ビジネス・キャリア) 家で本業のグーグルツールを使う方法についてご教授ください 2 2022/05/28 07:49
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- Windows 10 「新規作成」メニューが表示されません 2 2023/04/07 14:56
- Excel(エクセル) エクセルで沢山のレコードの最後に追記するには? 7 2023/04/10 13:27
- 中古パソコン 中古PCを売る時、OS(Windows11)はどんな状態にするのが親切ですか? 4 2022/12/15 17:08
- 学校 新年度のクラス替えで友達や知り合いが全然いません。ぼっち生活は経験済みで今年は色んな行事もあるので友 3 2023/04/06 06:45
- MySQL 下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「名前(first name) 1 2023/06/24 13:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
インターフェースとトレイトっ...
-
「継承されたメソッドの可視性...
-
Java難しすぎ
-
EJB(Enterprise Java Beans)のS...
-
ゲッターを使わないで変数にア...
-
Javaでディレクトリを移動
-
エクセルVBAで、条件に一致する...
-
【JAVA】与えられた金額を貨幣...
-
変数名の付け方
-
「天声人語」をインターネット...
-
「タイプ初期化子が例外をスロ...
-
戻り値がクラスオブジェクト
-
EXCEL VBAにて動的にCheckBOXを...
-
オブジェクトレベルとメタレベル
-
canvasに描画したものを全て削...
-
標準モジュールとクラスモジュ...
-
private static という変数の修飾
-
【sendkeysメソッドが動かずに...
-
Javaの関数名が長い?
-
『独習JAVA』が難しい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
interface,extend,implementの...
-
C# 「データが失なわれる可能性...
-
「ラッパークラス」の存在意義...
-
c++でのヘッダーファイルの循環...
-
(vba)他のアプリケーションの右...
-
「継承されたメソッドの可視性...
-
「IOException は対応する try ...
-
ゲッターを使わないで変数にア...
-
JavaでのAPIの覚え方ってみさな...
-
VB DLLプロジェクトについて
-
Javaで下線
-
【C#】クラスのコンストラクタ...
-
Javaのインスタンス化の構文の...
-
委譲って何ですか?
-
ASP.NETでの共通コードの書き方...
-
オーバーライドとラッパーの違い
-
抽象クラスをJUNITでテストする...
-
JTextFieldの入力制限
-
Commons-Discovery.jarとは?
-
setTextについて
おすすめ情報