問題タブ [openejb]
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 - OpenEJB ローカル クライアント インジェクションが失敗する
ここで示した例を非常に厳密に反映していることに注意してください。
実際、この時点で永続化ユニットを使用してテストしていないため、私の状況はやや単純です。私のテスト プロジェクトは、単純な MDB とセッション Bean を提供します。MDB とセッション Bean の両方が通常どおりロードされ、インジェクションなしで (制約された方法で) 正常にテストできます。
@LocalClient
単体テストの注釈を使用して提案されたインジェクションは、既知のエラーで失敗しています:
javax.naming.NamingException: Unable to find injection meta-data for [your-class]. Ensure that class was annotated with @org.apache.openejb.api.LocalClient and was successfully discovered and deployed. See http://openejb.apache.org/3.0/local-client-injection.html
このページにアクセスすると、テスト ケース コンテキストのセットアップに追加のプロパティを追加する必要がある可能性があることが通知されます。したがって、次のようになります。
しかし、それはまだ失敗しています。私はこのイディオムがとても好きで、自分のプロジェクトでうまく使えたらとてもワクワクします。
その他の注意事項:
- OpenEJB にクラスパスをスキャンするように指示するために Apache が提案するように、「空の」ejb-jar.xml (src/main/resources 内) と application-client.xml (src/test/resources 内) を提供しています [UPDATE: as結局のところ、私はこれを間違っていました。私のために働いた提案については、以下の私の回答を参照してください。]
- で注釈が付けられたテスト ケース
@LocalClient
は、OpenEJB エンジンによって実際に取得され、適切に処理されていると識別されません (たとえば、私の MDB はそうです)。
ヘルプやガイダンスをお寄せいただきありがとうございます。
java - OpenEJB スタンドアロン -- JMS 以外の MDB をデプロイできない
現在テストでうまく機能しているセットアップで「ライブ」に行きたいだけです。スタンドアロンの OpenEJB サーバーをダウンロードし、EJB を/apps
ディレクトリに配置しました。
ログの出力は、スタンドアロン サーバーが非 JMS アダプターをサポートしていない可能性があることを示しています。
RA 自体を含む他のモジュールが正常に起動しているように見えることに注意してください。唯一の問題は、JMS 以外のメッセージのコンシューマの作成にあるようです。
他に何を調べたり、構成したりすることができますか? ありがとう!
eclipse - OpenEJB が Eclipse クラスパスを認識しない
OpenEJB Eclipse プラグインをインストールしましたが、openEJB サーバーがプロジェクトのクラスパスを認識していないようです。すべての依存関係 (サードパーティの jar) を OpenEJB/lib ディレクトリにコピーした場合にのみ正常に動作します。特にEclipse構成を回避する他の方法はありますか?? ありがとう
ejb - OpenEJB の ModuleID とは
EJB jar を OpenEJB リモート モードにデプロイしますが、クライアントが EJB [正しくデプロイされた EJB] をルックアップできません。プロジェクトをデバッグした後、openejb.client.moduleid に値が必要であることがわかりました。しかし、moduleidとは何ですか?このプロパティを設定するにはどうすればよいですか?
tomcat - Tomcat-OpenEJBにEJB2.0、JAR、およびEARをデプロイする方法は?
Tomcat-OpenEJBにEJB、JAR、またはEARをデプロイする方法はありますか?折りたたまれたEARコンセプトまたはJEE6を使用したくない場合。
返信してください..!!
前もって感謝します。
openejb - openEJB に MappedName を無視させ、代わりに openejb.jndiname.format を使用させる方法
私はEJBを持っています:
および以下を使用して構成された openEJB:
組み込みの openEJB が開始されると、openejb.jndiname.format オプションが無視され、正しくない JNDI 名が作成されます。
openejb.jndiname.format オプションを使用して次のような JNDI 名を作成するように構成するにはどうすればよいですか。
?
openEJB でそれができない場合は、回避策を教えていただければ幸いです。
log4j - OpenEJBクライアントのログを設定する方法は?
1つのOpenEJBサーバーコンテナに接続するOpenEJBクライアントを使用しています。OpenEJBサーバーは、フェイルオーバー操作のためにCorosyncとPacemakerによって管理されます。OpenEJBインスタンスに障害が発生すると(ネットワーク、ハードウェア、JVM、またはその他の問題が原因で)、Corosync+Pacemakerは別のマシンで別のOpenEJBサーバーインスタンスを起動します。プロセスは比較的高速であるため、これは私たちのユースケースでは問題になりません。
OpenEJBはネイティブのフェイルオーバーメカニズムを提供しますが、それでも独自のメカニズムで管理することを選択しました。これにより、クライアントをより適切に制御できるようになります。冗長すぎるクライアントロギングを除いて、すべてが期待どおりに機能しています。次のような接続障害メッセージを無効にするために、オフにするか微調整します。
22/08/2011 14:06:23 org.apache.openejb.client.StickyConnectionStrategy connect AVISO:フェイルオーバー:サーバーに接続できません:ejbd://192.168.1.5:4201例外:サーバーに接続できません'ejbd: //192.168.1.5:4201'。サーバーが起動していること、および指定されたserverURLが正しいことを確認してください。次に試行します。
OpenEJBクライアントでlog4jのログレベルを下げようとしましたが、失敗しました。log4jのドキュメントとこの投稿によると、目的のレベルを「エラー」または「致命的」に設定する必要があります。問題は、カテゴリ名は何ですか?
私はすでに試しました:
- p.put( "log4j.category.OpenEJB.client"、 "エラー");
- p.put( "log4j.category.OpenEJB"、 "エラー");
しかし、何も変わっていません。では、これらのWARNメッセージをオフにするためにどのプロパティを使用する必要がありますか?
openjpa - EE構成でRuntimeUnenhancedClassesを強制する方法はありますか
この恐ろしいメッセージのログを (もう一度!) チェックするのを忘れたため、壊れていない新しいコードのデバッグに 30 分を費やしました。
OpenEJB 3.2 スナップショット ビルド、Java 1.6.0_25、および Eclipse Helios 内で OpenJPA 2.1.0 を実行しています。私のエンティティは、ant PCEnhancerTask を使用して強化されています。
私のMETA-INF/openjpa.xmlには含まれています
この EE 構成では、SE 構成の場合と同様に、OpenJPA に RuntimeUnenhancedClasses オプションを強制させることはできますか?
「本当の」問題は、Eclipse svn の更新が JPA エンティティ ソースに影響を与えることがあり、拡張クラスを上書きするビルドが原因であると思われ ます。
奇妙な方法で失敗する IDE から単体テストを頻繁に実行することに苛立ちを覚えます。エンハンサーを実行するだけでよいのに、コードを掘り下げて問題を探します。
unit-testing - ユニットテストのために組み込みモードでOpenEJBを使用することについての混乱
私は、EJB3コンポーネントの単体テストのために、組み込みモードでOpenEJBを使用する可能性を探求し始めました。最初は以下のようなエラーが出ました
openejb.homeプロパティはシステムプロパティとして設定され、OpenEJBインストールディレクトリを指します。
HelloBeanTest #bootContainer()はsetUpメソッドであり、JNDIルックアップで失敗します。下に示された。
このような問題に苦労した後、私はOpenEJBを非埋め込みモードで試し始め、そのインストールディレクトリからコンテナを起動し、コンポーネントをejb.jarとしてデプロイしました。デプロイメントは成功し、スタンドアロンのJavaクライアントの作成を開始しました。スタンドアロンのJavaクライアントはまだ完成していませんが、その間に埋め込みモードでのテストに戻りました。
驚いたことに、テストは突然合格し始めました。コンポーネントにいくつかの機能を追加し、それらをテストしました。すべてがうまくいきました。以下は、その実行の出力です。
それが再び壊れるまで、私は喜んでコーディングとテストをしていました。/appsディレクトリからejb.jarを削除したことが原因のようです。したがって、OpenEJBはインストールディレクトリからJNDIルックアップを実行しているように見えますが、組み込みモードで実行している場合は、現在のディレクトリを使用して実際の実装を検索します。私はこの結論を出しました。apps/dirにデプロイされたejb.jarには、ローカルバージョンが持つすべてのメソッドが含まれていないためです。(javapでダブルチェックしました。)クラスのシグネチャだけが同じです。
この非常に長い紹介の後、それは質問の時間です。
- 誰かがこの行動について何か説明をすることができますか?
- テストの前にapps/dirにEJBをパッケージ化してデプロイするのは簡単な作業ですが、それでも正しい実装をテストしていることを確認できますか?
- これはすべて、OpenEJBインストールディレクトリを指すopenejb.homeプロパティと関係がありますか?
要約すると、OpenEJBのバージョンはApache OpenEJB 3.1.4ビルド:20101112-03:32であり、これはログ出力にも表示されます。
前もって感謝します。