AEM은 입증되고 확장 가능하며 유연한 기술을 기반으로 구축된 강력한 플랫폼입니다. 이 문서는 AEM을 구성하는 다양한 부분에 대한 자세한 개요를 제공하며 전체 스택 AEM 개발자를 위한 기술 부록으로 작성되었습니다. 이 안내서는 시작 안내서가 아닙니다. AEM 개발을 처음 사용하는 경우 AEM Sites 개발 시작 - WKND 자습서 첫 번째 단계로
AEM의 핵심 기술로 이동하기 전에 Adobe은 AEM Sites 개발 시작 - WKND 자습서.
최신 컨텐츠 관리 시스템인 AEM은 표준 웹 기술을 사용합니다.
기본 콘텐츠 저장소 및 비즈니스 논리 계층은 Java 기술을 기반으로 구축됩니다.
JCR(Java Content Repository) 표준 JSR는 콘텐츠 저장소 내의 세분화된 수준에서 양방향으로 콘텐츠에 액세스할 수 있는 공급업체 독립적 및 구현 독립적 방법을 지정합니다. 사양 리드는 Adobe 리서치(스위스) AG가 담당합니다.
다음 JCR API 2.0 패키지, javax.jcr.*
저장소 콘텐츠에 직접 액세스하고 조작하는 데 사용됩니다.
AEM은 JCR을 기반으로 구축됩니다.
아파치 잭래빗 오크 는 JCR 표준을 준수하는 최신 세계적 수준의 웹 사이트 및 기타 까다로운 콘텐츠 애플리케이션의 기반으로 사용할 수 있도록 확장 가능하고 성능이 뛰어난 계층형 콘텐츠 저장소의 구현입니다.
Jackrabbit Oak(간단히 Oak라고도 함)는 AEM이 구축된 JCR 표준의 구현입니다.
AEM은 다음을 사용하여 빌드되었습니다. 슬링는 콘텐츠 중심 애플리케이션을 쉽게 개발할 수 있도록 해주는 REST 원칙을 기반으로 한 웹 애플리케이션 프레임워크입니다. Sling은 Apache Jackrabbit Oak와 같은 JCR 저장소를 데이터 저장소로 사용합니다. Sling은 Apache Software Foundation에 기여했습니다. 자세한 내용은 Apache에서 확인할 수 있습니다.
Sling을 사용하면 렌더링되는 콘텐츠 유형이 첫 번째 처리 고려 사항이 아닙니다. 대신 URL이 렌더링을 수행하는 스크립트를 찾을 수 있는 콘텐츠 객체로 확인되는지 여부가 주요 고려 사항입니다. 이렇게 하면 웹 콘텐츠 작성자가 요구 사항에 맞게 쉽게 사용자 지정된 페이지를 작성할 수 있습니다.
이러한 유연성의 장점은 다양한 콘텐츠 요소의 범위가 있는 응용 프로그램이나 쉽게 사용자 지정할 수 있는 페이지가 필요한 경우에 명확하게 나타납니다. 특히 AEM과 같은 웹 컨텐츠 관리 시스템을 구현할 때 사용합니다.
다음을 참조하십시오 15분 안에 Sling 살펴보기 Sling을 사용하여 개발하는 첫 번째 단계입니다.
다음 다이어그램에서는 HTTP 요청에서 콘텐츠 노드로, 콘텐츠 노드에서 리소스 유형으로, 리소스 유형에서 스크립트로 가져오는 방법과 사용 가능한 스크립팅 변수를 보여 줍니다.
다음 다이어그램에서는 를 처리할 때 사용할 수 있는 숨겨져 있지만 강력한 요청 매개 변수를 모두 설명합니다. SlingPostServlet
: 저장소에서 노드를 생성, 수정, 삭제, 복사 및 이동할 수 있는 무한 옵션을 제공하는 모든 POST 요청에 대한 기본 핸들러입니다.
Sling은 내용 중심. 즉, 각 (HTTP) 요청이 JCR 리소스(저장소 노드) 형태의 콘텐츠에 매핑되므로 콘텐츠에 처리가 집중됩니다.
Sling은 콘텐츠 중심의 철학을 바탕으로 REST 기반 서버를 구축하여 웹 애플리케이션 프레임워크에 새로운 개념을 도입했습니다. 장점은 다음과 같습니다.
Sling에서 처리는 사용자 요청의 URL에 의해 결정됩니다. 적절한 스크립트로 표시할 콘텐츠를 정의합니다. 이를 위해 URL에서 정보가 추출됩니다.
다음 URL을 분석하는 경우:
https://myhost/tools/spy.printable.a4.html/a/b?x=12
우리는 그것을 그것의 합성 부품들로 나눌 수 있습니다.
프로토콜 | 호스트 | 콘텐츠 경로 | 선택기 | 확장 | 접미사 | 매개 변수 | |||
---|---|---|---|---|---|---|---|---|---|
https:// |
myhost |
/ |
tools/spy |
.printable.a4. |
html |
/ |
a/b |
? |
x=12 |
tools/spy.html
URL 분해의 원칙 사용:
다음 그림은 사용된 메커니즘을 보여 줍니다. 이에 대해서는 다음 섹션에서 자세히 설명합니다.
Sling을 사용하여 특정 엔티티를 렌더링하는 스크립트를 지정합니다( sling:resourceType
JCR 노드의 속성). 이 메커니즘은 리소스가 여러 변환을 가질 수 있으므로 스크립트가 데이터 엔티티에 액세스하는 것(PHP 스크립트의 SQL 문처럼)보다 더 많은 자유를 제공합니다.
요청이 분류되고 필요한 정보가 추출됩니다. 요청된 리소스(컨텐츠 노드)에 대해 저장소가 검색됩니다.
../content/corporate/jobs/developer.html
../content/corporate/jobs/developer
또한 Sling을 사용하면 JCR 노드 이외의 항목을 리소스가 될 수 있지만, 이는 고급 기능입니다.
적절한 리소스(콘텐츠 노드)가 있는 경우 sling 리소스 유형 가 추출됩니다. 콘텐츠 렌더링에 사용할 스크립트를 찾는 경로입니다.
에 의해 지정된 경로 sling:resourceType
다음 중 하나일 수 있습니다.
상대 경로는 이동성을 높이므로 Adobe에서 권장합니다.
모든 Sling 스크립트는 다음 중 하나의 하위 폴더에 저장됩니다. /apps
(변경 가능, 사용자 스크립트) 또는 /libs
(변경할 수 없음, 시스템 스크립트) - 이 순서로 검색됩니다.
몇 가지 주목할 사항은 다음과 같습니다.
jobs.POST.esp
지정된 AEM 인스턴스에서 지원하는 스크립트 엔진 목록이 Felix 관리 콘솔( http://<host>:<port>/system/console/slingscripting
).
앞의 예를 사용하여 sling:resourceType
은(는) hr/jobs
다음 기간:
.html
(기본 요청 유형, 기본 형식)
/apps/hr/jobs/jobs.esp
; 의 마지막 섹션 sling:resourceType
는 파일 이름을 생성합니다./apps/hr/jobs/jobs.POST.esp
..html
../content/corporate/jobs/developer.pdf
/apps/hr/jobs/jobs.pdf.esp
; 접미사가 스크립트 이름에 추가됩니다.print
에서와 같이 ../content/corporate/jobs/developer.print.html
/apps/hr/jobs/jobs.print.esp
; 선택기가 스크립트 이름에 추가됩니다.sling:resourceType
이(가) 정의된 이후:
ResourceTypeProvider
활성).../content/corporate/jobs/developer.html
에서 검색을 생성합니다. /apps/content/corporate/jobs/
..txt
), HTML(.html
) 및 JSON(.json
)를 입력하면 노드의 속성(적절하게 형식이 지정된)이 나열됩니다. 확장에 대한 기본 렌디션 .res
또는 요청 확장이 없는 요청은 리소스를 스풀 처리하는 것입니다(가능한 경우)./apps/sling/servlet/errorhandler
사용자 지정된 스크립트용/libs/sling/servlet/errorhandler/404.jsp
주어진 요청에 여러 스크립트가 적용되는 경우 가장 일치하는 스크립트를 선택합니다. 일치가 구체적일수록 더 좋습니다. 즉, 요청 확장이나 메서드 이름 일치에 관계없이 더 많은 선택기가 더 잘 일치합니다.
예를 들어 리소스에 대한 액세스 요청을 고려해 보십시오
/content/corporate/jobs/developer.print.a4.html
유형
sling:resourceType="hr/jobs"
올바른 위치에 다음 스크립트 목록이 있다고 가정합니다.
GET.esp
jobs.esp
html.esp
print.esp
print.html.esp
print/a4.esp
print/a4/html.esp
print/a4.html.esp
기본 설정 순서는 (8) - (7) - (6) - (5) - (4) - (3) - (2) - (1)입니다.
리소스 유형(주로 로 정의됨) 외에도 sling:resourceType
속성) 리소스 슈퍼 유형도 있습니다. 일반적으로 다음과 같이 표시됩니다. sling:resourceSuperType
속성. 이러한 슈퍼 유형은 스크립트를 찾으려고 할 때도 고려됩니다. 리소스 슈퍼 유형의 장점은 기본 리소스 유형이 있는 리소스의 계층 구조를 형성할 수 있다는 것입니다 sling/servlet/default
(기본 서블릿에서 사용)는 사실상 루트입니다.
리소스의 리소스 슈퍼 타입은 두 가지 방식으로 정의될 수 있다:
sling:resourceSuperType
리소스의 속성입니다.sling:resourceSuperType
이 속한 노드의 속성 sling:resourceType
포인트.예:
/
a
b
sling:resourceSuperType = a
c
sling:resourceSuperType = b
x
sling:resourceType = c
y
sling:resourceType = c
sling:resourceSuperType = a
유형 계층:
/x
[ c, b, a, <default>]
/y
[ c, a, <default>]
이유는 다음과 같습니다. /y
이(가) sling:resourceSuperType
속성 /x
에서 지원되지 않으므로 해당 슈퍼타입을 리소스 유형에서 가져옵니다.
Sling에서 스크립트는 REST 서버의 엄격한 개념을 손상시킬 수 있으므로 직접 호출할 수 없습니다. 리소스와 표현을 혼합해야 합니다.
표현(스크립트)을 직접 호출하는 경우 스크립트 내에 리소스를 숨김으로써 프레임워크(Sling)가 더 이상 해당 리소스를 알지 못합니다. 따라서 다음과 같은 특정 기능이 손실됩니다.
POST.jsp
의 스크립트 sling:resourceType
위치Sling API 패키지, org.apache.sling.*
및 태그 라이브러리를 추가합니다.
마지막으로 스크립트 내의 기존 요소를 참조해야 한다는 점을 고려해야 합니다.
보다 복잡한 스크립트(집계 스크립트)는 여러 리소스(예: 탐색, 사이드바, 바닥글, 목록 요소)에 액세스해야 할 수 있으며 리소스.
이렇게 하려면 다음을 사용할 수 있습니다. sling:include("/<path>/<resource>")
명령입니다. 여기에는 참조된 리소스의 정의가 효과적으로 포함됩니다.
OSGi(Open Services Gateway Initiative)는 모듈식 애플리케이션과 라이브러리(Java용 Dynamic Module System이라고도 함)를 개발 및 배포하기 위한 아키텍처를 정의합니다. OSGi 컨테이너를 사용하여 애플리케이션을 개별 모듈(추가 메타 정보가 있는 jar 파일이며 OSGi 용어로 번들이라고 함)로 분류하고 다음과 같이 애플리케이션 간의 상호 종속성을 관리할 수 있습니다.
이러한 서비스 및 계약은 개별 요소가 협업을 위해 서로를 동적으로 발견할 수 있도록 하는 아키텍처를 제공합니다.
그런 다음 OSGi 프레임워크는 다시 시작할 필요 없이 이러한 번들의 동적 로딩/언로딩, 구성 및 제어를 제공합니다.
OSGi 기술에 대한 전체 정보는 OSGi 웹사이트.
특히 그들의 기초학력페이지에는 발표와 자습서 모음집이 실려 있다.
이 아키텍처를 사용하면 애플리케이션별 모듈로 Sling을 확장할 수 있습니다. Sling이므로 AEM은 Apache Felix osgi 구현. 둘 다 OSGi 프레임워크 내에서 실행되는 OSGi 번들의 컬렉션입니다.
이렇게 하면 설치 내의 패키지에 대해 다음 작업을 수행할 수 있습니다.
다음을 참조하십시오 AEM에 대한 OSGi 구성 as a Cloud Service 추가 정보.
다음 목록은 저장소 내에서 볼 수 있는 구조에 대한 개요를 제공합니다.
/apps
- 애플리케이션 관련. 웹 사이트와 관련된 구성 요소 정의를 포함합니다. 개발하는 구성 요소는에서 사용할 수 있는 기본 구성 요소를 기반으로 할 수 있습니다. /libs/core/wcm/components
./content
- 웹 사이트용으로 생성된 콘텐츠./etc
/home
- 사용자 및 그룹 정보./libs
- AEM의 핵에 속하는 라이브러리 및 정의입니다. 의 하위 폴더 /libs
는 기본 AEM 기능을 나타냅니다. 의 콘텐츠 /libs
은(는) 수정할 수 없습니다. 웹 사이트별 기능은 다음과 같이 지정해야 합니다. /apps
./tmp
- 임시 작업장/var
- 감사 로그, 통계, 이벤트 처리 등 시스템에서 변경 및 업데이트되는 파일.이 구조 또는 구조 내의 파일에 대한 변경은 신중하게 이루어져야 합니다. 모든 변경 사항의 영향을 완전히 이해했는지 확인하십시오.
에서 변경할 수 없습니다. /libs
경로. 구성 및 기타 변경 사항의 경우 항목을에서 복사합니다. /libs
끝 /apps
내 모든 변경 내용 적용 /apps
.