問題タブ [java-ee-6]
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-2 - Maven2 マルチモジュール ejb 3.1 プロジェクト - デプロイ エラー
問題は、プロジェクトを Glassfish にデプロイするときに次のエラーが発生することです。
しかし、プロジェクト構造がMaven2でどのように見えるかから始めましょう...
次のシナリオを作成しました。
MultiModuleJavaEEProject - 親モジュール
-> モデル ---> jar としてパッケージ化
-> ejb1 ----> ebj としてパッケージ化
-> ejb2 ----> ebj としてパッケージ化
-> web ----> war としてパッケージ化
したがって、モデル、ejb1、ejb2、および web は、親 MultiModuleJavaEEProject の子/モジュールです。
_ejb1 はモデルによって異なります。
_ejb2 は ejb1 に依存します。
_web は ejb2 に依存します。
ポンポンは次のようになります。
_親:
_モデル:
_ejb1:
_ejb2:
_ウェブ:
モデルは単純な Pojo です。
また、ejb1 には STATELESS ejb が 1 つだけ含まれています。
同様に、ejb2 はステートレスな ejb にすぎません。
また、Web モジュールにはサーブレットのみが含まれています。
また、Web モジュールの web.xml ファイルは次のようになります。
したがって、それ以上のファイルは私が設定しません。EJB 3.1 を使用しているため、どの ejb ファイルにも ejb-jar.xml はありません。したがって、 ejb-jar.xml 記述子はオプションだと思います。私はこれですよね?
しかし問題は、すでに述べたエラーです:
誰でも助けることができますか?
java - サーブレットで EJB 3.1 DI を使用するには? (Web アプリケーションから @EJB でセッション Bean を注入できませんでした)
Web アプリケーション (gwt、jpa) を別の 2 つのアプリケーション (ejb/jpa のビジネス ログインと gwt の Web クライアント) にマージしようとしています。現在、Web アプリケーション (単純なサーブレット) から Bean を注入できません
私はグラスフィッシュv3を使用しています。モジュール limbo(ejb jar) は、モジュール lust (war) に依存しています。
Lust を limbo のコンパイラ出力で使用すると、すべてが完璧に機能します (Web アプリケーションの ejb と が 1 つのアプリケーションとして一緒にデプロイされている場合)。
コンテナの設定を台無しにしましたか?
これが私の手順です:
ejb コンテナーにデプロイされた limbo.jar (ejb-jar) がいくつかあります。ejb-jar.xml は使用せず、注釈のみを使用します。
lust.war の Web アプリケーションから PersistentService セッション Bean (limbo.jar に含まれる) を使用しようとするよりも (limbo.jar と lust.war は耳にありません)
web.xm
servelt のロード中に i ge 404 エラー (要求されたリソース () が利用できません。)
ログのエラー:
グローバル
javax.enterprise.system.tools.deployment.org.glassfish.deployment.common
ejb jar は、この情報ログでデプロイされました:
他のアプリケーションからのインジェクションの場合、追加の構成を追加する必要がありますか?
いくつかのアイデア?
@Remoteの場合
ログ:
情報デプロイ ログ
リモート ビジネス ロジック呼び出しを使用している場合、ejb jar を WEB=INF/lib に含める必要がありますか? リモートの場合、DI が機能しないのはなぜですか?
そして、limboモジュールからのコンパイル出力を含めて提供すると、うまく機能します:
別の Web アプリケーションの PersistentServiceRemote ( PersistentServiceBean のリモート インターフェース) を検索できなかったのはなぜですか?
グラスフィッシュのサンプルコードで動作するはずです(.
何か案は?
Ok。パスカルが言ったように。リモート インターフェイスを webapp にパッケージ化する必要があります。別のアプリケーションでローカル インターフェイス インジェクションを使用できます。ローカル インターフェイスを使用する必要がある場合は、アプリケーションに ejb jar を含める必要があります。現在の設計 - webapp へのパッケージ リモート インターフェイス
java - @Inject in Weld (JSR-299 RI) による依存性注入。対応する @Produces はどのように見つけられますか?
スタンドアロン アプリケーションで使用する目的で、JSR-299 リファレンス実装「Weld」を試してみました。ドキュメントを見て、その魔法に驚嘆しました。
私の質問は、@Inject される特定のオブジェクトのプロデューサーがどのように見つかるかです。
Java コンパイラーは、クラスローダーが簡単に見つけられるアノテーションのヒントを生成するか、すべてのクラスをロードして完全なクラスパスをトラバースして、それらが何を行うかを確認する必要がありますが、これは私にとって非常に非効率的に聞こえるか、まったく異なるアプローチです。
トリックは何ですか?
java - 例外をログに記録するコストと比較して、例外を作成するコスト
java例外を発生させる(またはThrowableのネイティブfillInStackTrace()を呼び出す)コストと、log4jでログに記録するコスト(ファイル内、本番ハードドライブを使用)にかかるコストを比較してみてください...
例外が発生したときに、それらが重要である必要がない場合でも、それらを頻繁にログに記録する価値があるかどうかを自問してみてください...(私は高負荷環境で働いています)
ありがとう
java - (Enterprise GlassFish v3 build 11) 通信リンクの問題 (MySQL DB)
アプリケーションが DB との接続を確立しようとすると、通信リンク障害が発生します。
正確にはこの文字列で:
ここで、connは次のように定義されます。
このアプリでは、デフォルトのパラメーターで接続プールを設定しました。現在、(アプリ) は JPA クエリと直接 JDBC クエリの両方を使用しています。接続プールを再作成しても何も返されず、接続プールの ping で次のメッセージが表示されました。
接続プールをフラッシュすると、次のようになりました。
ただし、端末からデータベースに接続できます。さらに、同じ接続プール設定を使用して、ローカルマシンで同じアプリを動作させています。
何が起こっているのか、または問題を解決する方法について考えている人はいますか?
jakarta-ee - Java EEでモデル化する方法は?
たとえば、エンタープライズアプリケーションにJavaEEスタックを使用することにしました。
さて、ドメインモデリング(またはMVCのMを設計するため)の場合、どのAPIを安全に想定して使用でき、抽象化レイヤーを介して、どのAPIを使用しないようにする必要がありますか?
例えば、
先に進んで、Hibernate / JPA APIの呼び出しでモデルを散らかす必要がありますか?または、抽象化を構築する必要があります...これらの2つの特定の永続性APIに対するハードコーディングを回避するために、独自の永続性レイヤーを作成しますか?私がこれを尋ねる理由:数年前、Hibernateに取って代わられたこのKodoAPIがありました。永続層を設計し、この層に対してモデルの残りの部分をコーディングした場合(特定のベンダーAPIの呼び出しでモデルを散らかす代わりに)、KodoからHibernate、xyzに(比較的)簡単に切り替えることができます。
ドメインモデルで永続性ベンダーが提供する*QLを積極的に使用することをお勧めしますか?私は、HQLのような言語を多用することから生じる現実の問題(パフォーマンス、スケーラビリティ、移植性など)を認識していません。私がこれを尋ねる理由: SQLよりも移植性の高いクエリ言語を介して同じことが達成できる場合は、カスタムコードを書くことをできるだけ避けたいと思います。
申し訳ありませんが、私はこの分野の完全な初心者です。このトピックに関する詳細情報はどこにありますか?
asynchronous - EJB3 インスタンス間の通信 (Java EE ビーン間通信) は可能ですか?
EJB3 Bean で構成される Java EE 6 アプリケーションの一部を設計しています。要件の一部は、複数の並列 (たとえば、数百) の長時間実行 (数日にわたる) データベース ハントです。個々のハントには、異なる検索パラメーター (開始時刻、終了時刻、クエリ フィルター) があります。パラメータは時間の経過とともに変更される場合があります。
現在、以下のことを考えています。
SearchController
(ステートレス セッション Bean) は、一連の検索パラメータを作成し、SearchListener
JMS 経由で送信します。SearchListener
(メッセージ駆動型 Bean) は検索パラメーターを受け取りSearchWorker
、パラメーターを使用して をインスタンス化しますSearchWorker
(SLSB) データベースを繰り返し検索します。何かが見つかると、結果が JMS 経由で送信され、検索が続行されます。指定された「終了時間」に達すると、終了します
私が今疑問に思っていること:
- EJB3 インスタンスが何日も実行されていることに問題はありますか? (それ以外は、コンテナの再起動に対処できる必要があります...)
SearchWorker
現在実行中の の EJB インスタンスの数と数を知るにはどうすればよいですか?- それらと個別に通信することは可能ですか (System V シグナルを UNIX プロセスに送信するのと同様)、たとえば、新しいパラメーターを送信したり、インスタンスを終了したりすることはできますか?
ejb-3.0 - EJB3 + JEE6: 永続タイマーとは?
私はちょうど新しい EJB3 TimerService を (Java EE 6 の一部として) 使用しようとしていますが、いつものように、JavaDoc の簡潔さに感銘を受けています :)
オブジェクトのpersistent
プロパティの効果を知っていますか?TimerConfig
JavaDoc TimerConfigは次のように述べています。persistentプロパティは、対応するタイマーが作成された JVM にまたがる有効期間を持つかどうかを決定します。これはオプションで、デフォルトは true です。
servlets - サーブレットはリモートEJB3セッションBeanから空のオブジェクトを受け取ります
これは初心者のエラーだと確信しています...
そのため、エンティティ、ファサード(永続層を実装)、およびリモートインターフェイス(ファサードを介してエンティティへのアクセスを提供)を備えたステートレスセッションBean(EJB3)を備えたJavaEE6アプリケーションがあります。
これは正常に機能しています。SLSBを介して、エンティティを取得および操作できます。
今、私はこれをWebアプリケーションから実行しようとしています(同じGlassfishにデプロイされ、Java EEアプリからのエンティティ+インターフェイス定義が別のjarとしてインポートされます)。挿入されたSLSBのインスタンスを受け取るサーブレットがあります。エンティティを取得するために取得すると、次のようになります(ログで確認できます)。
- リモートSLSBがインスタンス化され、そのメソッドが呼び出されます
- SLSBはファサードをインスタンス化し、「get」メソッドを呼び出します
- ファサードはDBからエンティティのインスタンスを取得し、それを返します
- SLSBは、エンティティのインスタンスを呼び出し元に返します
- (ここまではすべて良いです)
- サーブレットを呼び出すと、エンティティの空のインスタンスが受信されます。
何が問題になっていますか?これはうまくいくはずですよね?
MyServlet:
他のコードを見たい場合はお知らせください。投稿を更新します。
java - facelets を使用して動的バッキング Bean を JSF 2.0 ページに渡すにはどうすればよいですか?
私はJSF 2.0を使用してWebアプリを作成しています(純粋にjee6、スプリング/シームなどなし)。単一の xhtml ページが必要ですが、適切なバッキング Bean/エンティティをそれに渡します。たとえば、ログインしているユーザー以外のユーザーを編集できるようにしたいのですが、ログインしているユーザーの情報を表示するユーザー編集ページがあり (セッションによって追跡されています)、代わりに渡したいと思いますリストから選択されたユーザーとそのユーザーの情報を編集します。セッションに保存されているユーザーを切り替えたり、別の xhtml ページを作成したりしません (DRY に違反します)。
これを達成するために私が見ることができる「最良の」方法は、ログインしたユーザーの編集ページを表示するために使用しているのとまったく同じ xhtml ページを再利用することですが、何らかの方法で別のエンティティを渡すだけです。おそらく、ページにリダイレクトする前にバッキング Bean でセッターを呼び出すか (これが可能な場合)、または DRY に違反しない他のソリューションを呼び出します。おそらく私はこれをすべて間違って設計しました.JSFページにエンティティを渡す方法はありますか?
ありがとう。