Apache Lenya-珍しいJavaのオープンソースCMS

Springの実際のトピックに関するコメント-Javaでのopenource CMSの試行で、JavaのオープンソースCMSの1つであるApache Lenyaについて言及しました。
アパッチレーニャロゴ

Apache Lenyaを選ぶ理由


「JavaでCMSを使用する理由」-顧客から要件を受け取ったときに最初にあった質問。 答えは簡単でした。大企業の顧客はJavaでプロジェクトを開発した経験があるので、私は彼女を最も信頼していました。 「Java EE」は、たとえばPHPよりも、ビジネスマンの耳にとってより深刻で信頼性が高いように聞こえます。 信頼性と深刻さを伴う状況はあまり重要ではありませんが、大企業が他の大企業の製品を信頼していることを考慮する価値があります。

そこで、社内の私たちはJava CMSの検索を開始しました。 有料で自由に配布されたものはそれほど多くないことが判明しました。 詳細については、Wikipediaをご覧ください。
ライセンスを分析した後、顧客のニーズに合わせてCMSを真剣に「仕上げる」必要があり、Nuxeo EP、Daisy、Hippo CMS、Alfresco、Apache Lenya自身の候補者が選択しました。 すべてテスト済みです。 ソースコードを分析し、開発の複雑さを評価した後、Apache Lenyaに立ち寄ることに決めました。 このCMSは、すぐに利用できるソースコードの変更を可能な限り幅広く提供しました。 幸いなことに、Apacheライセンスにより、コードを変更し、商用目的で製品を使用できました。 最初に発生した問題は、小規模ではあるがかなり活発なコミュニティの助けを借りて解決されました。

メインマヌバ

Apache Lenyaの機能


Apache Lenyaは標準のCMS機能を提供します(私はJoomlaの経験しか持っていないので、それとの比較のほとんどは):

また、最も普通ではありません:

機能:

この概念により、既に作成されたサイト構造(または1つのパブリケーションの構造とデータ)を新しいパブリケーションに再利用できます。 さまざまな出版物がサイトの一般的な構造を使用する場合がありますが、異なる情報が含まれています。 たとえば、デフォルトのパブリケーションであるdefaultには、XSLTテンプレート、ユーザーに関するデータ、ユーザーグループ、およびその他のサービス情報が既に含まれています。 プロダクションの公開はデフォルトから継承されます。 次に、本番のパブリケーションは同じ外観(共通のXSLTのおかげ)で、すべてのユーザーとグループにアクセスできます。 ただし、一部のユーザー権限、ページのレンダリング、または一般的に全体をオーバーライドできます。 一般に、いくつかの同様のサイトをサポートする必要がある場合、かなり便利な機能です。

このWebフレームワークについては、もう少し詳しく説明する必要があります。 彼はApache Lenyaの心臓部です。

アパッチ


Apache Cocoon( off。Site )-Web開発のフレームワーク。 まだバージョン2またはそれ以前のSpring Frameworkとの類似点があります。 とりわけ、私の意見では、Cocoonの2つの主要な機能であるIoCコンテナーの存在と「チャネル」(パイプライン)の概念に注目する価値があります。 他にも多くの注目すべき機能がありますが、Apache Lenyaを完成させるときに必要なのはこれら2つでした。 Inversion of Controlとは、説明する価値はありませんが、「チャンネル」についていくつか言及する価値があります。
「チャネル」は、MVCパターンの一種の実装です。 XML構成は次のようになります。
<? xml version ="1.0" encoding ="iso-8859-1" ? >
< map:sitemap xmlns:map ="http://apache.org/cocoon/sitemap/1.0" >

<!-- define the Cocoon processing pipelines -->
< map:pipelines >
< map:pipeline >
<!-- respond to *.html requests with
our docs processed by doc2html.xsl -->
< map:match pattern ="*.html" >
< map:generate src ="{1}.xml" />
< map:transform src ="doc2html.xsl" />
< map:serialize type ="html" />
</ map:match >

<!-- later, respond to *.pdf requests with
our docs processed by doc2pdf.xsl -->
< map:match pattern ="*.pdf" >
< map:generate src ="{1}.xml" />
< map:transform src ="doc2pdf.xsl" />
< map:serialize type ="fo2pdf" />
</ map:match >
</ map:pipeline >
</ map:pipelines >
</ map:sitemap >

* This source code was highlighted with Source Code Highlighter .

ご覧のとおり、マッピングでページを作成するには、主に3つの手順があります。
  1. 世代
  2. 変換
  3. 連載

中括弧では、ジェネレーターのパラメーターが渡されます。
このようにして、コンポーネントの柔軟性と高レベルの再利用が実現されます。同じジェネレーターと異なる変換およびシリアル化を使用して、一般的なhtmlからpdfまたはcsvまでの幅広い出力データ形式を取得できます。

IoCコンテナを実装するために、Apache Cocoonは現在閉じられているApache Avalonフレームワークを使用します。 構成全体は、cocoon.xconfファイルにあります。 コンポーネント、データソース、モジュール宣言(Cocoonには柔軟なプラグインシステムがあります)など、ほぼすべてが含まれています。
これについてのインターネット上のドキュメントはあまりないので、コンポーネントについてもう少し詳しく説明します。
コンポーネントの概念は次のようになります。いくつかのコンポーネント(コンポーネント)はロール(ロール)に基づいて結合され、デフォルトのロール実装が宣言され、Javaクラスではロールとその特定の実装をすでに使用できます。 ロールはインターフェースであり、コンポーネントは具象クラスです。 特定のファイルリストは提供しませんが、それらは非常に大きいものです。 Apache CocoonとAvalonの詳細については、別の記事が必要です。

