問題タブ [container-managed]

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 投票する
1 に答える
1073 参照

java - コンテナ管理のトランザクションはロールバックできません

私はトランザクションで遊んでいます。

エンティティを処理するように JPA を構成し、それらをデータベースに保持したいと考えています。問題は、プログラムが runtimeException をスローしたときに、CMT がロールバックしないことです。

この「コンテナのこと」の背後にある考え方は、理解するのが非常に難しく、文書化も不十分です。

@transactional マネージド トランザクション、純粋な CDI Interceptor マネージド トランザクション、および Bean マネージド トランザクションは魅力的に機能します。

これが私がコーディングしたものです。これは単純な「シネマデモ」です。X 席の映画を 2 つ見たいとします。席数に限りがございます。フィルムに十分な座席がない場合、トランザクション (ACID など) はありません。


私のbuyTicketsBoundaryクラスで:

最初に、CMT を使用していることをクラスに伝えます。


私の例外:


JPA を介してデータベースに購入済みチケットを書き込む Controller クラス:

問題は、このクラスが最初のムービーの em.persist 状態に達し、2 番目のムービーが例外をスローすると、データベースがロールバックできないことです。

RuntimeException がスローされた場合、コンテナはロールバックすると思いました

それを機能させるにはどうすればよいですか?

不明な点があれば教えてください

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

java - Glassfish コンテナー管理データベースの場所

CRUD操作を使用してアクセスできるグラスフィッシュコンテナ管理のダービーデータベースがあります。asadmin ツールを使用して derby データベースに直接アクセスし、テーブルを表示したいと考えています。

ただし、データベースが見つかりません。

このサイトを調査したところ、必要な場合にのみ接続する接続プールが Glassfish によって作成されることがわかりました。接続プールを作成することは可能ですが、データベースがどこにあるかさえわかりません。

どんなアドバイスでも大歓迎です。私は JEE7 を初めて使用し、「JEE7 初心者向け」の本から学んでいます。

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

jakarta-ee - コンテナ管理の認証、現在ログインしているユーザーの処理

私はあまりにも長い間投稿を掘り下げていて、めまいがするので、ここの教祖の一人がこれを手伝ってくれることを願っています.

コンテナ管理認証を使用していますが、うまく機能しています。認証するためのRealmセットアップ、web.xmlで保護されたURLのセットアップ、ログインページなどがあります。

しかし今、私は問題にぶつかっています...

データモデル用の JPA オブジェクトがあり、これらのオブジェクトの一部は、いつ作成または更新されたか、誰によって追跡されるかという点で「監査」されてます。

@PrePersist次のように、コードでハンドラーを使用して、永続化/更新のフィールドcreatedOnとフィールドをそれぞれ設定しています。updatedOn

これはうまく機能しますが、ここから現在ログインしているユーザーにアクセスする方法がわかりません...createdByフィールドを設定できるようにする必要があります。

私はResteasyを使用しており、エンドポイントでログインしているユーザー名にアクセスでき、アカウント オブジェクトを取得できます。

AuthorizationService は私のもので、次のようになります。

これは機能します。毎回DBにクエリを送信しないように、リクエスト属性にログインしたユーザーをキャッシュすることに注意してください。

今まではこの設定でうまくやっていたのですが、やり方が間違っているような気がします...

現在ログインしているユーザーの Account オブジェクトを使用して...何か... (リクエスト?) を設定し、必要な場所に挿入できるようにするグローバル インターセプト ポイント (フィルター?) を 1 つ用意したいと考えています...アプリをできるだけスケーラブルにしようとしているので、セッションを作成しないソリューションを強くお勧めします。

これを処理する方法に関するヒントはありますか?これをうまく説明しているチュートリアルへのゴールデンリンクはありますか?助けてくれてありがとう!

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

jpa - (OpenJPA/WAS) Container Managed Entity Manager の Container Managed Authentication の使用方法

目的

Container Managed Entity Manager で Container Managed Authentication を使用するように WAS または OpenJPA を構成する方法を理解すること。

問題

persistence.xml に定義されている「jdbc/DB2」(Oracle のことを指します) として JNDI に登録されている JDBC Datasource 経由で Oracle データベースにアクセスしようとしています。

persistence.xml

ただし、永続性ユニットのコンテナ管理エンティティ マネージャにアクセスすると、ORA-01017 無効な usrname/password がスローされます。persistence.xml に ConnectionUserName/ConnectionPassword が指定されている場合、エラーは解決されます。

エラー

だった

  • Continaer Managed Authentication を使用するために、JAAS がデータソースに関連付けられている
  • WAS コンソール JDBC データソースから、データソースへのテスト接続が成功します。
  • 名前空間のダンプは、「jdbc/DB2」が server1 名前空間に登録されていることを確認します。
  • WAS は ND ではなく、サーバーは数回再起動されました。

ここに画像の説明を入力

Entity Manager を使用するサーブレット
オリジナルは IBM developerWorks の記事からのものです。エンティティ マネージャーをサーブレット インスタンス変数に挿入することは、マルチスレッド セーフではありませんが、テストのためです。

質問

JAAS が使用されない理由と、JAAS を使用するように WAS または JPA を構成する方法を理解してください。

環境

IBM WAS 8.5.5.7 for Developers (Apache openjpa-2.2.3-SNAPSHOT-r422266)
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
Windows 7 64 bit on DELL Latitude core i7 2.8GHz 8G メモリ & SSD HDD

ログ

アプリケーション起動時の Oracle エラー

CreateAccount 実行時の Oracle エラー

JNDI 名前空間 (server1)

ビルド時の OpenJPA ログの機能強化

参考文献


アップデート

IBM Redbook WebSphere Application Server for Developers V7の JPA の例を試しました。アプリケーション バージョン 2 をデプロイしましたが、同じエラーが発生しました。

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

jsf - コンテナ管理の認証/承認を使用した Hash+Salt パスワード

コンテナー管理の認証と許可を使用して JSF Web アプリケーションを作成しました。セキュリティ制約、セキュリティ ロール、および FORM ログイン構成を定義しました。これらすべてのパラメーターをどのように定義したかについて、以下のコードを提供しました。すべて正常に動作します。ユーザーが「保護された」Web ページにアクセスしようとすると、ログインが求められ、成功した場合はアクセスが許可され、失敗した場合はアクセスが拒否されます。パスワードは平文で保存されるため、ユーザーが平文のパスワードを入力しても、コンテナ管理の認証を使用したログインは正常に機能します。

ご存知のように、FORM 認証方式を使用してユーザーが入力した平文のパスワードにアクセス/変更/作業することはできません。しかし、保存する前にパスワードをハッシュ+ソルトしたいのですが、ユーザーがプレーンテキストを入力し、データベースにハッシュ+ソルトされたパスワードが含まれるため、ログインが機能しません。コンテナー管理の認証および承認機能を保持し、ハッシュ + ソルト パスワードを保持する方法はありますか? FORM 認証ではユーザーが入力したパスワードを使用できないため、データベースに保存されているパスワードと比較する前に、ハッシュとソルトを行うことはできません。読める本やブログがあれば教えてください。私はウェブ全体を徹底的に調べましたが、理解できる答えが見つかりませんでした.

ログイン構成は次のとおりです。

ログインページは以下の通りです。