問題タブ [ops4j]
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.
logging - PAX ロギングを使用しているときに、コンソールでロギング開始メッセージを取り除くにはどうすればよいですか?
RCP アプリケーションに PAX ロギングを実装するよう依頼されました。基本的に、私はこの チュートリアルに従いました。
お気づきかもしれませんが、「RCP アプリケーションを実行すると、Pax ConfMan のログ出力がコンソールに表示されるはずです」と書かれています。注意: 構成フォルダーは見つかりますが、それは問題ではありません。
アプリケーションを実行すると、次のコンソール出力が表示されます。
私の質問は、このコンソール出力を取り除くにはどうすればよいですか?
編集 1 この質問をする理由は、本当の問題がない限り、または追加のログを特に要求しない限り、理想的には起動時にコンソールに何も表示されるべきではないということです。
編集 2 Apache Commons のログに依存していることに気付きました。なんらかの競合が発生するのではないかと推測して削除しましたが、出力は変わりませんでした。
編集 3 問題はまだ存在し、現時点でフィードバックを待っています。
事前に感謝し、質問の形式に誤りがあった場合はお詫び申し上げます。
java - karaf + Ops4j jdbc + apache DBCP を使用する場合、validationQuery をどのように設定しますか?
ここのチュートリアルに従いました: http://www.liquid-reality.de/display/liquid/2012/01/13/Apache+Karaf+Tutorial+Part+6+-+Database+Accessで設定方法を説明していますOps4J JDBC でラップされた apache DBCP を使用して、Karaf でデータソースを作成します。
「プール」プロパティ プレフィックスを使用して、基になるオブジェクト プールにプロパティを設定できますが、おそらくこれは基になるプールのプロパティではなく、BasicDataSource 自体であるため、「validationQuery」プロパティを設定する方法はありません。開発サーバーで接続タイムアウトが発生しているため、このプロパティを設定する必要があります。これにより、夜間の統合テストが中断されることがあります。
これはできますか?
jetty - karaf で jetty を使用して静的ファイルを提供する (バンドル外)
ファイルシステム内のどこかから静的ファイルを提供するという単純な問題に取り組んでいますが、Web アプリケーションの外部では実行できません。
これを行う方法に関するいくつかの例がありますが、どれも機能していないようで、これまでのところ、実際に機能するという確認を誰かから見つけることができませんでした.
etc ディレクトリにある jetty.xml は、 https: //ops4j1.jira.com/wiki/display/paxweb/Advanced+Jetty+Configuration または ops4j GitHub サンプルに記載されているように編集されています。
したがって、これを jetty.xml に追加します。
またはこれ:
両方のバージョンで jetty / karaf が正常に起動し、karaf がシャットダウンされると確認できます
2015-06-02 12:02:57,838 | 情報 | プール-7-スレッド-2 | ContextHandler
| 113 - org.eclipse.jetty.aggregate.jetty-all-server - 8.1.15.v20140411 | oejsServletContextHandler を停止しました{/fileserver,file:/Users/Shared/testenv/}
ただし、ファイルは localhost:8181/fileserver では提供されません
それが(新しくインストールされたカラフコンテナで)機能している唯一の方法は、使用することです
ただし、これを行うと、karaf で実行されている他の Web アプリケーションが壊れます。たとえば、Camel Servlet コンポーネントを使用しています。
それで、誰かがkarafのjettyインスタンスを介して静的ファイルを提供する作業構成を持っていますか、それとも今これを行う方法はありますか?
どんな助けでも感謝します。少し早いですがお礼を!
ところで: Karaf 3.0.3 の使用
編集:
Achim から提供されたスニペットを使用してテストを再実行し、DEBUG ログを有効にしました。
2015-06-03 15:33:25,492 | デバッグ | プール-6-スレッド-1 | XmlConfiguration | 71 - org.eclipse.jetty.aggregate.jetty-all-server - 8.1.15.v20140411 | XML oejshContextHandler{/,null}.setContextPath(/static-content) 2015-06-03 15:33:25,527 | デバッグ | プール-6-スレッド-1 | XmlConfiguration | 71 - org.eclipse.jetty.aggregate.jetty-all-server - 8.1.15.v20140411 | XML oejshContextHandler{/static-content,null}.setHandler(org.eclipse.jetty.server.handler.ResourceHandler@3855ace4) 2015-06-03 15:33:25,529 | デバッグ | プール-6-スレッド-1 | コンテナー
| 71 - org.eclipse.jetty.aggregate.jetty-all-server - 8.1.15.v20140411 | コンテナ oejshContextHandler{/static-content,null} + org.eclipse.jetty.server.handler.ResourceHandler@3855ace4 as handler 2015-06-03 15:33:25,529 | デバッグ | プール-6-スレッド-1 | 容器
| | 71 - org.eclipse.jetty.aggregate.jetty-all-server - 8.1.15.v20140411 | コンテナ org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection@6665534e + oejshContextHandler{/static-content,null} as handler 2015-06-03 15:33:25,542 | デバッグ | プール-6-スレッド-1 | アブストラクトライフサイクル
| 71 - org.eclipse.jetty.aggregate.jetty-all-server - 8.1.15.v20140411 | oejshContextHandler を開始しています{/static-content,null} 2015-06-03 15:33:25,542 | デバッグ | プール-6-スレッド-1 | AbstractHandler
| 71 - org.eclipse.jetty.aggregate.jetty-all-server - 8.1.15.v20140411 | oejshContextHandler を開始しています{/static-content,null} 2015-06-03 15:33:25,543 | デバッグ | プール-6-スレッド-1 | 抽象的なライフサイクル
| | 71 - org.eclipse.jetty.aggregate.jetty-all-server - 8.1.15.v20140411 | 開始済み oejshContextHandler{/static-content,null} 2015-06-03 15:34:27,974 | デバッグ | /静的コンテンツ | サーバー
| 71 - org.eclipse.jetty.aggregate.jetty-all-server - 8.1.15.v20140411 | REQUEST /static-content on AsyncHttpConnection@638f2d20,g=HttpGenerator{s=0,h=-1,b=-1,c=-1},p=HttpParser{s=-5,l=10,c=0 }、r=1 2015-06-03 15:34:27,974 | デバッグ | /静的コンテンツ | サーバーモデル
| | 78 - org.ops4j.pax.web.pax-web-spi - 3.1.4 | 一致する [/static-content]... 2015-06-03 15:34:27,975 | デバッグ | /静的コンテンツ | サーバーモデル | 78 - org.ops4j.pax.web.pax-web-spi - 3.1.4 | パス [/static-content] がどのコンテキストとも一致しません 2015-06-03 15:34:27,975 | デバッグ | /静的コンテンツ | サーバー | 71 - org.eclipse.jetty.aggregate.jetty-all-server - 8.1.15.v20140411 | RESPONSE /static-content 200 処理済み = false
ここで、Get バージョン (動作していない) と Set バージョン (動作している) の違いに気付きました。
Set はクラスorg.eclipse.jetty.server.handler.HandlerList
Get を設定し、クラスに追加しますorg.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection
。これは、次のように記述されています。
登録されたエイリアスへのリクエスト パスの部分文字列ベースのマッチングを実行した後、リクエスト パスに一致するハンドラー (=コンテキスト) のみを呼び出す Jetty ハンドラー コレクション
エイリアスに関して問題がある可能性はありますか?
編集2:
これを掘り下げてみましたが、実際にはこれを機能させることができません。統合テストと通常のカラフの違いについてはわかりませんが、問題があるに違いありません。この問題を再現するには、新鮮な karaf (3.0.3) コンテナーを取得しfeature:install war
、スニペットを実行して etc/jetty.xml に追加して、このように表示し、resourceBase のパスを編集してローカル パスと一致させます。
localhost:8181/static-content を使用して、ブラウザ経由でコンテキストにアクセスしてみてください。
結果は常に 404 - 見つかりません。
Linux と Windows を実行している複数のシステムでこれを試しました。
logging - JBoss FUSE での Pax ロギング
私は OSGi に非常に慣れていません。現在調べていることの 1 つは、OSGi にログインすることです。私は現在 JBoss FUSE を実行しています。これまでの調査から得られたのは、FUSE に組み込まれている OPS4J Pax Logging ライブラリを使用できるということです。
通常、log4j では、次のようなメッセージをログに記録します。
ただし、PaxLogger クラス (v1.8.4) にはinfoメソッドはなく、次のようなinformメソッドがあります。
私が困惑しているのは、inform メソッドで必要な 2 番目のパラメーターです。null値を渡すことができると思いますが、その 2 番目のパラメーターが何をすべきかを知っておく必要があると思います。それは、オンラインで見つけることができないようです。オンラインのほとんどの Pax Logging 資料は古くなっているようです。
何か助けはありますか?
spring - Orientdb パーティション グラフ Java 実装
バックエンドの Spring アプリケーションと Orientdb グラフ データベースがあります。Tinkerpop Frames を使用して orientdb の頂点を Java オブジェクトにマップし、OPS4J をスプリング トランザクション管理に使用します。ここで、複数の顧客 (テナント) がこの 1 つのアプリケーション インスタンスを使用するマルチテナンシーを実装したいと考えています。このアプリケーションは完全に REST の原則に基づいて動作し、複数の Angular アプリケーション (顧客ごと) に開かれています。したがって、顧客と同じ数のフロントエンド Angular アプリケーションがあり、バックエンド REST Spring アプリケーションは 1 つだけです。バックエンドは HTTP リクエストからテナントを認識します。
今、私は最善の解決策について確信が持てません...
最初の解決策
Orientdb のドキュメントを読んだところ、orientdb でマルチテナンシーを実装する方法が見つかりました - http://orientdb.com/docs/2.1/Partitioned-Graphs.html。ただし、リクエストごとに新しいデータベース接続を作成したくない場合を除き、Java API を介して使用する方法がわかりません。現在、Spring トランザクション マネージャーは、Spring トランザクション管理構成で一元的に設定されている接続プールから接続を取得するためです。これに対するJavaの例は見つかりませんでした。
Spring トランザクション管理構成:
接続の取得:
2 番目の解決策
別の解決策は、ティンカーポップを使用することです
パーティショングラフ
クラスは Orientdb で動作しますが、Orientdb のドキュメントにはこの可能性に関する文章は見つかりませんでした。Tinkerpop ではこれだけです - https://github.com/tinkerpop/blueprints/wiki/Partition-Implementation。それは機能しますが、最終的にすべての orientdb 頂点にインデックスのないプロパティを作成するだけなので、ここでのクエリのパフォーマンスが心配です。
誰もこれについて経験がありますか?なにか提案を?
apache-karaf - pax jdbc データソース構成変数
Pax JDBC データソースで構成された Karaf 4 インスタンスを含む Docker コンテナーで、接続された Docker mysql インスタンスを使用しています。
私の問題は、私の jdbc URL が docker によって設定されたいくつかの環境変数に依存していることです (mysql コンテナーの IP が常に同じであるとは限らないため)。IP アドレス変数はMYSQL_PORT_3306_TCP_ADDR
.
私は karaf を起動し、以下-DMYSQL_PORT_3306_TCP_ADDR=XXX.XXX.XXX.XXX
を含む構成ファイル (etc/org.ops4j.datasource.mydb.cfg) でデータソースをセットアップしようとしました:
しかし、karaf の service:list を見ると、次のように表示されます。
したがって、変数は明らかに使用されていません。
私がやりたいことをする方法はありますか?
一番。