Apache Lenyaをインストールする


apache-lenya-2.0.3-src.zipをダウンロードして解凍すると、ファイルの数が多いために時間がかかることがあるため、コンパイルする必要があります。 ここから最大の「タンバリンとのダンス」が始まります。
ルートで実行することでバージョン2.0.2をビルドできました。
>build build-cocoon
>build build-cocoon
>build

これは事務​​的なエラーではなく、最初のコマンドを2回実行する必要があります。
バージョン2.0.3では、すべてがはるかに複雑であることが判明しました。
まず、 externals \ cocoon_2_1_x \ lib \ optional ディレクトリで 、パッケージorg.apache.xpathが含まれるようにxalan-2.7.1.jarを更新し、 xalan-j_2_7_1-bin.zipディストリビューションからserializer.jarを追加する必要があります。 ところで、 xalan-2.7.1.jarを更新した後、コンパイルエラーが発生する可能性があるため、別のxalan-2.7.1.jarを探す必要があります。 私はそれをMavenリポジトリーから、シリアライザーをXalanディストリビューションから取り出しました。
次に、Cocoonのビルドを試みます。 これを行うには、ルートで実行します。
build.bat build-cocoon -lib externals/cocoon_2_1_x/lib/optional

3回目から、または4回目からでも、ビルドは成功するはずです。
-libパラメーターexternals / cocoon_2_1_x / lib / optionalは必須です。これ 、antタスクを含むライブラリがいくつかあり、コンパイルにはいくつかのライブラリが必要だからです。
次に、Windowsユーザーの場合、GnuWin32をインストールする必要があり( ここから入手できます )、GnuWin32がインストールされたディレクトリを環境変数からPATHに追加します。 これは、アセンブリ中にパッチコマンドが実行されるために必要です。
最後に、チーム
build -lib externals/cocoon_2_1_x/lib/optional

BUILD SUCCESSFULマジックメッセージで終了する必要があります。
何かがうまくいかなかった場合は、さらに私に尋ねるか、 メールアーカイブで回答を探すことができます

Apache Lenyaを起動します


打ち上げもスムーズに進みませんでした。 最初に、 build\lenya\webapp\WEB-INF\lib\ jms.jar(javax.jmsパッケージ)とjta-1.1.jar(javax.transactionパッケージ)をコピーする必要がありました(これはメインantビルドで修正する必要があります) 、Apache Lenyaが正常に開始した後のみ:
レーニャホームページ

Lenyaは、lenya.batまたはlenya.shファイルを使用して起動されます
デフォルトでは、Jettyサーブレットコンテナが使用されます。
Tomcatで実行することもできます(個人的にテスト)。 詳細については、公式Webサイトをご覧ください
Apache Lenyaはロシア語に部分的に翻訳されています。 ローカライズされていないラベルは、国際化ファイルに必要なデータを追加することで翻訳できます: $ LENYA_HOME $ \ src \ webapp \ lenya \ resources \ i18n

新しいApache Lenyaパブリケーションを作成する


パブリケーションを作成するには、次を実行します。
メインページで[パブリケーションの作成]をクリックし、識別子(将来のコンテキスト)とパブリケーションの名前を入力します。
パブリケーションを作成する

作成後、パブリケーションへのリンクをクリックして、パブリケーションのプロパティを含むページに移動します。
出版ホームページ

「オーサリング用のログイン」を選択します(サイトのコンテンツとサイトの構成を編集できます)
lenya(パスワードlevi)としてログインします
何をするかを選択します。デフォルトでページをエクスポートするか、ページを作成しません。
ページをインポートする

その後、ユーザーlenyaはページを作成、編集し、承認のために送信できます。 [編集]メニューでページを作成し、[処理]メニューでページのステータスを制御できます。
編集メニニュー
ワークフローメニュー

ユーザーalice(パスワードlevi)にはレビューアの役割があり、ページを公開する権利があります。 公開後、ページはライブビュー(または[公開済み]タブ)に表示されます
参照用に、ユーザー、グループ、およびロールに関する情報は、 \ build \ lenya \ webapp \ lenya \ pubs \ default \ config \ access-control \ passwd \に保存されます。もちろん、Webインターフェイスの[管理]タブで変更できます。

結論


Apache Lenyaは、Apache Cocoonに基づいた柔軟なJava CMSであり、そのため、すべての機能がApache Licenseの下で配布されています。 このCMSは「すぐに使える」と言われるように幅広い機能を備えており、追加のモジュールを記述することで機能を簡単に拡張できます。 インターネットにはあまり多くのドキュメントやマニュアルはありませんが、小規模で活発なコミュニティがあります。 特定の条件下では、Lenyaの使用を推奨できます。
この記事では、Apache Lenyaの基本と機能の一部のみを説明します。 誰かがこのトピックに興味を持っているなら、私はこの珍しいCMSの説明を続けることができます。

リソースリスト
  1. 公式サイトApache Lenya http://lenya.apache.org/
  2. Apache Cocoonの公式Webサイトhttp://cocoon.apache.org/
  3. Apache Lenyaメールアーカイブhttp://mail-archives.apache.org/mod_mbox/lenya-user/
  4. GnuWin32 http://gnuwin32.sourceforge.net/packages/patch.htm
  5. ウィキペディアJava CMSのリスト

Source: https://habr.com/ru/post/J101294/


All Articles