問題タブ [openejb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
tomcat - クラスタ化された環境ですべての EJB を呼び出す
アプリケーションがクラスタ化された環境にある場合、すべてのサーバーで特定の EJB を呼び出すことはできますか? たとえば、特定の更新についてすべてのサーバーに通知したいとします。現在、JMS トピックを使用して通知を送信しています。EJB は、OpenEJB を使用して Tomcat にデプロイされます。
ありがとう!
java - JUnit (OpenEJB) で自動応答 JMS リスナーを構築する方法
メッセージを JMS キューに送信し、そこからの応答を待つ EJB があります。EJB をテストしたいのですが、OpenEJB を使用して EJB の JUnit テストを行うのは簡単です。しかし問題は、この EJB が JMS 応答を待って処理を続行することです。
junit コードでメッセージを送信することはできますが、EJB がまだ進行中であるため、EJB が完了する前にメッセージを実行することはできません。
2 番目の解決策は、MDB を初期化して EJB からの JMS メッセージをリッスンして返信できるようにすることですが、問題は MDB が src\main\java にある必要があり、src\test\java にあることができないことです。問題は、これは単なるテスト コードであり、運用環境にパッケージ化するべきではないということです。(Mavenを使用しています)
それともモックオブジェクトを使うべきですか?
java - EJB は、WebLogic および OpenEJB で EJB を呼び出します
2 つの EJB を持つアプリケーションを作成したいと考えています。このアプリケーションは、OpenEJB と WebLogic 10.3 の両方で実行できます。EJB は両方とも EJB 3.0 です。
OpenEJB と WebLogic の両方で実装する方法は知っていますが、同じコードを使用して両方の環境にデプロイしたいという問題があります。WebLogic の Context.INITIAL_CONTEXT_FACTORY は weblogic.jndi.WLInitialContextFactory ですが、OpenEJB はそうではないため、問題は JNDI ルックアップの方法だと思います。
現在の考えでは、最初の EJB はサービス ロケータを使用して 2 番目の EJB をルックアップし、サービス ロケータは 2 つの環境で異なる INI を読み取ります。他の提案はありますか?注釈を使用するだけで、外部 INI ファイルを使用する必要がない解決策はありますか。
2 つの EJB は 1 つのコンテナーに存在しますが、将来、一方が別のコンテナーに移動する可能性があります。
2011/10/06 更新
デビッドの提案で、私はいくつかの変更を加えました。コードは JUnit コードではなく POJO です。@LocalClient と initialContext.bind("inject", this); は使用しません。(JUnitコードに2つのコードを入れました)
resources\META-INF\application-client.xml を配置 ( のみを含む)
リソース\jndi.properties を配置
/li>参照コード
/li>
以下はログです。OpenEJB はデータベースの JNDI を作成します。また、Eclipse デバッグ モードを使用して「ctx」の内容を確認し、MyProps で「jdbc/OrderDB」を見つけます。
しかし、最終的にはまだ検索できません。私も ctx.lookup(name), ctx.lookup("java:comp/env/jdbc/" + name) を使用しようとしましたが、結果は同じです。
2011/10/12更新
Java EE6より前のDavidのコメントに基づいて、唯一の解決策は、サービスロケーターといくつかの構成を使用して、WebLogicとOpenEJBの間で異なるJNDIを使用することだと思います。以下はテスト結果です。
DB: WebLogic: OrderDB、OpenEJB: openejb:Resource/jdbc/OrderDB
トランザクション マネージャ: WebLogic: javax.transaction.TransactionManager、OpenEJB: java:comp/TransactionManager
EJB : どちらも接頭辞なしで EJB 名を検索するだけです
java - jUnit テスト スイートの使用時に OpenEJB 代替記述子が機能しない
各テストが独自に実行される場合、依存する EJB コンポーネントのスタブを使用して、OpenEJB で実行される単体テストで動作する代替記述子を取得することができました。しかし、テスト スイートを導入すると、デプロイメント記述子はスイートに追加された最初のテストから取得されるようです。
それをよりよく説明するためのいくつかのコード。テスト中のBeanは次のようなものです
B のテストケース (A のテストケースも同様ですが、代替記述子を使用するためのプロパティが設定されていません)
前述のように、これはすべて単独で実行すると問題なく機能します。代替記述子は、A インターフェイスのスタブ実装を挿入します。
次のテスト スイートを使用すると、状況が悪化し始めます。
このスイートを実行すると、B をテストするための代替記述子は使用されません。ただし、出力は、少なくとも各テストの前にプロパティが設定されていることを示しています
テストをスイートにロードする順序を逆にすると、つまり ABeanTest.class の前に BBeanTest.class を追加すると、代替記述子が使用されます。ABean には依存関係がないため、この場合は問題なく動作しますが、複数の代替記述子を使用する大規模なセットアップでは問題が発生する可能性があります。
ポインタはありますか?
前もって感謝します。
EDITログ出力に基づいて、コンテナは実際には最初のテストで1回だけ起動されます。実行に 2.5 秒、他の実行には約 0.001 秒かかります。
EDIT2 OpenEJB のバージョンはApache OpenEJB 3.1.4 ビルドです: 20101112-03:32
jpa - OpenEJB は javax.persistence.jtaDataSource を使用できません
次の構成は WebLogic では問題ありませんが、OpenEJB では「javax.naming.NameNotFoundException: Name "AppDB" not found.」というエラーが発生します。
プロパティ javax.persistence.jtaDataSource を削除すると、機能します。そして、なぜ2つの複製されたデータソースを設定するのですか? これは Eclipselinks のバグであるため ( http://bugs.eclipse.org/246126を参照)
以下は jndi.properties です
これは他のチームによってパッケージ化された jar であるため、内容を変更することはできませんが、それでも OpenEJB で使用したいのですが、何か提案はありますか? ありがとう。
java - OpenEJBでユーザー/ロールをプログラムで指定するにはどうすればよいですか?
私が取り組んでいるプロジェクトでは、EJBをテストするためのフレームワークとしてOpenEJBを使用しています。プログラムで構築し、InitialContext
それを使用してトランザクションマネージャーとさまざまなEJBを取得します。
ただし、テストする必要のあるEJBには@RolesAllowed
アノテーションが付いているため、OpenEJBはそのEJBの取得を拒否し、必要な権限がないと主張します。
このテストがシミュレートすることになっているユーザーと、彼に関連付けられている役割をOpenEJBに指定するにはどうすればよいですか?
tdd - TDDでは、なぜOpenEJBなのか、そしてなぜArquillianなのか?
私はWeb開発者であり、最終的にJava EE開発(Richfaces、Seam 2、EJB 3.1、JPA)を行いました。JPAをテストするには、極超音速機とMockitoを使用します。しかし、EJBに関する深い知識が不足しています。
OpenEJBとArquillianを使用する必要があると主張する人もいるかもしれませんが、何のために?いつコンテナ依存のテストを行う必要がありますか?OpenEJBとArquillianが必要な可能性のあるテストシナリオは何ですか?
私に教えてください:)
java - OpenEJB の CMP エンティティ Bean (OpenJPA?)
OpenEJB で古い EJB2 システムを実行しようとしましたが、Entity Bean を使用してデータベースにアクセスしています。現在のステータスは、実行でき、SQL を Oracle DB に送信できます (Oracle でセッションと SQL を確認できます) ですが、テーブルと列の名前はマッピングされていません。
その理由は、OpenEJB がテーブルと列のマッピングを見つけられないためだと思います。この記事に従って構成しました
c:\openejb.xml:
cmp_global_database.xml:
cmp_local_database.xml:
oracle.cmp_or_mapping.xml:
これがログです
unit-testing - 単体テスト EJB 3.1
EJB 3.1 の単体テストに関する小さな調査を行っています。最後に、私の目標は、EJB 3.1 の単体テスト用の使いやすいソリューションを作成することです。
- 私は大規模な EJB の実装に関する知識があまりないため、最初に経験豊富な手 (あなた) を獲得して、EJB の単体テストで何が難しいかについてのアイデアをプールしたいと思います。
- すでに行った最初の調査で、組み込みコンテナーを使用するのではなく、単体テストにモッキング フレームワークを使用する利点を理解できます。どちらも優れていますが、単体テストに関しては、モッキング フレームワークが少し優れています。もちろん、組み込みコンテナーは非常に優れており、独自の利点がありますが、単体テストの別のフェーズになる可能性があります。このようなフレームワークを使用する場合、少なくとも一部のシナリオでは、改善可能な欠点があるはずだと私はまだ信じています。
ユニット テスト EJB の完全なソリューションを作成して、このフォーラムで共有できることを願っています。
ご協力ありがとうございました。
java - TomEEでOpenEJBサンプルWebサービスにアクセスする際のルックアップエラー
OpenEJBを使用して簡単なWebサービスを作成しようとしています。TomEEプロジェクトのサンプルコード(webapps / ejb-webservice)から始めました。
http://www.apache.org/dyn/closer.cgi/openejb/4.0.0-beta-1/examples-4.0.0-beta-1-src.tar.gz
サービスクラスはアノテーションを使用します。
すべてがうまく構築されます。サーバーへのwarのデプロイにも問題はありませんが(TomEE 1.0.0-beta-1-webprofileを使用しています)、このWebサービスにアクセスしようとすると、内部OpenEJBメソッドから一連のNameNotFoundExceptionがトリガーされます。
同様のルックアップエラーのある投稿を見つけました:
しかし、問題は名前検索方法の使用でした。サンプルコードでは、明示的なルックアップはありません。
誰かがこの問題の原因が何であるかを知ることができますか?