null Alfresco SDKで7.2用の開発環境を構築する時の注意点

こんにちは。Alfresco Community Edition 7.2用の開発環境をAlfresco SDKを使って構築する時にちょっとした修正をしないとSearch Serviceが正常に機能しないので今回はその修正方法をご紹介します。と言っても、GitHubのalfresco-sdkリポジトリのREADMEに書かれているとおりにIssueを参照してdocker-compose.ymlにちょっと手を入れるだけなので大した話ではありません。

SDKプロジェクトの作成

まずはgetting-startedのGenerate your project from the archetypesの手順に従ってプロジェクトを作成します。なお、ここでは割愛しますがJava 11、Maven 3.3+、DockerとDocker ComposeはPrerequisitesを参考にあらかじめインストール・設定しておいてください。optionalと書かれているとおり、JRebelとHotSwap Agentはなくても大丈夫です。

プロジェクトを作成するために適当なフォルダに移動して以下のコマンドを実行します。

mvn archetype:generate -Dfilter=org.alfresco:

archetypeを選択するように促されるので、2を入力してalfresco-allinone-archetypeを選択します。

[INFO] Generating project in Interactive mode
[INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0)
Choose archetype:
1: remote -> org.alfresco.maven.archetype:activiti-jar-archetype (DEPRECATED - UNSUPPORTED - EXPERIMENTAL)
2: remote -> org.alfresco.maven.archetype:alfresco-allinone-archetype (Sample multi-module project for All-in-One development on the Alfresco platform. Includes modules for Platform/Repository JAR and Share JAR)
3: remote -> org.alfresco.maven.archetype:alfresco-amp-archetype (Sample project with full support for lifecycle and rapid development of Repository AMPs (Alfresco Module Packages))
4: remote -> org.alfresco.maven.archetype:alfresco-platform-jar-archetype (Sample project with full support for lifecycle and rapid development of Platform/Repository JARs and AMPs (Alfresco Module Packages))
5: remote -> org.alfresco.maven.archetype:alfresco-share-jar-archetype (Share project with full support for lifecycle and rapid development of JARs and AMPs (Alfresco Module Packages))
6: remote -> org.alfresco.maven.archetype:share-amp-archetype (Share project with full support for lifecycle and rapid development of AMPs (Alfresco Module Packages))
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): : 2

次にSDKのバージョンを聞かれるので、17を入力して4.4.0を選択します。2022年9月時点では17がデフォルト値としてセットされているのでその場合はEnterキーを押すだけでOKです。

Choose org.alfresco.maven.archetype:alfresco-allinone-archetype version:
1: 2.0.0-beta-1
2: 2.0.0-beta-2
3: 2.0.0-beta-3
4: 2.0.0-beta-4
5: 2.0.0
6: 2.1.0
7: 2.1.1
8: 2.2.0
9: 3.0.0
10: 3.0.1
11: 3.1.0
12: 4.0.0-beta-1
13: 4.0.0
14: 4.1.0
15: 4.2.0
16: 4.3.0
17: 4.4.0
Choose a number: 17:

groupIdやartifactIdを聞かれるので適当に入力して最後にYを入力してEnterキーを押します。ちなみに、ここでもYはデフォルト値になっているので何も入力せずにEnterキーを押しても同じです。

Define value for property 'groupId': jp.aegif.alfresco.demo
Define value for property 'artifactId': alfresco-demo
Define value for property 'version' 1.0-SNAPSHOT: :
Define value for property 'package' jp.aegif.alfresco.demo: :
Confirm properties configuration:
groupId: jp.aegif.alfresco.demo
artifactId: alfresco-demo
version: 1.0-SNAPSHOT
package: jp.aegif.alfresco.demo
Y: : Y

以下のようにBUILD SUCCESSと表示されればプロジェクトの作成は完了です。

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 30.679 s
[INFO] Finished at: 2022-09-21T16:53:47+09:00
[INFO] ------------------------------------------------------------------------

 

7.2用の修正

READMEのImportant Notice about ACS 7.2に以下のように書かれているとおり、このままではSearch Serviceが使えないのでIssue #635のSolutionに従ってdocker-compose.ymlを修正します。

Important Notice about ACS 7.2
Please refer to #635 to fix the Search Services 403 problem.

docker/docker-compose.ymlをテキストエディタで開き、${artifactId}-acsサービス(ここではalfresco-demo-acs)のJAVA_OPTSに以下の2行を追記します。

-Dsolr.secureComms=secret
-Dsolr.sharedSecret=secret

追記した後のコードの例:

...
alfresco-demo-acs:
  image: alfresco-content-services-alfresco-demo:development
  build:
    dockerfile: ./Dockerfile
    context: ../../../alfresco-demo-platform-docker/target
  environment:
    JAVA_TOOL_OPTIONS: "${keystore.settings}"
    JAVA_OPTS: "
      -Dsolr.secureComms=secret
      -Dsolr.sharedSecret=secret
      -Dmessaging.broker.url=\"failover:(nio://alfresco-demo-activemq:61616)?timeout=3000&jms.useCompression=true\"
    "
...

次に、Alfresco Search Service(${artifactId}-assサービス)のバージョンを1.2.0から2.0.xに変更して、environmentに以下の2行を追記します。Issue #635ではバージョンを2.0.3に変更するようにと書かれているのですが、記事執筆時点では2.0.4がリリースされていたので2.0.4に変更して試してみても大丈夫でした。以下のコードの例では2.0.4にしてあります。

ALFRESCO_SECURE_COMMS: "secret"
JAVA_TOOL_OPTIONS: "-Dalfresco.secureComms.secret=secret"

追記した後のコードの例:

...
alfresco-demo-ass:
  image: alfresco/alfresco-search-services:2.0.4
  environment:
    SOLR_ALFRESCO_HOST: alfresco-demo-acs
    SOLR_ALFRESCO_PORT: 8080
    SOLR_SOLR_HOST: alfresco-demo-ass
    SOLR_SOLR_PORT: 8983
    SOLR_CREATE_ALFRESCO_DEFAULTS: alfresco,archive
    ALFRESCO_SECURE_COMMS: "secret"
    JAVA_TOOL_OPTIONS: "-Dalfresco.secureComms.secret=secret"
...

変更を保存したら、プロジェクトのルートフォルダに移動して以下のコマンドでAlfrescoを起動します。

./run.sh build_start

ログを監視してサーバが起動したら http://localhost:8180/share (8080ではないので注意!)をブラウザで開き、admin/adminでログインします。右上の検索ボックスに「doc」や「png」等の文字列を入力してサンプルサイトのコンテンツがヒットすれば検索が正常に機能しているので正しく修正できていることが確認できます。

関連記事
install
install

RANKING
2020.10.12
2020.11.19
2020.12.23
2020.10.05
2020.11.25