問題タブ [openwebbeans]
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.
jsf - JAR 内の beans.xml により、java.lang.NoClassDefFoundError: javax.faces.component.behavior.Behavior が発生します。
私は Websphere 8.5 とその内部 Java EE フレームワーク、DI 用の Apache OpenWebBeans とビュー用の Apache MyFaces を使用しています。「@Named」で注釈が付けられたいくつかの Bean を含む JAR もあります (つまり、それらは OpenWebBeans マネージド Bean です)。この JAR は、Web アプリケーションの「WEB-INF/lib」ディレクトリと、アプリケーションのクラスパスにあります。
CDI 実装で Bean を見つけて管理するすべての JAR に「beans.xml」ファイルを配置する必要があると言われました。私はそれを行いました(アプリケーションの「META-INF」フォルダーとJARの同じフォルダーに「beans.xml」ファイルがあります)。Tomcat 7ではすべてが問題なく動作します(JSFページでBeanにアクセスできます。すべてが注入され、問題なく解決されるなど)。アプリケーションの「WEB-INF/lib」内で Apache Open Web Beans 1.2 および MyFaces 2.0 JAR を使用して Tomcat を実行しています。
ここで、問題: Websphere で、同じ構成 (アプリケーションの「WEB-INF/lib」内にフレームワーク JAR がなく、Bean の JAR のみ) で、JSF クラス「javax.faces.component. behavior.Behavior" ページを読み込もうとするたびに (ページは読み込まれません)。奇妙なことに、アプリケーションと JAR からすべての「beans.xml」ファイルを削除すると、すべてが JSF で期待どおりに機能します (もちろん、「beans.xml」が存在しないため、OpenWebBeans Bean のロードと管理を除く)。
この問題をどこでも検索しましたが、手がかりが見つかりません。サーバーの JAR を検索して "WEBSPHERE_INSTALL\plugins\javax.j2ee.jsf.jar" で見つけたので (また、"beans.xml" がなければ、このクラスが見つかり、すべてが正常に動作します) が、アプリケーションのクラスローダーに「beans.xml」ファイルが存在する場合に、この JAR がロードされない理由がわかりません。誰か助けてくれませんか?
java - @PersistenceContext は常に null
Delta Spike ( ) を使用して単体テスト内から CDI (Open Web Beans を使用) を動作させようとしています@RunWith(CdiTestRunner.class)
。依存性注入は正常に機能していますが、私の EntityManagerFactory は常に null です:
persistence.xml
セッション ファクトリを手動で作成できるので、問題がないことはわかっています。
他のすべての注射は正常に機能しています。何が欠けているか知っている人はいますか?
tomcat - openwebbeans 1.5.0より前に開始するomnifaces?
Java 8 / Tomcat 8 / OpenWebBeans 1.5.0 / MyFaces 2.2.8 / DeltaSpike 1.3.0 を使用しています。
openwebbeans-tomcat7 モジュールを使用したいので、次の jar を tomcat/lib に配置しました。
- openwebbeans-web-1.5.0.jar
- openwebbeans-tomcat7-1.5.0.jar
- openwebbeans-spi-1.5.0.jar
- openwebbeans-resource-1.5.0.jar
- openwebbeans-jsf-1.5.0.jar
- openwebbeans-impl-1.5.0.jar
- openwebbeans-el22-1.5.0.jar
- xbean-finder-shaded-4.1.jar
- xbean-asm5-shaded-4.1.jar
- myfaces-impl-2.2.8.jar
- myfaces-api-2.2.8.jar
- geronimo-atinject_1.0_spec-1.0.jar
- geronimo-annotation_1.2_spec-1.0.jar
- geronimo-validation_1.0_spec-1.1.jar
- geronimo-stax-api_1.0_spec-1.0.jar
- geronimo-servlet_3.0_spec-1.0.jar
- geronimo-jcdi_1.1_spec-1.0.jar
- geronimo-interceptor_1.2_spec-1.0.jar
- commons-digester-1.8.jar
- commons-beanutils-1.8.3.jar
- commons-collections-3.2.jar
- commons-logging-1.1.1.jar
- commons-codec-1.3.jar
また、優れた omnifaces ライブラリを使用することも大好きです。したがって、私の webapp には依存関係として omnifaces があり、WEB-INF/lib にあります。
私が使用している 2 つのバージョン、1.8.1 と 2.0 の CDI には問題があります。openwebbeans が開始される前に omnifaces が開始されるように思われるため、CDI が見つかりません。
1.8.1 では、この問題によって例外が発生しますが、このバージョンでは CDI が必須ではないため、ブロックされません。2.0 では、omnifaces 2.0 には要件として CDI があるため、webapp の起動が妨げられます。
1.8.1 では、ログは次のとおりです。
2.0 では、次のようになります。
この問題はオムニフェイスでのみ発生します。OWB は私の webapp で動作します。
開始シーケンスは、コンテナーによっては非常に変動します (たとえば、 http: //javaeesquad.blogspot.fr/2015/03/getting-notified-when-java-ee.html を参照してください)。
OmniFaces はすでに Glassfish の特殊なケースを処理していることがわかります。
public class ApplicationInitializer は ServletContainerInitializer を実装します {
そしてクラス Hacks で:
OWB にそのような特殊なケースがある可能性はありますか? 属性が設定されていることをテストすることは、私にとって十分公平です。
または、オムニフェイスのインスタンス化を延期することは可能ですか?
最後に、次のような方法で CDI 通知を待ちませんか。
jakarta-ee - Maven: openejb でテストを実行中に javax.enterprise.context.ContextNotActiveException
OpenEjb とコンテナが埋め込まれた Junit の助けを借りて、自分の Java-ee プロジェクトの単体テストと統合テストをいくつか作成しました。テストは Eclipse で正常に実行されており、Bean (CDI/EJB) が注入され、正常に動作しています。しかし、maven と Surefire でテストを開始すると、次のエラーが発生します。
何が間違っている可能性がありますか?クラスパスの問題か何かのようですが、openwebbeans-spi と openwebbeans-impl を明示的に追加してもうまくいきませんでした。
テストクラスで次の行を使用します。
そして、私は次のopenejb-junit.propertiesを持っています:
助けてくれてありがとう。
こんにちは、ハルスです。
java - SLF4J ロガーのインジェクション - 1 回だけインジェクト
org.slf4j.Logger
上部で静的として宣言してクラス名を指定するのではなく、それを必要とするクラスにa を挿入したいと考えています。
そうするために、私はそのようなプロデューサーメソッドを作成しました
そして、それを使用@Inject
して注入しますが、それを要求する最初のクラスに対してのみ注入を行うようです。org.slf4j.Logger
注入ポイントを持つ他のすべてのクラスは、NPE になります。
maven - アップグレードされた OpenWebBeans で Tomee Maven プラグインを使用する
Tomee Maven プラグインを使用して、CDI イベント パッシングを使用するアプリを開発しています。私は現在、ジェネリック型パラメーターを持つイベントを発生させることができません。私が知る限り、これは Tomee インスタンスがこれをサポートしていない openwebbeans 1.2.7 を使用したいためです。openwebbeans 1.5.0 以降はこれをサポートしているようですが、プラグインでこのバージョンを使用する方法 (または可能かどうか) がわかりません。
プラグイン構成を使用してライブラリを新しいバージョンに置き換えようとしましたが、これによりさらに例外が発生します (クラス定義がないなど)。
プラグインのバージョンは次のとおりです。