問題タブ [cdi]
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 - CDI - 条件付きインストール
アプリケーション スコープのコンポーネントがいくつかあります。現在の環境に応じて、どちらか一方をインストールしたいと考えています。JBoss Seam では、@Install(false) を使用してから、必要な Bean を components.xml で構成します。
CDI / WELDでこれを行うための同様の方法はありますか?
ありがとう、
ウォルター
java - 休止状態-CDI
監査目的で使用するHibernateEnversリスナーがいくつかあります。私はCDIを始めたばかりですが、これまでのところ、そのシンプルさとパワーにうれしい驚きを感じています。すべてがCDI機能を統合しているように見えるので、私は質問を提起すると思いました。Hibernateはそれをサポートしていますか、それともサポートしますか?
さまざまなコンポーネントにアクセスできると便利なだけでなく、Hibernateのインターフェースに制限されることなく、他のコンテキスト情報に簡単にアクセスできると便利です。
java - CDI-エラーの処理
Seam 2を利用したアプリケーションをCDIに移行していますが、保持することが重要なことの1つは、エラー処理です。Seam 2では、デフォルトの例外ハンドラーを自分のものに置き換えただけですが、CDIでは、インターセプターを使用する必要があると思います。
インターセプターを使用すると、通話をインターセプトする場所を指定する必要があるため、これをどのように設定しますか?私は主に監査を実行したいので、例外が発生するとログに記録され、通知(電子メール、xmpp、SMS、電話)が管理者に送信されます。
例外が発生した場合、私が聞いて行動できるイベントはありますか?
ウォルター
jakarta-ee - Glassfish v3.0.1 にデプロイされた耳で CDI が機能しない
溶接ロガー注入の使用に問題があります。
シナリオ: ejb-jar が入った耳があります。
これは私の ejb Bean です。
print1Partner が呼び出されたときに例外が発生しました:
|2010-07-02T19:25:35.003+0300|警告|oracle-glassfish3.0.1|javax.enterprise.system.container.ejb.com.sun.ejb.containers|_ThreadID=48;_ThreadName=Thread-1;| EJB PartnersService メソッドの呼び出し中にシステム例外が発生しました public void ua.co.oasys.fenix.persistence.PartnersService.print1Partner() javax.ejb.EJBException: javax.ejb.EJBException: javax.ejb.CreateException: ステートレスを作成できませんでしたcom.sun.ejb.containers.StatelessSessionContainer._getContext(StatelessSessionContainer.java:448) の EJB。com.sun.ejb.containers.BaseContainer.getContext(BaseContainer.java:2467) で。 com.sun.ejb.containers.BaseContainer.callEJBTimeout(BaseContainer.java:3962) で preInvoke(BaseContainer.java:1860) com.sun.ejb.containers.EJBTimerService で。deliveryTimeout(EJBTimerService.java:1667) で com.sun.ejb.containers.EJBTimerService.access$100(EJBTimerService.java:98) で com.sun.ejb.containers.EJBTimerService$TaskExpiredWork.run(EJBTimerService.java:2485) でjava.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) で java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) で java.util.concurrent.FutureTask.run(FutureTask. java:138) で java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) で java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) で java.lang.Thread.run で(Thread.java:619) 原因: javax.ejb.EJBException: javax.ejb.CreateException: com.sun.ejb.containers.StatelessSessionContainer$SessionContextFactory でステートレス EJB を作成できませんでした。com.sun.ejb.containers.util.pool.NonBlockingPool.getObject(NonBlockingPool.java:200) で create(StatelessSessionContainer.java:720) com.sun.ejb.containers.StatelessSessionContainer._getContext(StatelessSessionContainer.java:443) で... 12 以上 原因: javax.ejb.CreateException: com.sun.ejb.containers.StatelessSessionContainer.createStatelessEJB(StatelessSessionContainer.java:528) でステートレス EJB を作成できませんでした com.sun.ejb.containers.StatelessSessionContainer.access com.sun.ejb.containers.StatelessSessionContainer$SessionContextFactory.create(StatelessSessionContainer.java:718) で $000(StatelessSessionContainer.java:90) ... 14 以上 原因: java.util.concurrent.ConcurrentHashMap での java.lang.NullPointerException org.jboss.weld.manager.BeanManagerImpl の .get(ConcurrentHashMap.java:768)。getBean(BeanManagerImpl.java:1171) org.jboss.weld.manager.BeanManagerImpl.getBean(BeanManagerImpl.java:132) org.glassfish.weld.services.JCDIServiceImpl._createJCDIInjectionContext(JCDIServiceImpl.java:145) org.glassfish .weld.services.JCDIServiceImpl.createJCDIInjectionContext(JCDIServiceImpl.java:122) com.sun.ejb.containers.BaseContainer.createEjbInstanceAndContext(BaseContainer.java:1616) com.sun.ejb.containers.StatelessSessionContainer.createStatelessEJB(StatelessSessionContainer.java) :469) ... 16 件 |#]createJCDIInjectionContext(JCDIServiceImpl.java:122) at com.sun.ejb.containers.BaseContainer.createEjbInstanceAndContext(BaseContainer.java:1616) at com.sun.ejb.containers.StatelessSessionContainer.createStatelessEJB(StatelessSessionContainer.java:469) ... 16もっと |#]createJCDIInjectionContext(JCDIServiceImpl.java:122) at com.sun.ejb.containers.BaseContainer.createEjbInstanceAndContext(BaseContainer.java:1616) at com.sun.ejb.containers.StatelessSessionContainer.createStatelessEJB(StatelessSessionContainer.java:469) ... 16もっと |#]
使用: ejb 3.1、グラスフィッシュ 3.0.1
Maven の依存関係の一部:
耳pom.xml
META-INF/ の bean.xml
ejb を使用せずに war in ear で動作する同じ構成 (戦争中ですが、戦争で ejb を使用して溶接する場合 - 同じ例外)
Q1: 何が悪いの?
Q2: 溶接 & ejb 3.1 を使用する際の規則は何ですか?
jakarta-ee - ejb 3.1を使用したCDI、glassfishv3.0.1のウェルドロガー
シナリオ:1)Maven Earプロジェクトを作成し、内部にwarプロジェクトを作成します。2)warプロジェクトのWEB-INF /にbeans.xmlを追加します。3)単純な@SteatelessBeanを作成します。
プロジェクト-http://drp.ly/1j5C3t
ejb Bean:
maven pom-戦争プロジェクトのxml:
耳プロジェクトのmavenpom.xml:
テストケース1(問題):beans.xmlを使用してプロジェクトをデプロイすると例外が発生します:
[#| 2010-07-04T19:36:50.003 +0300|警告|oracle-glassfish3.0.1| javax.enterprise.system.container.ejb.com.sun.ejb.containers | _ThreadID = 33; _ThreadName = Thread-1 ; |EJBTestEjbメソッドの呼び出し中にシステム例外が発生しましたpublicvoidTestEjb.print1Partner()javax.ejb.EJBException:javax.ejb.EJBException:javax.ejb.CreateException:com.sun.ejbでステートレスEJBを作成できませんでした。 container.StatelessSessionContainer._getContext(StatelessSessionContainer.java:448)at com.sun.ejb.containers.BaseContainer.getContext(BaseContainer.java:2467)at com.sun.ejb.containers.BaseContainer.preInvoke(BaseContainer.java:1860) com.sun.ejb.containers.BaseContainer.callEJBTimeout(BaseContainer.java:3962)at com.sun.ejb.containers.EJBTimerService.deliverTimeout(EJBTimerService.java:1667)atcom.sun.ejb.containers。EJBTimerService.access $ 100(EJBTimerService.java:98)at com.sun.ejb.containers.EJBTimerService $ TaskExpiredWork.run(EJBTimerService.java:2485)at java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:441 )at java.util.concurrent.FutureTask $ Sync.innerRun(FutureTask.java:303)at java.util.concurrent.FutureTask.run(FutureTask.java:138)at java.util.concurrent.ThreadPoolExecutor $ Worker.runTask( ThreadPoolExecutor.java:886)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:908)at java.lang.Thread.run(Thread.java:619)原因:javax.ejb.EJBException:javax .ejb.CreateException:com.sun.ejb.containers.util.poolのcom.sun.ejb.containers.StatelessSessionContainer $ SessionContextFactory.create(StatelessSessionContainer.java:720)でステートレスEJBを作成できませんでした。NonBlockingPool.getObject(NonBlockingPool.java:200)at com.sun.ejb.containers.StatelessSessionContainer._getContext(StatelessSessionContainer.java:443)... 12 more原因:javax.ejb.CreateException:comでステートレスEJBを作成できませんでした.sun.ejb.containers.StatelessSessionContainer.createStatelessEJB(StatelessSessionContainer.java:528)at com.sun.ejb.containers.StatelessSessionContainer.access $ 000(StatelessSessionContainer.java:90)at com.sun.ejb.containers.StatelessSessionContainer$SessionContextFactory。 create(StatelessSessionContainer.java:718)... 14 more原因:org.jboss.weld.manager.BeanManagerImpl.getBeanのjava.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:768)のjava.lang.NullPointerException (BeanManagerImpl.java:1171)org.jboss.weld.manager.BeanManagerImplにあります。getBean(BeanManagerImpl.java:132)at org.glassfish.weld.services.JCDIServiceImpl._createJCDIInjectionContext(JCDIServiceImpl.java:145)at org.glassfish.weld.services.JCDIServiceImpl.createJCDIInjectionContext(JCDIServiceImpl.java:122)at com.sun .ejb.containers.BaseContainer.createEjbInstanceAndContext(BaseContainer.java:1616)at com.sun.ejb.containers.StatelessSessionContainer.createStatelessEJB(StatelessSessionContainer.java:469)... 16 more |#] [#| 2010-07-04T19 :36:50.004 + 0300 | INFO | oracle-glassfish3.0.1 | javax.enterprise.system.container.ejb.com.sun.ejb.containers | _ThreadID = 33; _ThreadName = Thread-1; | EJB5119:Expunging timer [' 13 @@ 1278255602087 @@ server @@ oasys'' TimedObject = TestEjb'' Application = testo'' BEING_DELIVERED'' PERIODIC''コンテナID=83771744647118848'' Sun Jul 04 19:36:45 EEST 2010'' 0'' * / 15#*#*#*#*#*#*#null#null#null#true#print1Partner#0'] [2]配信失敗後|#]
[#| 2010-07-04T19:37:00.000 + 0300 | INFO | oracle-glassfish3.0.1 | javax.enterprise.system.std.com.sun.enterprise.v3.services.impl | _ThreadID = 33; _ThreadName = Thread -1; |これはテストです|#]
期待される結果:
Yrjaaaa
これはテストです
結果 :
例外
これはテストです
ケース2:beans.xmlを削除します
結果を期待する:
Yrjaaaa
これはテストです
結果
Yrjaaaa
これはテストです
目標:他のwar&ejbプロジェクトを含むearアーカイブ内のWebプロジェクトでejbweld(CDI)を使用したいのですが、Webプロジェクト(war + ejb)を分離したくありません。
ツールと環境:mavenとejb3.1とweldとglassfish3.0.1
Q1:これはある種の特定のGlassfishのバグである可能性がありますか?Q2:問題の原因は何ですか?Q3:そのような場合のデザインはありますか?
ありがとうございました。
java - およびSessionScopedBean
問題:より適切なデザインを探しています。
目標:ユーザー情報の表を作成し、各ユーザーの列に[パスワードの変更]ボタンを表示したい。クリックすると、[パスワードの変更]ボタンが消え(= "false"と表示)、inputSecreatフィールドが表示されます-ユーザーがパスワードを入力しますそしてそれを送信します(追加のボタンをクリックするか、ホットキーを使用して)。送信後-「パスワードの変更」ボタンは以前と同じように紙に書かれています。
私の豆
およびページ:
だから私は次の列で私の豆を使用しています:
質問2:この状況に適した設計は何でしょうか?
質問3:それがdisabled =«true»としてスティードされた場合、いくつかのコンポーネント(私の状況ではinputSecret)のいくつかのイベント(onclick、ondbclick内部のコンポーネントタグ)をリッスンすることは可能ですか?
ありがとうございました!
asynchronous - EJB3.1 @Asynchronous の使用時に ConcurrentModificationExceptions を回避する方法
[私の設定: Java EE 6 アプリケーション、EJB3.1、CDI/Weld、Glassfish 3.0.1 で動作する JSF2 を使用]
EJB3.1 の新しい @Asynchronous メソッドに関する記事をいくつか読みましたが、非同期メソッドの危険性や、実際に注意する必要があることについて言及した記事はありませんでした。
私のアプリでは、@Asynchronous E-Mail サービスを使用して、大量のメールを送信しています。このサービスを CDI/Weld Bean から呼び出しています。テスト中に ConcurrentModificationExceptions が頻繁に発生しましたが、今までのところ、クラッシュする場所と理由がよくわかりません。
私の Beans が大まかにどのように見えるかを示すために、重要な部分は次のとおりです。
私のCDI-Beanでは、このEJBを次のように使用しています(進行状況をJSF2に公開しています):
私は一般的に尋ねたかっただけです:私はここで何か完全に間違ったことをしていますか(スコープ、インジェクション、フューチャーの使用)? ConcurrentModificationExceptions を回避するために、@Asynchronous メソッドを使用する場合、何に注意する必要がありますか?
電子メールを EJB として注入しています。EmailEJB 全体を Asynchronous にして @Inject @Asynchronous で注入したほうがよいでしょうか? 違いは何ですか?
どんなヒントでも大歓迎です!
dependency-injection - Java EE 6: CDI への切り替え - 最高のリソース
小さいながらも完全な Java EE 6 アプリケーションが手元にあります。
従来の注釈が使用されています : @Resource
, @EJB
, @Singleton
, @PostConstruct
, @PreDestroy
, @PersistenceContext
, @ManagedBean
, @ManagedProperty
, ...@RequestScope
@ApplicationScope
CDI を導入することが理にかなっているかどうかを評価し、依存性注入、Bean ライフサイクル管理などの共通戦略を標準化することを検討したいと思います。
質問:従来の Java EE 6 アノテーションを CDI アノテーションに変換する優れた記事、例、またはマニュアルを知っている人はいますか?
java - なぜ@PostConstructを使用するのですか?
マネージドBeanでは@PostConstruct
、通常のJavaオブジェクトコンストラクターの後に呼び出されます。
@PostConstruct
通常のコンストラクター自体ではなく、Beanで初期化するために使用するのはなぜですか?
java - CDI での会話スコープの実装方法
何らかの構造を保持するセッションキーを介して行われますか?