Liferay CE 7.x / Liferay DXP 7.x のJavaエージェント - Japan

null Liferay CE 7.x / Liferay DXP 7.x のJavaエージェント

by Yasuyuki Takeo

Liferay CE 7.x / Liferay DXP 7.x の
Javaエージェント

画像

こんにちは、日本ライフレイサポータビリティエンジニアの竹生です。

今回は、監視エージェントを使用に関する記事を紹介します。

以下の知識レベルの方たち、ユースケースが対象です。ご参照ください。


   ■ 本記事対象の知識レベルとユースケース

  • 上級レベル*
  • エキスパートのTips

*レベルの定義については、こちらのブログの冒頭で紹介しています。


  

※本記事はLiferay Community Blogに投稿されている” Liferay CE 7.x / Liferay DXP 7.x Java Agents”を翻訳したものです。配信元または著者の許可を得て配信しています。
※オリジナルの英記事著者:David H Nebinger氏はサウスカロライナ州のサマーヴィルに住むLiferay, Inc.のSoftware Architect/リードコンサルタントです。彼はLiferay Communityサイトにて、多くの技術情報を投稿するなど精力的に活動しています。

監視エージェントを使用するには


監視エージェントを使用するには、追加のセットアップが必要です。

あるシステム管理者より、Liferay DXP 7.0の起動に問題があると報告があり、見てみると、起動時多くのClassNotFoundExceptions(CNFE)が表示されていました。  

更に詳しく確認したところ、JVMを監視するため、Wilyを使用するようセットアップされていることがわかりました。CNFEを生成していたのは、これらのクラスでした。

一般に、アプリサーバーの起動コマンドに-Djavaagent = XXXパラメーターを追加すると、クラスローダー階層が使用可能な場合にのみ、JVM内でフルアクセスできるエージェントが有効になります。エージェントのクラスは、クラスローダー階層の最上位に挿入されるため、通常はアプリサーバー全体で表示されます。

もちろん、LiferayのOSGiコンテナは除きます。

Liferayは、OSGiコンテナーを作成する際、細心の注意を払って、OSGiコンテナーのクラスローダーの「汚染」を制限し、OSGiコンテナーのグローバルクラスとしてアプリサーバーからのクラスが漏れないようにします。

ただし、エージェントを監視する場合、エージェントがオブジェクトのインスタンス化に自身を挿入しようとしても、OSGi内でエージェントパッケージを使用することができません。

これにより、起動時に欠落しているパッケージ/クラスのCNFEが発生するのです。

 

OSGiでエージェントモニタリングの有効化


OSGiコンテナ内でエージェントを有効にするには、追加の構成ステップが必要です。

portal-ext.propertiesファイルで、エージェントからパッケージをmodule.framework.properties.org.osgi.framework.bootdelegationプロパティに追加する必要があります。

ここで、「追加」と明記したことを意識してください。module.framework.properties.org.osgi.framework.bootdelegation=com.agent.* とだけ記述したら、Liferayが通常ブート委任を通過する、他すべてのパッケージが削除され、万事うまくいくと油断してはいけません。

リストを見つけるには、portal.propertiesファイル、またはシステム管理コントロールパネルの(またはGithubあるいはDXPソースのコピーら.)のポートレットプロパティパネルにアクセスする必要があります。 既存の値をガイドとして使用すると、次のような値になります。  

module.framework.properties.org.osgi.framework.bootdelegation=\
  __redirected,\
  com.liferay.aspectj,\
  com.liferay.aspectj.*,\
  com.liferay.portal.servlet.delegate,\
  com.liferay.portal.servlet.delegate*,\
  com.sun.ccpp,\
  com.sun.ccpp.*,\
  com.sun.crypto.*,\
  com.sun.image.*,\
  com.sun.jmx.*,\
  com.sun.jna,\
  com.sun.jndi.*,\
  com.sun.mail.*,\
  com.sun.management.*,\
  com.sun.media.*,\
  com.sun.msv.*,\
  com.sun.org.*,\
  com.sun.syndication,\
  com.sun.tools.*,\
  com.sun.xml.*,\
  com.yourkit.*,\
  sun.*,\
  com.agent.*

リストの最後、「com.agent.*」が追加されているのがわかるでしょうか。

もちろん、今後、特定のエージェントが使用しているパッケージと一致するよう、「com.agent」を変更する場合もあります。

 

アップデート


今回のTipsは、必要最低限にはカバーしますが、実際com.agentのものを置き換えるために、どのパッケージを使う必要があるのかといった疑問に応えるものではありません。

 

以下のような表を埋めていくのは、一つの解決策になるかもしれません。 一方はプロダクトに使用し、もう片方は必要なパッケージを記載します。 APMツールの値を使用するだけです。

サンプルを参考に、続きを作成してみてください。

Product Package(s)
App Dynamics com.singularity.*

 

 


  

 

本記事は以上です。

いかがでしたでしょうか?

 


 

■ これまで発信してきた日本語による技術コンテンツを、Qiitaでお読みいただけます。よろしければそちらの記事も合わせてご役立てください。
https://qiita.com/yasuflatland-lf

Doorkeeperのライフレイコミュニティメンバー大歓迎!
コーポレートブログの技術コンテンツ更新情報など定期的におとどけしています。
https://liferay.doorkeeper.jp/

■ライフレイ公式Slackチャネルもできました!
https://liferay-community.slack.com/
このスラック内の#lug-japanが日本語でLiferayスタッフとやりとりできるチャンネルになります。ぜひご利用ください! 

 

 

業界最高の評価

Gartner

Gartnerレポート:『リーダー』に位置づけ
ライフレイは9年連続で、Gartner社によるデジタルエクスペリエンスプラットフォーム(DXP )分野のマジック・クアドラントにおいて、リーダーに選出されました。

レポートの詳細、ダウンロード