問題タブ [weld-se]

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

java - src/test/META-INF/beans.xml の代替プロデューサーを使用して溶接する

Weld SE 2.3.0.Final を使用して、テスト中に注入された依存関係の代替実装を交換しようとしていますbeans.xmlsrc/test/resources/META-INF

ただし、常にメインバージョンを使用しているように見えますが、そのbeans.xml理由はわかりません。

まず、サポートクラスはこちら

エンジン.java

DefaultEngine.java

車.java

EngineProducer.java

App.java

そして、の製品beans.xmlsrc/main/resources/META-INF

上記のコードを App.java から実行すると、出力されるはずです (出力されます)。

SportsEngineテストコードから、実装を使用したいと思います。だから私は次のものを持っています

SportsEngine.java

TestEngineProducer.java

AppTest.java

WeldJUnit4Runner.java

そして、のテストbeans.xmlsrc/test/resources/META-INF

テストメソッドが実行されると、印刷されます

しかし、代わりに のEngineProducer代わりにを使用しているようでTestEngineProducer、出力を 2 回出力します。

テストの beans.xml を使用しないのはなぜですか?

テストの beans.xml からセクションを配置<alternatives>してメインの beans.xml に配置すると機能しますが、テスト中に main/resources/META-INF の beans.xml を交換したくありません。

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

java - 溶接 SE アプリケーションの実行可能 jar を取得する方法

eclipse 内からアプリケーションを実行すると (weld se: org.jboss.weld.environment.se.StartMain の main メソッドを使用して) 正常に動作する、weld se を使用する小さな cli アプリケーションがあります。

問題は、動作する実行可能な jar を作成できないことです。現時点では、maven-assembly-plugin を使用しています。

また、シェードプラグインを次のように試しました: <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>

しかし、すべての場合で、同じ多くのエラーが発生します。

その間、私も追加しようとしました

ここで提案されているように、私の beans.xml に。変化なし...

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

java - Java SE の Weld は代替を使用しません

projectAprojectB、およびprojectCEclipse Maven プロジェクトがあります。

  • ProjectA内容:
    • IMyApiインターフェース。
    • 「空の」META-INF\beans.xmlファイル。
  • ProjectB内容:
    • IMyConfigインターフェース。
    • MyConfigJndiの実装IMyConfig
    • MyApiImplIMyApiプロパティを持つ の実装@Inject private IMyConfig config;
    • 「空の」META-INF\beans.xmlファイル。
  • ProjectC内容:
    • としてマークされた のMyConfigAlter実装。IMyConfig@Alternative
    • Weld SE を初期化し、 Beanを取得するMainクラス (およびメソッド) 。IMyApi
    • セクションに記載されているMETA-INF\beans.xml場所。MyConfigAlteralternatives

ここで、Mainクラスを実行すると、 Bean が (インスタンスIMyApiとして) 正常に取得されます。MyApiImplしかし、そのようなインスタンスには、そのプロパティで、代替バージョンの代わりにインスタンスがconfig注入されています ( )MyConfigJndiMyConfigAlter

Eclipse Luna + M2Eclipse を使用しています。

私は何を間違っていますか?

@Specializes更新:代わりに使用すると問題が解決することがわかりましたが@Alternative、それでも適切な解決策ではないと思います(状況によっては、「デフォルト」の実装にアクセスできない場合があります)。

更新 2:

私はWeld-se、2.2.10.Finalを使用しています:

そして、初期化は単純です

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

xml - Weld 実装を使用した Java SE アプリでの IllegalAccessError

CDI の Weld 実装を備えたスタンドアロン アプリを実行しようとしています。そのアプリでは、Oracle データベースと連携するために EntityManager が必要です。

(Weld メイン メソッドを使用して) アプリを実行すると、cmd 行に次のように表示されます。

このようなエラーの原因は何ですか?

ここに私のpersistence.xmlがあります:

依存関係は次のとおりです。

かなり標準的な Entity Manager を作成する方法は次のとおりです。

0 投票する
3 に答える
3533 参照

java - Weld Se Applicaton を実行しようとするとエラーが発生する - Weld SE コンテナを初期化できない - Bean アーカイブが見つからない

Weld SE を使用して単純な JavaSE アプリを作成します。私はgradle runで実行しようとしていますが、例外がスローされます:

私が理解しているのは、beans.xml ファイルが見つからないということです。しかし、それは src/main/resources/META-INF/beans.xml にあります:

私の主なクラスは次のとおりです。

ビルド gradle ファイルは次のとおりです。

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

spring-data - Weld SE CDI の Spring Elasticsearch データ リポジトリ - UnsatisfiedResolutionException

Weld SE を使用して、SE アプリケーションに Spring データ リポジトリ (この場合は Elasticsearch) を挿入しようとしています。

リポジトリ

ElasticsearchTemplate の定義:

