問題タブ [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.

0 投票する
2 に答える
2462 参照

java - OpenEJB に MDB を無視するように指示する

最終的にメッセージをキューに入れるアクティビティの単体テストを作成しました。メッセージがそのキューに入れられるとすぐに、メッセージ駆動型 Bean が処理を開始します。しかし、単体テストで MDB をテストしたくありません。それらを無視するように OpenEJB に指示するにはどうすればよいですか?

いくつかのプロパティを使用して OpenEJB をセットアップしました。

を設定する必要があることはわかってopenejb.deployments.classpath.excludeいますが、正しい値がわかりません。

たとえば、私のクラスの名前はorg.example.mdb.MyMDB.

0 投票する
1 に答える
1190 参照

java - OpenEJB&JUnit:Sessioncontext.isCallerInRoleは常にfalseを返します

コードのどこかに、現在のユーザーが何らかの役割を持っているかどうかをチェックするセッションBeanを作成する必要があります。

私のEJB3をユニットテストするために、私はOpenEJBを試しています。セキュリティのテストに関する彼らの例に従いましたが、SessionContect.isCallerInRole()を使用して役割をコードでテストすると、常にfalseが返されます。

なぜそれが機能しないのですか?

説明のためにいくつかのコードを書きました。

私のローカルインターフェース:

私のEJB:

私のテスト:

0 投票する
1 に答える
873 参照

mysql - Hibernateを使用したEJBトランザクションのロールバック

そのため、OpenEJBとHibernateでコンテナー管理トランザクションを使用しており、動作させようとしている非常に単純なトランザクションロールバックシナリオがあります。私のDBMSはMySQLです。

まず、基本的なエンティティの操作/作成を実行するデフォルトのトランザクション伝播(必須)を持つステートレスEJBから始めます。

また、指定された伝播のアノテーションを持つ2番目のステートレスEJBもあります(ただし、それでも「必須」です)。この2番目のEJBメソッドから、その基本的なエンティティの操作/作成を行う最初のEJBのメソッドを呼び出します。IDをまだ持っていないエンティティが返されるので、entityManager.flush()を呼び出しました。これにより、最初のEJBから返されたエンティティで使用するIDが得られます。

ここで問題が発生します。その2番目のEJBには、システム例外であれ、ある種の例外であれ、問題があります。ロールバックを強制したいので、このEJBには、ctx.setRollbackOnly()を呼び出すために使用する@ResourceSessionContextctxメンバーがあります。

これは私がログに見るものです:

デバッグ-TX必須:トランザクションorg.apache.geronimo.transaction.manager.TransactionImpl@540eb4caを開始しました

....もの、最終的に私がログに記録しているスタックトレース....

DEBUG-TX必須:トランザクションorg.apache.geronimo.transaction.manager.TransactionImpl@540eb4caのsetRollbackOnly()
DEBUG-TX必須:トランザクションorg.apache.geronimo.transaction.manager.TransactionImpl@540eb4caのロールバック

しかし、データベースを確認すると、最初のEJBからの変更はまだデータベースに残っています。私は何が欠けていますか?

0 投票する
1 に答える
753 参照

java - EJB3 コンテナに関して認証するにはどうすればよいですか?

ビジネス クラスを EJB3 セキュリティ アノテーションで保護しています。Spring コントローラーからこれらのメソッドを呼び出したいのですが、どうすればよいですか?

編集セットアップに関する情報を追加します。Web コンテナには Tomcat を使用し、EJB を Tomcat に埋め込むには OpenEJB を使用しています。私は春のどのバージョンにも落ち着いていないので、多かれ少なかれ提案を受け付けています。

現在のセットアップの編集Userは次のように機能します。ログインフォームと、 SessionContext 内に pojo を配置するコントローラーがあります。誰かがサイトの保護された部分にアクセスするたびに、アプリケーションはユーザー pojo をチェックし、そこにある場合はロールをチェックしてからページを表示し、適切なメッセージを表示しないかログイン ページにリダイレクトしない場合はページを表示します。これで、 openejb security examples にあるこのコードのリミックスUserである可能性のあるセキュリティ コンテキストをバイパスする内部の call メソッドのおかげで、ビジネス コールが行われます。

0 投票する
0 に答える
676 参照

maven - JettyとOpenEJB間のJNDI競合を解決するにはどうすればよいですか?

私はOpenEJBを内部に持つJetty(Mavenから)を実行しています。問題は、それらがJNDIコンテキストを介して競合することです。この問題は、しばらく前にStephenConnollyによって解決策とともに説明されました。解決策はかなり時代遅れに見え(私はJetty 7.xを使用していますが、Jetty 6.x用です)、私にはあまり明確ではありません。JettyとOpenEJBを一緒に実行することが可能かどうか誰かが説明できますか?例を見るのは素晴らしいことです。

0 投票する
2 に答える
4150 参照

hibernate - OpenEJB でデータソースを宣言するにはどうすればよいですか?

OpenEJB 3.1.4 + Tomcat 6 でアプリケーションをデプロイしようとしています。このアプリケーションは JBoss 内で正常にデプロイされますが、OpenEJB で動作させたいと考えています。

基本的に、データソースを構成し、それを EAR for OpenEJB でデプロイする方法を知りたいです。

たった今:

EJB は OpenEJB の JNDI ブラウザで見つけることができますが、hibernate はデータソースを見つけられないようです (データベース スキーマを更新できません) - stdout から:

persistence.xmlのデータソースへのポイント:

次のようなデータソースファイルを含めようとしましたsrc/main/application/mysql-ds.xml:

そして、次のような別のものsrc/main/application/openejb.xml

しかし、それらのどれも私のアプリコンテナによってロード/考慮されていないようです。何か案は?

0 投票する
2 に答える
4225 参照

java - スタブと openejb フレームワークを使用した ejb のテスト

別のものが注入されている EJB をテストしようとしています。テスト目的で、注入された EJB にスタブを使用したいと考えています。テスト用の EJB のフレームワークとして openEJB を使用しました。

EJB は次のとおりです。

実際に注入された EJB :

EJB のスタブ バージョン:

そして使用されたJUnitテスト:

特定の ejb-jar を使用して、実際の EJB の使用をスタブ 1 でオーバーライドしようとしました (サービスでデフォルトの「Bean」の代わりに「BeanStub」を使用したい)。

残念ながら、EJB が宣言されているという問題があります。

アプローチや ejb-jar の書き方に何か問題がありますか?

0 投票する
1 に答える
713 参照

unit-testing - OpenEJB を使用した EJB リポジトリのテスト - 変更をロールバックする方法

OpenEJB を使用して EJB ベースのリポジトリをテストしようとしています。新しい単体テストが実行されるたびに、DB を「初期」状態にしたいと考えています。テストの後、すべての変更をロールバックする必要があります (テストが成功したかどうかに関係なく)。簡単な方法でそれを達成する方法は?UserTransaction を使用してみました-テストの開始時に開始し、終了時に変更をロールバックします(以下に示すように)。理由はわかりませんが、このコードでは、行のロールバック変更が実行された後、DB のすべての変更 (単体テスト中に行われたもの) が残されます。私が書いたように、外部 DB スキーマなどを使用せずに、最も単純な方法で実現したいと考えています。

ヒントを事前にありがとう!

ピーター