問題タブ [tomee-7]
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.
maven - NoClassDefFoundError: TomEE 起動時の javax/faces/component/UIViewAction
WEB-INF/lib
Web プロジェクト ( 内のすべての JAR ) を Maven Web プロジェクト ( 内のすべての JAR)に移行しようとしていpom.xml
ます。
このプロジェクトでは、次のライブラリを使用します。
- JSF2.2
- プライムフェイス
- ブーツ顔
- オムニフェイス
TomEE で動作します。
TomEE の起動時に次のエラーが表示されます。
NoClassDefFoundError: javax/faces/component/UIViewAction
ただし、JSF2 ライブラリはクラスパス上の TomEE によって提供されます。
これが私のpom.xml
です。
ご協力いただきありがとうございます。
cdi - @WebFilter から @SessionScoped Bean にアクセスする方法
ログインしていないときにユーザーをリダイレクトするAuthenticationFilterに取り組んでいます。私はTomEE 7.0.0-M2を使用しているため、Java-EE7をサポートしています。
AuthenticationFilter
LoginBean
問題は、注入された LoginBean が login.xhtml のインスタンスではないことです。そのため、ユーザーが正常にログインしたかどうかを確認できません。
LoginBean はセッション属性にありませんが、ここで正しい loginBean を見つけましたが、アクセス方法がわかりません。しかし、Bean は CDI にあるように見えますが、WebFilter からどのようにアクセスできますか?
concurrency - MDB 同時インスタンスが起動しない
特定のタスク (マージ) を実行するには 40 のスレッドが必要で、別のタスク (永続化) を実行するには約 20 のスレッドが必要であるという要件があります。マージには、永続化の約 5 倍の時間がかかります。この同時実行性を実現するために、メッセージ駆動型 Bean を使用しています。
次の構成で 1 つの MDB RecordMerger を作成しました
そして私は永続化のために同様のことをしました
tomee.xml の私の構成は次のとおりです。
レコード結合キューの生成は非常に高速であるため、レコード結合キューには常に新しい要素があります。レコード結合キューは、データをレコード永続キューに入れます。
私が直面している問題は、レコード マージャーが 40 スレッドを使用するように構成されている場合、tomee サーバーがレコード永続性 MDB をインスタンス化せず、レコードがそのキューに積み上げられることです。レコード マージャーの maxSession プロパティを 20 に減らすと、両方の MDB がインスタンス化され始めます。
両方の MDB が実行されていて、レコード マージに 40 のスレッドがあることを確認するために何をする必要があるか教えてください。
jakarta-ee - 動的にロードされるクラスへの Java EE リソースの注入
Java EE アプリケーションによって実行時に生成/ロードされるクラスを次に示します ( @Default Bar
Bean は同じアプリケーションによって提供されます)。
インスタンス化する方法は次のとおりです。
JBoss/WildFly では、EntityManager、EJB、UserTransaction などを含むすべてのフィールドが正しく注入されます。
TomEE と GlassFish では、Java EE リソースは無視され、bar
フィールドのみが注入されます。
- これは TomEE と GlassFish のバグと見なすべきですか、それともアプリケーション サーバーで異なる方法で実装されている JavaEE/CDI 仕様のホワイト スポットにすぎないのでしょうか? GlassFish と WildFly の両方が同じ CDI 実装、つまりJBoss Weldを使用しているため、純粋な CDI の問題ではないことは間違いありません。
- TomEE と GlassFish で上記を達成するにはどうすればよいですか? 移植可能なソリューションが望ましいですが、サーバーに依存するコードの一部は問題ありません (この種の問題では避けられないのではないかと思います)。
全体的な目的は、すべての範囲の CDI インジェクション (単純なものから、など@Inject
の Java EE リソースまで) を動的コードに提供することです。私の最初の試みは、注釈付きフィールド + 動的ビジネス ロジックを組み込むクラスをオンザフライで生成することでした (はい、WildFly でのみ機能しました)。一般的に言えば、次のような一連の動的注入定義があります。@PersistenceContext
@Resource
@EJB
ここで、、、などAnnotation
のいずれかであり、これが CDI マネージド Bean 内にある場合に注入されたであろうインスタンスを取得したいと考えています。したがって、インジェクション メタデータを受け取り、対応するインスタンスを返す仮説的なメソッドは許容されます。Inject
PersistenceContext
Resource
EJB
java - JSF 2.2 ConfigurationException を伴う TomEE pluME
プロジェクトをデプロイするために tomEE を起動したとき。エラーが発生します。
JSF 2.2、apache-tomee-7.0.0-M3-plume、および Primefaces の最新バージョンを使用しています。
検索しましたが、解決策が見つかりませんでした。
TomEE エラー
Web.xml
eclipse - Eclipse で Tomcat 8.5.x と TomEE 7.x を使用するには?
Eclipse でTomcat 8.5.xサーバー バージョンをセットアップする必要があります。Eclipse GUI を使用してサーバーを作成しようとすると、Eclipse Luna で最新バージョンの「Apache Tomcat v8.0」が選択されます。それを選択して Tomcat 8.5.x サーバーを参照すると、次のブロック エラー メッセージが表示されます。
このディレクトリにインストールされている Apache Tomcat は、バージョン 8.5.0 です。Tomcat 8.0 のインストールが想定されています。
内部的に Tomcat 8.5 に基づいている TomEE 7.x を試行すると、同じエラーが表示されます。
Eclipse Neonでは、選択肢としての最新バージョンは「Apache Tomcat v9.0」であり、同じエラーが発生します。「 Apache Tomcat v8.5」オプションすらありません。
Eclipse で Tomcat 8.5と TomEE 7.xを使用する方法はありますか? どのように?