Main (アプリケーションは org.jboss.weld.environment.se.StartMain で実行されます) は次のように単純です。

依存関係は次のとおりです。

春のコンテキストを除外しましたが、コンテキストを除外するかどうかにかかわらず、同じ例外が発生します。

resources\META_INF\beans.xml 内:

スローされる例外は次のとおりです。

この問題の原因は何ですか?

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

java - Java SE環境でのアプリケーションの溶接コンテナサービスはどうですか?

私は溶接の初心者であり、数日間の調査を通じて、溶接の基本的な概念しか知りません。


私はJava SE環境で溶接コンテナを使用するつもりです。Java SEでCDIとJPAを使用する最も簡単な方法は何ですか? 私のコードセグメントは以下の通りです:


私のアプリケーションはmavenに基づいています。pom.xmlの jar 依存関係セグメントは次のとおりです。

私の意図は、SayHello オブジェクトを UseInject オブジェクトに挿入することであり、このアプリケーションの最終出力は "Hello" です。しかし、物事はそれほどスムーズではなく、jvm は次のエラーを報告します。

ここに画像の説明を入力

そして、インターネットから検索すると、空のbeans.xmlを作成しても問題ないということわざがあり、私はそれに従うと効果がありません。そして、主な方法については、私が模倣する Java SEでCDIとJPAを使用する最も簡単な方法は何ですか? Java SE で CDI と JPA を使用する最も簡単な方法は何ですか? @Producesアノテーションを使用します。私もそれを使用する必要があるかどうかわかりません。そして、SayHelloクラスに使おうと思ったのですが、どのjarをインポートすればいいのか分からず、断念。


今私がしたいこと: 1. se アプリケーションの溶接サービスの方法、つまり main メソッドが何をするかを知りたいですか?


2. 溶接を使用してアプリケーションを正常に実行するにはどうすればよいですか?


3. @Produces アノテーションを使用する必要がある場合


そして、私は多くの関連する問題、例えば、weld や java se JUnit テストでweld-se をブートストラップする方法などを参照しましたが、それらはすべて私にとって上級者であることがわかりました。 ご清聴ありがとうございました。

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

dependency-injection - CDI 拡張機能によるあいまいな依存関係の解決

独自のプロキシ Bean を作成する既存の CDI 拡張機能を変更しようとしています。これで、サービスごとに 1 つのプロキシのみが作成されます。サービスにはアプリケーション スコープのようなものがあるため、サービスのインスタンスは常に 1 つだけです。

私が達成したいことは、すべての注入ポイントに対して単一のプロキシ Bean を作成することです。特定の注入ポイントに固有の情報を保存するために必要です。同じサービスに対してより多くの注入ポイントがある場合、より多くのプロキシ Bean が存在しますが、それらの背後にあるサービスの 1 つのインスタンスは依然として存在します。ただし、このように動作を変更すると、まったく同じ 2 つのプロキシから選択できないため、Weld はあいまいな依存関係について不平を言います。

どうすればこれを修正できますか? 基本的に、私がしていることは、イベントを観察しProcessBean、発見されたすべての Bean の注入ポイントごとに新しいプロキシを作成することです。次に、メソッドを使用してこれらすべてのプロキシ Bean をコンテナーに追加しますAfterBeanDiscovery#addBean。この最後のステップをスキップして手動で注入ポイントに注入するか、注入する正しい Bean を選択する決定に影響を与えることができるようにする必要があります。注入ポイントと、そこに注入できるあいまいな依存関係のリストが与えられた場合、その属性に基づいて正しいものを選択できます。しかし、Weld でこの決定を下すことが可能かどうか、またどのようにしてそれを行うことができるかはよくわかりません。

編集:単に私がやりたいことは、@Dependent特定の注入ポイントに関連する追加情報を保存できるプロキシを使用して、同様の独自のスコープを実装することです。

EDIT2:特定の注入ポイントに関する情報を運ぶ新しい修飾子を作成することで、最終的に修正しました。この修飾子は、注入ポイントとそのプロキシの両方に追加されます。しかし、修飾子コレクションの変更を可能にする独自の実装で注入ポイントを置き換える必要があるため、これはあまり良い解決策ではありません。もっとエレガントな解決策が必要だと思います。思いつくことがあれば教えてください。

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

java - Java SE アプリケーションをウェルド付きで実行可能 Jar にパッケージ化する

コマンド ラインから Java SE 実行可能 jar を実行しようとしたときに、次の例外が発生しました。

ただし、Eclipseでプログラムを正常に実行できますが、jarにパッケージ化すると、常にこのエラーが発生します。

ここに私のMavenパッケージプラグインがあります:

そして、これが私が溶接をブートストラップする方法です:

(コメント付きとコメントなしの両方のコードを試しましたが、それでも同じエラーが発生します)。どんな助けでも素晴らしいでしょう、私は本当にすべてのことを試しました。