こんにちは!
問題は山のようにあるんですが、とりあえず、
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【C#】クラスのコンストラクタ...
-
interface,extend,implementの...
-
デバッグ時に「Source not found」
-
setTextについて
-
抽象クラスをJUNITでテストする...
-
抽象クラスとインタフェースの...
-
Excel vbaのプログラムでガンマ...
-
VB DLLプロジェクトについて
-
cocoa、objective-cのクラスを...
-
インタフェースのstatic変数(Java)
-
インナークラスについて
-
単体テストのテストケースにて...
-
C#からDLLを呼びたいのですが・...
-
タイマーの作り方
-
Java StringBuilderクラスについて
-
肥大化した実装クラスを分割す...
-
インターフェースとは
-
Javaの自作例外クラスについて
-
javaのabstractの意味
-
インターフェース型の使い方が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「ラッパークラス」の存在意義...
-
C# 「データが失なわれる可能性...
-
VB DLLプロジェクトについて
-
抽象クラスをJUNITでテストする...
-
「継承されたメソッドの可視性...
-
インターフェースとトレイトっ...
-
c++でのヘッダーファイルの循環...
-
JavaでのAPIの覚え方ってみさな...
-
(vba)他のアプリケーションの右...
-
ASP.NETでの共通コードの書き方...
-
なぜForm型にキャストするので...
-
vb.net 自作プロパティの削除に...
-
【C#】クラスのコンストラクタ...
-
委譲って何ですか?
-
interface,extend,implementの...
-
Javaのインスタンス化の構文の...
-
オーバーライドとラッパーの違い
-
Commons-Discovery.jarとは?
-
JTextFieldの入力制限
-
C#からDLLを呼びたいのですが・...
おすすめ情報