問題タブ [seam3]

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 に答える
199 参照

java - サーバーおよびJPAトランザクションとのクライアントの会話

私は情報システムを開発していますが、対処方法がわからないことがあります。私のウェブサイトで管理者がユーザーを編集できるとしましょう。2人の管理者が同じユーザーを同時に編集したい場合、後で編集をクリックした後、最初の管理者は許可されるべきではありません。

そのため、管理者が編集ボタンをクリックしたときにトランザクションを開き、編集したフォームを送信したときにコミットしたいと思います。

私が考えることができる1つの解決策は、EntityManagerをNamedConversationScopedCDIBeanに配置することです。ただし、プレゼンテーション層はビジネス層から分離する必要があり、データベースアクセスはビジネス層に属するため、これは適切なソリューションではないと思います。

別の解決策は、EntityManagerをステートフルBeanに配置し、ステートフルBeanのメソッドを呼び出すNamed ConversationScopedCDIBeanからのトランザクションを管理することです。しかし、Web層でトランザクションを管理することは良い考えですか?ビジネス層を別のアプリケーションサーバーにデプロイすることにした場合、リモートEJBでのトランザクションの管理は機能しますか?また、EJBが不動態化された場合、トランザクションは失われますか?

これは別の問題にも関連しています。EntityManagerを使用してデータベースからオブジェクトを取得すると、トランザクションが閉じられるとすぐにオブジェクトが切り離されます。オブジェクトに遅延初期化フィールドがある場合、オブジェクトがWeb層に戻されるとデタッチされるため、Web層はそれらにアクセスできません。したがって、Web層でトランザクションを管理するか、ビジネス層で遅延初期化されたフィールドを反復処理することができます。前者の解決策は正しくないようであり、後者は非常に冗長で複雑になる可能性があります。

質問が多すぎることは知っていますが、これを適切に行う方法を本当に知りたいです。

CDI、Seam 3、EJBのテクノロジーを利用できます。

もちろん、あなたがより良い解決策を知っているなら、私はそれを聞いてうれしいです。

前もって感謝します。

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

java - ログイン後に Seam セキュリティと prettyfaces が間違った URL にリダイレクトする

Seam セキュリティで自分のページにログインすると、単に / ではなく /WEB-INF/pages/index.xhtml にリダイレクトされます。これは私の @ViewConfig のスニペットです:

どこに問題があるか知っていますか?

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

seam - Seam3 @ViewConfig と pretty-faces マッピング ID

Seam3 @ViewConfig インターフェースを介してきれいな顔を使用する場合、どうすれば urlMapping の ID を取得できますか?

pretty-config.xml では、id は url-mapping 要素で指定されます。

Pretty Faces が提供する @URLMapping アノテーションを使用すると、id 属性を使用できます。

しかし、Seam フェイスが提供する @UrlMapping アノテーションには id 属性がないため、このマッピングの id はどうなるのだろうか。

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

dependency-injection - Seam3でメッセージを静的メソッドに取り込む方法

Seam 2にはComponent.getInstance(someClass)があり、これを静的メソッドに使用してBeanをインスタンス化できます。

Seam 3でこのアプローチを行うにはどうすればよいですか?

元:

静的メソッドでメッセージを取得するにはどうすればよいですか?

アップデート:

使用しました

そして、すべてが正常に動作します。しかし、このコードはすべて作成する必要があります。

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

jsf - Seam 3 例外ハンドラ - リダイレクトが機能しない

この場合、リダイレクトが機能しない原因は何ですか?

例外ハンドラ メソッドが処理されていることを確認します。例外ハンドラーメソッドでエラーページにリダイレクトするにはどうすればよいですか?

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

jsf-2 - jsf2 ナビゲーションの問題

jsf2、jboss 6.1、および seam 3 を使用するアプリがあります。次のようなことをしたいです。

ユーザーがアプリにアクセスしようとして認証されない場合は、ログイン ページに誘導する必要があります。ユーザーがログイン URL を入力しても既にログインしている場合は、ホーム ページにリダイレクトされ、再度ログインする必要はありません。だから私はこれをfaces-config.xmlに入れました

しかし、最初のルールは機能しません。ユーザーが login.xhtml で URL を入力すると、ページにとどまります。彼をリダイレクトする必要があります。どうやってやるの?

ありがとう

ケリー

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

web-services - Webサービス/Webアプリを学ぶための助けが必要

私は過去5年間、Java開発者として、コアJavaとJavaSwingsで完全に開発された製品を扱ってきました。今、私はバックエンドで同様の作業を行う新しい会社に移動しましたが、クライアントはWebサービス、EJB、Seam、およびその他のWeb関連のものを学ぶ必要があります。どこから始めればよいか、役に立つ本、チュートリアルを深く理解し、今のところすぐに始められるようにしたいと思います。私を助けてください。

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

ejb-3.0 - jbossでのejb3sfsbアクティベーション例外

jboss6.1にseam3を使用したアプリケーションがあります。私のBeanは、ほとんどが会話スコープのBean(ステートフルセッションBean)です。会話スコープのBeanによって処理されるページを表示しているときに、しばらく(たとえば数分)ページを離れ、アクションリンクをクリックすると、次のエラーが発生することがあります。

jbossがシリアル化可能なオブジェクトを復元しようとしているようですが、これは利用できません。しかし、私はどれを見つけることができます。

誰かが助けることができますか?

ありがとう

ケリー

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

cdi - Weldで実行中の既存の会話をすべて取得するにはどうすればよいですか?

私はJBoss7.1.1.Final、Weld、Seam3でアプリケーションを作成しています。次のBeanがあります。

これで、ユーザーは複数の会話を作成でき、各会話はConversationBeanのインスタンスに関連付けられます。長時間の会話に関連するすべてのインスタンスを取得できる必要があります。

それらへのアクセスが必要な理由は、ユーザーが1つの記事を複数回開くと(したがって、同じ記事で複数の会話が作成されるため)です。彼が1つの会話で記事を変更した場合、他の会話で記事を更新できるようにしたいと思います。

これを行うための標準的な方法はありますか?

編集:「記事」インスタンスはentityManagerによって検索され、会話内で管理されます。エンティティマネージャは、Seam ManagedPersistenceContextを使用して取得されます。

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

ejb - REQUIRES_NEW トランザクション属性で使用される FlushMode タイプのコミット

JBoss 7.1.1 Final、Weld、Hibernate 4、Seam 3 で開発していますが、次の動作がわかりません。Entity manager には Seam Managed Persistence Context を使用し、Seam 3 の Persistence Interceptor を使用しています。次の CDI Bean があります。

そして次のEJB

Seam Persistence モジュールを使用しているため、次の操作の流れが発生すると想定しています。

1) registrationController.register() がフロントエンドから呼び出されます

2) 新しいトランザクション A が開始されます

3) service.register(...) が呼び出されます

4) トランザクション A が中断され、トランザクション B が service.register の実行用に作成されます (REQUIRES_NEW によってアノテーションが付けられているため)

5) service.register(...) の実行が完了する

6) トランザクション B がコミットされる

7) COMMIT フラッシュ タイプを使用しているため、フラッシュが呼び出されます。

8) トランザクション A が開かれます

現在、 em.find(Person.class, p.getId()) は永続化された人だけを見つけようとしています。トランザクション B がコミットされ、エンティティ マネージャーがフラッシュされたので、トランザクション B が見つかるはずです。しかし、それは null を返します。手動でフラッシュすると、機能します。

どこで間違いを犯していますか?何か誤解がありますか?