問題タブ [jboss-weld]
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 - Netbeans: 溶接 SE の動作がおかしい
公式ドキュメントに従って、非常に単純な Java SE Weld クイックスタート クラスを実装しました。
私の実行構成が起動しますorg.jboss.weld.environment.se.StartMain
ここが面白い部分です。Jar ファイルを作成しないと ([Clean and Build] をクリックして)、メッセージが出力されません。
Jar ファイルを作成すると、コマンドラインと Netbeans の両方からすべてが正常に実行されます。したがって、Netbeans が jar からアプリケーションを実行していると想定しました。
問題は...そうではありません。
Test クラスを更新して Netbeans から実行すると、変更が反映されます。コマンドラインからjarを実行すると、古いメッセージが出力されます。
プロジェクトをクリーンアップすると、Netbeans 起動構成がメッセージの出力を停止します。
Netbeans が私のアプリケーションをどのように正確に実行しているかを誰か説明できますか? この奇妙な動作は理にかなっていますか、それともバグと見なすべきですか?
java - モジュール式の JSF 2.0 アプリケーションを作成するには?
明確に定義されたインターフェースを持つアプリケーションがあります。モジュールの解決に CDI を使用し (具体的には、API インターフェイスで Instance<> 注入ポイントを使用してモジュールを解決します)、インターフェイスを介してさまざまなデータを問題なくやり取りします。私は意図的に API と実装を分離し、密結合を避けるためにモジュールは API からのみ継承し、アプリケーションは実行時の依存関係と API を介して行われるデータの受け渡しを通じてのみモジュールを認識します。アプリケーションは、jar を WEB-INF/lib フォルダーにドロップしてアプリ サーバーを再起動するだけで追加できるモジュールがなくても正常に動作します。
私が問題に直面しているのは、モジュールにビューの一部を作成させたいということです。そのため、ポータブルな方法で JSF コンポーネントを呼び出すか、モジュールからインクルードを実行して、それを取得します。そのビューをレンダリングします。呼び出したいモジュールは既に解決しており、モジュールのインターフェースへの参照が用意されています。私が最初に考えた方法は、モジュールにビュー テンプレートの場所を提供するように要求する ui:include を実行することでしたが、ビューの解決はアプリケーションから行われるため、意味のある方法でそのクエリに答える方法がわかりません。ライブラリルートではなく、ルート。
エグゼクティブ サマリーは、.xhtml (テンプレート/コンポーネント) ファイルに JSF を使用して、アプリケーションからライブラリへのギャップをジャンプする方法がわからないということです。
CC を使用するのはよいことですが、実行時に特定の CC インスタンスが必要であることをページにハード コードするのではなく、どのように指定すればよいでしょうか?
もちろん、アプリケーション コードを直接呼び出してマークアップを要求することもできますが、これは非常に強引な方法のように思えます。また、マークアップを取得すると、それを評価するように JSF に指示する方法が正確にはわかりません。とはいえ、リソース パスを取得し、マークアップを取得して評価し、完成したマークアップを返すコンポーネントを想像することはできますが、それを実装する方法がわかりません。
可能であれば、モジュール開発者に負荷の高い UIComponent アプローチを強制することは避けたいと思います。つまり、動的な方法で ui:include (または同等のもの) を実行するか、動的な方法で CC を呼び出します。(モジュール開発者の生活を楽にするために必要な場合は、アプリケーションでUIComponentアプローチを一度コーディングしてもかまいません)
これを理解するためにどこを見るべきかについての提案はありますか? (最初に見つけたら、ここに答えを投稿します)
jboss-weld - 溶接 @Inject インターフェース
溶接初心者です。パッケージ化されたSeam 3プロジェクト戦争をセットアップしています。私は picketlink のセキュリティ管理を発見したいので、彼のさまざまなマンジャーをテストするために (データベースとエンティティ クラスをセットアップした後)、コントローラー (TestAction クラス) を作成しました:
私のenvはjboss 6 finalです。
起動時に私が得た:
PersistenceManager は、パラメーター (IdentitySesionImpl) を持つ具体的なクラスを持つインターフェイスです。
PersistenceManager を注入するにはどうすればよいですか? WELD-001408 の意味は何ですか?
よろしく
java - サーバーとWeld/CDIでGWT(RPC)と結婚するにはどうすればよいですか?
GWTとCDI(Seam / Weld)の統合に関する質問はあまり注目されなかったので、もう一度試してみます。サーバー側では、Weld / CDIを使用したいと思います(現在Guiceを使用しています)。Guiceには、GuiceServletContextListenerでアクティブ化されるモジュールで名前が付けられたRemoteServiceServletのサブクラスがあります。GWT RPCエンドポイントがWeldからインスタンスを取得するように、RemoteServiceServletを登録するためのクラスを作成した人はいますか?
java - ViewScopedBeanにエンティティを注入します
私はCDIを初めて使用し、これをJSF2アプリケーションに使用したいと考えています。クラスMyUser
は単純な@Entity
-Beanであり、オブジェクトは@PostConstruct
Beanのメソッドで作成されます。
JSFページでユーザーにアクセスすることは、魅力のように機能します#{user.lastName}
。しかし今、私は他のBeanからこのオブジェクトにアクセスしたいと思います@ViewScopedBean
。
現在の(ログインしている)MyUser user
ものを他のいくつかのBeanで使用できるようにしたいのですが、これを行う方法がわかりません。単純@Inject
にそれを実行しても機能しませんでした(そして、これは単純なものに少しなります)。
user
他のBeanからにアクセスするための最良のアプローチは何ですか?JSF1.2スタイルのコードはUserBean bean = (UserBean)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("UserBean");
昔ながらのようです!
jax-rs - Tomcat 7でのCDI(溶接)でのJAX-RS(RESTEasy)の使用
JSF 2.0アプリケーション(Tomcat 7で実行され、weld 1.1.1.Finalを使用)で、いくつかのバイナリファイル(.doc、.pdfなど)をダウンロードするようにユーザーに提案したいと思います。
そのニーズを満たすために、JAX-RS(RESTEasy 2.2.0.Final)リソースBean(注釈付き)を使用したいと思います@Path
。問題は、そのBean内で、@Inject
アノテーションが付けられたフィールドからサービスを呼び出したいということです。
実際、同じようなことを試みている溶接ユーザーのように、私はNullPointerException
:溶接は私のサービスを注入しません。
そこで、RESTEasyをCDIと統合する方法について話しているJBossコミュニティwikiの投稿を読んだので、Maven戦争プロジェクトを依存さorg.jboss.resteasy:resteasy-cdi
せましたweb.xml
。
問題は、アプリケーションがブートストラップするときに、その例外が発生することです。
そして、resteasy.injector.factory
context-paramを削除すると、 ...NPE
で注釈が付けられたフィールド変数からサービスを取得しようとすると、が発生します。@Inject
Weldによって管理されるようにRESTEasyBeanを構成する方法(およびJAX-RSリソースへのインジェクションを可能にする方法)を知っている人はいますか?
dependency-injection - リモート テスト用の Arquillian に関する基本的な質問
最近、Arquillian について学び始めました。入門チュートリアルに従って、リモート、組み込み、およびマネージド コンテナーについて説明する「コンテナーの種類」について学びました。Arqillian がこれらのさまざまな種類をどのように扱うかについて少し混乱しています。
私の質問は: 入門チュートリアルの最初の例 (TemparatureConverter を含む) では、JBoss AS 6 をリモート コンテナとして使用しています。私が理解したのは、TemparatureConverter Bean を含むメイン アプリケーション アーカイブが JBoss AS 6 (独自の VM で実行されている) にデプロイされ、Test クラスが別の VM で実行されるということです。
TemparatureConverter.java ie Bean クラスにいくつかのログ メッセージを追加しました。
また、いくつかのログ メッセージを Test クラスに追加しました。
JBoss AS を起動し、コマンド ラインから次のように入力してテスト ケースを実行します。mvn test -Pjbossas-remote-6
Bean クラスに追加したログ メッセージは JBoss コンソールに出力され、Test クラスに追加したログ メッセージは Maven コンソール ウィンドウに出力されると考えていました。これら 2 つのことは別の VM で実行されているためです。
しかし、それは起こらず、すべてのログ メッセージが JBoss AS コンソールに出力されていることがわかりました。
つまり、私のテスト ケースは Bean クラスと共に JBoss AS コンテナ内で実行されています。
もしこれが本当なら、遠隔性はどこにあるのでしょうか? つまり、テスト ケースと Bean の両方が同じ JVM 内で実行されています。これは「埋め込みコンテナー」の動作に似ていますね。
私はこの説明を参照しています:
しかし、この場合、Arquillian は同じ JVM に Bean クラスとともにテスト ケースを配置しているようです。
私の質問が明確でない場合はお知らせください。
dependency-injection - CDI は Bean のリモート インスタンスを注入できますか?
CDI はリモート EJB クライアントに EJB 参照を注入できますか?
実際、システムでローカルに実行され、スタンドアロン JBoss AS で実行されている EJB にアクセスする JUnit テスト ケースがあります。私は現在、JNDIを使用してBeanのリモートビジネスインターフェースにアクセスし、同じことをテストしています。
@Inject が、JNDI ルックアップを回避して EJB にアクセスできるように、EJB インスタンスをテスト ケースに直接注入するのに役立つかどうかを知りたいです。
java-ee-6 - CDI/Weld を使用したジェネリック Bean の注入
私は小さな素敵な JavaSE/Guice の世界から来たばかりで、現在「コンテナによって運ばれる」EE6 の道を発見しています。Glassfish3.1 で問題が発生した後、JBoss に切り替えたところ、問題が発生するはずがありません。
インフラ支援クラスとして、あらゆる種類のエンティティ用の汎用リポジトリ/DAO を作成しようとしています。非常に単純な方法で、これは次のようになります。
現在、エンティティ依存のクエリ機能を必要とせず、次のような特定のエンティティ タイプのリポジトリのみを必要とする Bean が存在する場合があります (テスト ケースである可能性があります)。
残念ながら、Weld はこの種のジェネリック インジェクションを好まないようです。展開時に、次のエラーが発生します。
私は何かを見逃していますか、それともジェネリック注入を実装するのを忘れていましたか? 私が一般的なものを理解している限り、それはとにかくコンパイル時に消去されます - これは今のところ guice3 でとてもうまくいきました。
敬具、
アビ
編集:この動作は仕様にあるが、溶接には実装されていないというガービン・キングのコメントを見つけました(声明は2009年6月にありました)
java - CDI スコープを破棄することは可能ですか?
オブジェクトの依存性注入に CDI/Weld を使用する Java EE アプリケーション (主に JSF 管理コンソールを備えた JAX-RS) に取り組んでいjavax.enterprise.context.ApplicationScoped
ます。マイナーなデバッグの問題は別として、CDI はこのプロジェクトでうまく機能しました。
ここで、CDI によって注入されたオブジェクトのライフサイクルを非常に大まかに制御する必要があります。次の機能が必要です。
- 注入されたオブジェクトをアプリケーション コンテキストから削除する、または
- アプリケーションコンテキスト全体を破棄/削除/クリア/リセット/削除する、または
@ScopeType
Context
上記の 2 つのタスクのいずれかを実行するメソッドを提供できる独自の実装を定義します。
私は、これが CDI と一般的な依存性注入の粒度に反しないとしても、それを超えていることを十分に認識しています。ただ知りたいだけです
- これはリモートで可能ですか?
- はいの場合、仕事を終わらせるための最も簡単/簡単/迅速/確実な方法は何ですか?