問題タブ [ejb-3.1]
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.
java - @EJBの非同期プライベートメソッド
同じクラスの別のメソッドから呼び出される非同期メソッドがEJBシングルトンにあります。非同期メソッドを直接呼び出すことができないことはすでに知っています。EJBプロキシを取得する必要があります。問題は、非同期メソッドがクラスの外部に表示されないようにすることです。しかし、私がそれをプライベートにすると、それは非同期的に実行されません。(私はGlassfish v3を使用しています。)
javadocsは、必要なアクセスレベルについては何も述べていません。では、これはGlassfishのバグと見なす必要がありますか?
java - JPAの多対1の関係を処理するには?
気象データを収集するためのアプリケーションを設計しています。「場所」と「記録」の 2 つの POJO オブジェクトがあります。Location には緯度と経度、および現在の気象条件に関する情報が含まれており、Record には特定の場所の経時的なすべての気象情報が含まれているため、Location と多対 1 の関係があります。私が持っているクラスの定義は次のとおりです。
Location.java
そして Record.java
そして、私の受信データは次の形式になっています。
レコードを取得するたびに、レコード テーブルに挿入したいと考えています。また、Location への外部キーがあるため、Location テーブルの locationId も追加します。もう1つのことは、ロケーションテーブルが事前設定されていないことです。したがって、新しいレコードが来るたびに、まずそれを Location テーブルに挿入し、次に Record テーブルに外部キーを設定します。そして、場所テーブルに重複する場所のエントリは必要ありません。ロケーション テーブルには、ご覧のとおり、最新の気温、風速、風向データも含まれます。
私はそれを達成するために次のコードを使用しています:
しかし、これを行うことで、場所が複製されています。つまり、同じ経度と緯度に対して複数のエントリがありますが、場所テーブルには温度と風速のデータが異なります。私が達成したいのは、1 つの緯度と経度に対して 1 つのエントリを作成し、最新のデータで風速、温度、および風向のフィールドを更新することです。
助けてください!
jakarta-ee - デプロイメント記述子を使用せずに Java EE セキュリティ ロールを動的に追加する
Glassfish 3.1、B06 を使用して Java EE 6 アプリケーションを開発しています。アプリを保護するために、JDBCRealm とプログラムによるセキュリティを使用しています。これは、ユーザー名とパスワードをチェックするのにうまく機能します。しかし、セキュリティ ロールの宣言に関しては、次のような問題があります。
Java EE 6 でセキュリティ ロールを使用するには、EJB デプロイメント記述子と Glassfish 固有のデプロイメント記述子の両方でこれらのロールを宣言して、それらのロールをリンクする必要があります ( Java EE 6 チュートリアルで説明されているように) EJB 内のメソッドisCallerInRole(String roleRef)を使用して権限を確認します。
これは私のアプリケーションには望ましくありません。XML ファイルを作成せずに (たとえば、データベースでロール名を定義できるようにするなど)、セキュリティ ロールを動的かつプログラム的に追加できるようにしたいからです。
GF3 ソース コードをデバッグしたところ、 com.sun.ejb.containers.EjbContextImplに isCallerInRole が実装されていることがわかりました。そこで、コンテナーは EJB 記述子からロールを取得します。
周りを見回したところ、アプリケーション内でどうにかして EJB 記述子を取得できれば、次のようなロールを追加できることがわかりました。
誰かがこのようなことをしたり、それについて考えたりしましたか? アプリケーション内で EJB デプロイメント記述子を使用することはできますか? または、より良いアプローチがありますか?
PSまたはMBeanを使用してロールを追加する必要がありますか? ここでかなり関連する投稿を見つけました。
java - JPA2 を使用する場合に EJB を単体テストする方法は?
JPA を使用する EJB の単体テストをどのように行いますか? たとえば、Order エンティティと、注文の合計 (以下で定義) を計算することになっている OrderEJB がある場合、データベースに触れずに EJB の単体テストを行うにはどうすればよいでしょうか? また、予想される計算をアサートできるように、エンティティの値をどのように定義しますか? 以下にいくつかのサンプルコードを示します...
そして orderEJB
データベースにアクセスできない場合、calculateOrderTotal メソッドの単体テストをどのように行いますか? 私はそのアプローチから離れようとしているので、DAO を実装したくありません。
助けてくれてありがとう。
singleton - EJB 3.0 で独自のシングルトン ステートレス Bean を作成できますか?
現在、EJB 3.1 では、この Bean がシングルトンになることを保証できる javax.ejb.Singleton アノテーションを見つけることができます。
コードにいくつかの変更を加えて、EJB 3.0 でステートレス Bean を使用してシングルトンを確保する方法はありますか (キーワード static を使用するか、それを行う他の方法を使用します....)
maven-2 - アプリケーションの組み込みサーバーとして使用するには、glassfish サーバーをインストールする必要がありますか?
ejb3.1 プロジェクトで、グラスフィッシュを組み込みサーバーとして使用しようとしています。以下は私のmaven依存関係です..しかし、テストを実行すると、ejbモジュールのデプロイに失敗します。javaee.home またはその他の変数を設定する必要がありますか?
例外は..
java - EJB 3.1 @Schedule は、アプリケーション コードの外部で構成できますか?
スケジュール間隔を構成するにはどうすればよいですか:
@Schedule(persistent=true, minute="*", second="*/5", hour="*")
アプリケーションコードの外?
- ejb-jar.xml でどのように構成できますか?
- アプリケーションの外部 (プロパティ ファイルのようなもの) で構成できますか?
java - 同じアプリサーバー上の別のアプリケーションにEJBを公開する場合、@ Remoteを使用する必要がありますか?
@Stateless@LocalBeanが正常に耳にデプロイされています。JNDIツリーを参照すると、新しいEJB3.1標準のグローバルJNDI名が表示されます。(java:global / product / product-ejb / ProductManagement)
このEJBを同じアプリサーバー上の別のアプリケーションで使用したいと思います。このEJBのリモートインターフェイスを追加する必要がありますか?
java - 非同期メソッドのデフォルトのEJBトランザクションモード?
@Asynchronous
EJBにメソッドがあり、を指定しない場合、@TransactionAttribute
コンテナーはトランザクション境界をどの程度正確に処理しますか?明らかに、呼び出し元のスレッドのトランザクションを使用できないので、それは何をしますか?同じ質問ですが、TimerServiceによってトリガーされるメソッドに関するものです。
編集:私はそれをうまく表現できなかったと思います。デフォルトのモードが「必須」であることはすでに知っています。したがって、これらのメソッドは常にトランザクション内で呼び出されると想定するのが安全です。しかし、私の質問は、そのトランザクションのライフサイクルはどのように見えるかということです。コンテナは呼び出しごとに新しいトランザクションを作成しますか?または、非同期ワーカースレッドでのすべての呼び出しに同じトランザクションを再利用しますか?後者の場合、トランザクションはいつ終了しますか?
transactions - Java EE でのトランザクションのデバッグ
私は @Stateless EJB メソッドを持っています。
- JPA を使用してデータベースからいくつかのエントリを削除
remove()
する - として注釈が付けられた例外をスローします
@ApplicationException(rollback=true)
このメソッドには他にトランザクション固有の注釈はありません (設定@TransactionAttribute(TransactionAttributeType.REQUIRED)
しましたが、とにかくデフォルトにする必要があります!)。トランザクションはコンテナーで管理されます。JPA プロバイダーは EclipseLink です。
それでも、例外がスローされたときにトランザクションはロールバックされません。例えば。ロールバック前にデータベースから削除したエントリが戻ってきません。ところで。スローの前に entityManager.flush() を呼び出しますが、そのような動作を引き起こすことはできますか (すべきではありません)?
も呼び出してみましたがSessionContext.setRollbackOnly()
、同じ結果になりました。
この問題をデバッグするにはどうすればよいですか?
私はデバッグに Glassfish v3 と Netbeans を使用していますが、println でも同様に満足しています。それらをどこに置くべきかわかりません...