問題タブ [aries]
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 - Ariesのマネージドサービスファクトリーもプロパティを管理していますか?
Servicemix4.3.1でApacheAries0.2を使用しており、cm:managed-service-factoryを作成しています。.cfgファイルを使用したサービスの作成は正常に機能しますが( #ARIES-584を除く)、.cfgファイルのプロパティはサービスオブジェクトに挿入されません。それらはConfigAdminで適切に設定され、Beanセッターメソッドだけが構成ファイルの値に対して呼び出されることはありません。
cm:managed-propertiesなど、managed-service-factory内にネストされたものを使用する必要があると考えていましたが、別のpidが必要になるため、正しくないようです。
プロパティタグを入れないと、値が設定されません。プロパティタグを使用すると、デフォルト値のみが設定されますが、実際の構成ファイル値は設定されません。
マネージドサービスファクトリ内のマネージドプロパティを表示しないblueprint-sample.xmlを除いて、AriesCMサブプロジェクトの使用に関するドキュメントが見つかりません。私は実際にServicemixを使おうとしていますが、ドキュメントの欠落、機能の破損または欠落、またはコア機能に影響を与えるバグが隅々にあります。
Springとgeminiの両方のドキュメントは、マネージドサービスファクトリの実装がマネージドプロパティとしても機能する必要があることを示しています。
foo.xml:
IFoo.java
Foo.java
my.msf-1.cfg
my.msf-2.cfg
System.out
config:proplist
osgi - エンタープライズOSGiフレームワーク:成熟度の比較ApacheAriesとEclipseGemini
質問:今日の時点で、2つのEnterprise OSGiフレームワークのどちらがより成熟していますか:ApacheAriesまたはEclipseGemini?
私はAriesとGeminiEnterpriseOSGiの機能についていくつかの基礎研究を行いました。私も同様の質問を経験しました:GeminiとApacheAriesの青写真コンテナ。
以下の私の要件と調査結果。あなたの追加の入力を高く評価します。
ブループリントコンテナ:AriesとGeminiはどちらも、ブループリント仕様に対する実装の点で同等に成熟しているように見えます。
Web開発(Spring PortletMVCを使用してJSR286に対して開発する予定):GeminiWebはSpringDM
にルーツがあります(したがって、Geminiフレームワークに対する私の最初の好み)が、AriesはSpringPortletMVCベースのWebと同等に機能する必要があると思いますアプリケーション。JPA:これが私の最大の関心事です。私は当初、Geminiに傾倒していましたが(Spring DMにルーツがあり、アクティブなSpringSourceコミュニティからのサポートがあるため)、GeminiJPAの成熟度はAriesJPAに比べてかなり低いと感じています。理由:
- Gemini JPAは、JPAプロバイダーとしてのEclipseLinkとの統合のみをサポートします。Hibernateを使用したいと思います。AriesJPAはHibernateをサポートしています。
- Gemini JPAの制限について:特に制限#5:JTAトランザクションのサポートの欠如。Aries JPAはJTAをサポートしているよう です...しかし、サポートのレベルの詳細を知ることができませんでした。
JNDI:新しいWebアプリケーションは、JBossアプリケーションサーバー内でホストされているサービス層から既存のセッションEJBを呼び出す必要があります。したがって、JNDIサポートは、クライアント層のOSGi対応Webアプリケーションにとって非常に重要です。
ジェミニネーミングはまだリリースされていないようですが、アリエスはすでにこの分野である程度の能力を持っています。
java - Blueprint の代わりに Apache Aries Managed JPA を iPOJO で使用できますか?
はいの場合、誰かに例がありますか?
jpa - Apache Aries Managed JPAでサポートされているJPAプロバイダーはどれですか?
明らかに、OpenJPA。EclipseLinkとHibernateについても言及しましたが、機能に大きな違いはありますか?
database - データベース管理リカバリで、Aries が元に戻す前にやり直しを実行するのはなぜですか?
Aries アルゴリズムは、分析フェーズ後に元に戻すトランザクションを既に知っている場合、元に戻す前にやり直しを適用するのはなぜですか?
ディスクにフラッシュされたデータがクラッシュ時にトランザクションを元に戻すことと同じではない可能性があることを考えると、Lsn番号と一貫性を維持することに関係があることを私は知っています(ダーティのため)ページ)、しかし、この質問に対する「正式な」回答は見つかりません(少なくとも私が理解できるものは1つです)。
java - OSGiのOpenJPAがMySQLJDBCコネクタバンドルを見つけられない
私は現在、Felix(v4.0.3)でOSGiプロジェクトに取り組んでいます。JPAを使用する必要があるため、ApacheAriesJPAバンドルをインストールしました。OpenJPAもインストールしましたが、MySQLConnectorBundleを使用してMySQLデータベースに接続するために必要です。残念ながら、それは機能しません。OpenJPAはMySQL JDBCクラスを見つけることができず、何が壊れているのか理解できないと言っています。おそらく私は何か間違ったことをしています。以下に、persistence.xmlファイルと実際に発生する例外とともに、正確にインストールしたものについて説明します。
これが私がインストールしたApacheAriesバンドルのリストです:
- org.apache.aries.jpa.api-0.3.jar
- org.apache.aries.jpa.container.context-0.3.jar
- org.apache.aries.jpa.container-0.3.jar
- org.apache.aries.util-0.4.jar
次に、それらのApacheAriesJPAバンドルの依存関係をインストールしました。Springsourceからダウンロードしました:
- com.springsource.javax.transaction-1.1.0.jar
- com.springsource.org.apache.log4j-1.2.16.jar
- com.springsource.slf4j.api-1.6.1.jar
- com.springsource.slf4j.log4j-1.6.1.jar
- javax.persistence_2.0.4.v201112161009.jar(これは重要な場合に備えてEclipseLinkからのものです)
OpenJPAとそのすべての依存関係もインストールしました。apache-openjpa-2.2.0ダウンロードフォルダーのlibフォルダーにバンドル2から5(commons- *)が見つかりました。libフォルダーにあるjarがOSGiバンドルではなかったため、ここでSerpをダウンロードしました。最後に、Springsourceで最後の2つのバンドル(#7と#8)を見つけました:
- openjpa-2.2.0.jar
- commons-collections-3.2.1.jar
- commons-dbcp-1.4.jar
- commons-lang-2.4.jar
- commons-pool-1.5.4.jar
- org.apache.servicemix.bundles.serp-1.13.1_4.jar
- com.springsource.javax.servlet-2.5.0.jar
- com.springsource.org.objectweb.asm-3.2.0.jar
最終的にOpenJPAをインストールした後も、MySQL JDBC Driverバンドルが必要でした。これは、Springsourceリポジトリーとそのcommons-logging依存関係からも取得しました。
- com.springsource.com.mysql.jdbc-5.1.6.jar
- com.springsource.org.apache.commons.logging-1.1.1.jar
この時点で、インストールされているバンドルのリストはかなり大きくなっています。OpenJPAをインストールしたと言いましたが、それはAriesで他のプロバイダーを使用する方法がわからなかったためです。私は当初EclipseLinkを使用したかったのですが、どうやらApache Ariesはそれをプロバイダーとして検出しません。このブログによると、AriesがEclipseLinkに気付くために、独自のアクティベーターを含むさらに別のバンドルを作成する必要があります。試してみましたが、うまくいかなかったので、代わりにOpenJPAを使用することにしました。
だから今私は2つの質問があります:
- OpenJPAにMySQLバンドルを通知させるにはどうすればよいですか?
または代わりに:
- Apache AriesにEclipseLinkを通知させるにはどうすればよいですか?
これが私が使用するpersistence.xmlファイルです:
このエラーは、DAOクラスの次のコンストラクターが実行されたときに発生します。
OpenJPAがMySQLを見つけられない場合に発生するエラーは次のとおりです。もちろん、URLとユーザー名/パスワードの両方が機能することを言及する価値があります:
私はこの時点まで例外をカットしました(それは継続し続けます):
PS:スパム制限のため、Aries、OpenJPA、またはEclipseLinkへのリンクを投稿できませんでした。申し訳ありません:/
dependency-injection - Websphere 8.5 で aries ブループリントを介して定義されたキャメル ルートを含む osgi バンドルをデプロイできない
apache camel route (Java DSL) を持つ 1 つの osgi バンドルを含む .eba ファイル (エンタープライズ バンドル アーカイブ) を作成しました。camel コンテキストの定義は、ブループリント xml ファイルを介して行われます。.eba ファイルを Websphere Application Server 8.5 にデプロイしようとすると、次の例外が発生しました。
org.apache.aries.application.modelling.ModellerException: CWSAL0126E: バンドル ib-base_0.0.1.SNAPSHOT のモデリング中に例外が発生しました: org.apache.aries.application.modelling.ModellerException: org.osgi.service.blueprint.container. ComponentDefinitionException: サポートされていないノード名前空間: http://camel.apache.org/schema/blueprint .
私のブループリントxmlファイルは次のとおりです。
これが Websphere で失敗する理由はよくわかりません。同じ .eba ファイルが Karaf 3.0.0-SNAPSHOT に正常に展開されます。(このバージョンの Karaf は、Aries ブループリント バージョン 1.0.0 を使用します)。
同じものが使用されているか、Aries Blueprint 1.0.0 の分岐バージョンが Websphere 8.5 で使用されていると思います。
OSGi 仕様に従って、camel: などのカスタム名前空間のブループリント拡張ハンドラーは、キー (osgi.service.blueprint.namespace) の下の OSGi サービス レジストリから取得されます。value 要素は、実際の名前空間 uri を示します。
例えば:
IBM がこの仕様を尊重しない理由はよくわかりません。
熟考すべきもう 1 つの興味深い点は、Websphere Application Developer Tool を使用して blueprint .xml ファイルを作成しようとしたときに、以下に示すように 4 つの拡張子しか表示されないという事実です。
- IBM ブループリント拡張機能
- JPA ブループリントのサポート
- ブループリント トランザクションのサポート
- ブループリント リソース リファレンスのサポート
camel-core バンドルと camel-blueprint バンドルの両方が websphere の内部リポジトリにデプロイされていることを確認しました。
.eba ファイルをアセットとしてデプロイしようとしました。
私が何かを逃したかどうかはわかりません。誰かが私を正しい方向に向けることができれば幸いです。
よろしくお願いします、
スリラマン。
java - OSGI JNDI は非 OSGI コードからの JNDI 呼び出しとの共存を許可しますか?
OSGI Enterprise Release 5 仕様の第 126 章では、互換性について言及しています。
「Java SE および Java EE クライアントで使用される従来の JNDI プログラミング モデルをサポートします。」
OSGI 非認識コードの使用:
「OSGi を認識しないクライアントと JNDI コンテキスト プロバイダーは、静的メソッドを使用して JRE JNDI 実装に接続します。InitialContext クラスはプロバイダーからコンテキストへのアクセスを提供し、プロバイダーは静的な NamingManager メソッドを使用してオブジェクト変換を行い、URL コンテキストを検索します。これは、従来のモデルは OSGi を認識していないため、この OSGi 認識の欠如の結果が管理されている場合にのみ、確実に使用できます。」
しかし、このテキストが OSGI バンドル内で実行される「レガシー」コードにのみ適用されるのか、それとも OSGI コンテナがアプリケーションに埋め込まれているシナリオなどの OSGI コンテナ外のコードにも適用されるのかは、私には明らかではありません。
埋め込みシナリオでは、OSGI コンテナーの外側と内側の両方に JNDI 呼び出しを実行するアプリケーション コードが存在する場合があり、それらは同じ JVM で実行されるため、JNDI 実装を共有します。
質問:組み込み OSGI コンテナーで実行されている OSGI JNDI 実装は、コンテナー外の OSGI 非認識コードが通常のように JNDI 呼び出しを実行できるようにする必要がありますか?それとも、「OSGI 認識」への移植が必要ですか?
Apache Karaf 2.3.0 (Apache Aries JNDI 1.0.0 を使用) でこれを自分で試してみると、Apache Aries では JNDI クライアント呼び出しが OSGI バンドルから発信される必要があるため、うまくいかないようです。
部分的なスタック トレース:
質問:これは正しい動作ですか、それとも、この制限に違反している、参照できる仕様のセクションはありますか?
database - ARIES回復法で歴史を繰り返すメリットとは?
ARIES アルゴリズムでは、再実行パスでクラッシュする前にすべての履歴を繰り返す必要があるのはなぜですか? 分析パス中にコミットされたトランザクション番号を取得してから、コミットされたトランザクション ログ レコードをやり直すことはできますか? このメソッドは、やり直しと元に戻す必要があるレコードの数を減らします。
algorithm - ARIES KVL、常に 1st_page に挿入する理由
私はあなたの論文 ARIES/KVL[1] を学んでいます。論文から、B+tree 構造は次のようになります。
SMO の完了後に検索を再開するため、検索疑似コードから、Fetch、Insert、および Delete は進行中の SMO を表示しません。Insert プロシージャに入ると、次の条件が保持されます。
- x ラッチ 1st_leaf、
- 1st_leaf を含む SMO は進行中です。
- 1st_leaf の最上位キー < 分離キー
- 2nd_leaf >= 分離キーのキー
- 1st_leaf のキー < 2nd_leaf のキー
- 挿入されるキー < 分離されたキー。
たとえば、上の図の場合、c0 にキーを挿入すると、
- c0 は x ラッチされます
- c0 が関与する SMO は進行していません。
- c0 < k0 の最上位キー
- c1 >= k0 のキー
- c0 のキー < c1 のキー
- 挿入されるキー < k0。
次のコードは [1] から抜粋したもので、質問の関係のない部分を削除します。
Q1: 2nd_leaf で Insert Key Value を見つけることができるのはなぜですか? 私の推測では、 1st_leaf の親のラッチを解放してから 2nd_leaf を s_latch しようとしている間に、他のトランザクションによって引き起こされた多くの更新があるため、挿入されるキーが 2nd_leaf で見つかります。ただし、それにより分離されたキーが変更されますが、それがどのように発生するのか理解できません。
- 挿入によって 2nd_page が分割される場合がありますが、分割は常に右に向かって行われるため、1st_leaf と 2nd_leaf の間で分離されたキーを変更する必要はありません。
- 削除すると 2nd_page が削除される可能性がありますが、分離されたキーを変更する必要はありません。
Q2: 2nd_leaf で Insert Key Value を見つけたとしても、なぜそのようなキーを 1st_leaf に挿入するのでしょうか? 明らかに b+tree プロパティ (1st_leaf のキー < 2nd_leaf のキー) に違反しているためです。上記の条件は #6 を除いて保持されますが、分離キーが変更されているため、挿入されるキーが 2nd_leaf にあることがわかります。
参照
- ARIES/KVL: A Key-Value Locking Method for Concurrency Control of Multiaction Transactions Operating on B-Tree Indexes、Proc. 第 16 回超大規模データベースに関する国際会議、ブリスベン、1990 年 8 月。