Adobe의 사용자 경험 전문가 AEM: OSGi bundle 구축 및 배포
7629 단어 구조 설계
OSGi bundle 구축 CQ 개발자에게 OSGi bundle을 구축하는 가장 간단한 방법은 Apache Felix Bundle 플러그인을 통해 Apache Maven을 사용하는 것이다.이 플러그인은 Apache Felix팀이 Peter Kriens의 BND 도구를 기반으로 개발한 것입니다. 그럼에도 불구하고, 이 플러그인이 만든 OSGi bundle은 Felix에만 적용되는 것이 아니라, 다른 OSGi 용기에도 사용할 수 있습니다.
이 플러그인은 개발자가 Maven (명령줄이나 IDE 도구를 통해) 을 사용하여 기본적인jar 파일을 만드는 것처럼 처리할 수 있지만, bundle에 추가된 OSGi 메타데이터를 낮은 수준으로 제어할 수 있습니다.
첫 번째 단계는 패키지 스타일을 bundle로 설정하는 새로운 Maven 프로젝트를 만드는 것입니다. 물론 Apache Felix Bundle 플러그인을 추가하는 정의도 있습니다.
4.0.0
com.headwire.cqblueprints
parent
5.4.0-SNAPSHOT
cqblueprints-examples-osgi-bundle
bundle
...
org.apache.felix
maven-bundle-plugin
2.3.5
true
...
org.apache.felix
maven-bundle-plugin
...
...
다음 단계에서는 Apache Felix Bundle 플러그인을 구성합니다.
org.apache.felix
maven-bundle-plugin
com.headwire.cqblueprints.examples.osgi.Activator
com.headwire.cqblueprints.examples.osgi
*;scope=compile|runtime
OSGI-INF/lib
true
!org.slf4j.impl,*
위의 예에서는 다음과 같은 구성 항목을 설정합니다.
OSGi Bundle Activator (OSGi Bundle 생명주기에 연결된 클래스) 를 통해 Bundle가 시작되거나 닫힐 때 사용자 정의 코드를 실행할 수 있는 완전한 자바 클래스입니다.이 설정은 선택할 수 있습니다.
OSGi 용기에 노출되지 말아야 할 패키지 (예를 들어 버블이 제공하는 API 관련 기능만 포함하는 패키지).위의 예제에서는 Activator가 있는 패키지를 private로 선언합니다.
bundle을 만들 때 어떤 Maven 의존도를 삽입해야 합니까?상기 예에서 설정한 것은
*;scope=compile|runtime는 scope가compile이나runtime에 대한 모든 의존을 포함하기 때문에 이것은bundle의 정상적인 운행에 필요한 모든 종류가 될 것입니다.
버블에 이 의존항 설정을 추가하는 것을 권장합니다.대체 방법은 버블에 의존항을 삽입하지 않고 OSGi 용기에서 의존항을 가져오는 것입니다.
우리는 전자를 추천한다. 왜냐하면 다른 개발자들이 더 쉽게 버블을 사용할 수 있기 때문이다. 모든 의존을 거슬러 올라가 새로운 버블을 배치할 때 그들을 먼저 배치할 필요가 없기 때문이다.
버블을 컴파일할 때 필요하고 실행할 때 OSGi 용기에서 제공하는 의존 (예를 들어
org.osgi.framework 패키지의 모든 클래스) 는provided에 대한 scope의 설명을 해야 합니다. 그러면 버블에 삽입되지 않습니다.
끼워 넣은 제3자 패키지는 이 버블의 위치에 놓입니다.설정
OSGI-INF/lib.OSGI-INF 디렉터리는 OSGi와 관련된 다른 메타데이터를 놓을 곳입니다. 이것은 다수의 자바 개발자들이 익숙한
WEB-INF/lib 디렉토리.
이 bundle pom의 직접 의존만 삽입할 지 (삽입하려면false로 설정하십시오), 그리고pom이 설명한 의존 관계의 전달도를 삽입할 지 여부입니다. (삽입하려면true로 설정하십시오.)이 버그를 더 쉽게 처리할 수 있도록true로 설정합니다.만약 포함되지 말아야 할 의존이 있다면 (예를 들어 다른 버블이 모든 항목에 대해 볼 수 있도록 설정했을 수도 있고, 결과는 패키지 충돌일 수도 있다), Embed-dependency 탭을 사용해서 필터를 할 수 있다.
이 버블에 필요한 OSGi 용기에서 제공하는 패키지 (예를 들어 버블 자체가 필요로 하는 클래스가 포함되지 않은 경우).부족한 값을 사용하면 충분하기 때문에, 이 라벨은 보통 무시됩니다.최종 값은 버블 코드에 필요한 패키지뿐만 아니라, 이미 끼워 넣은 의존 항목에 필요한 패키지도 포함합니다.이 버블이 가져온 클래스가 OSGi 용기에 제공되지 않으면, 이 버블은 설치될 수 있지만 시작할 수 없습니다.
bundle 생성이 성공하면 이 jar에 필요한 OSGi 메타데이터가 추가됩니다
MANFIFEST.MF 파일, 모든 의존도 끼워넣기
OSGI-INF/lib 디렉토리에 있습니다.
이러한 옵션과 기타 옵션에 대한 자세한 내용은 Apache Felix Bundle 플러그인 페이지를 참조하십시오.
OSGi bundle 배포 OSGi bundle을 만드는 Maven POM을 설정한 후, 이 bundle을 실행 중인 CQ 환경에 배치하기 위해 계속 설정해야 합니다.
CQ의 구축은 Apache Sling을 기반으로 하기 때문에 이 프로젝트의 Maven 플러그인을 사용하여 OSGi bundle을 CQ에 직접 배치할 수 있습니다.Maven Sling 플러그인을 사용하면 OSGi bundle을 로컬 또는 원격 실행 중인 CQ 인스턴스에 배치할 수 있습니다.
다음에 POM에 새 프로필을 추가하고, 프로필에 플러그인 정의를 추가해서 Maven Sling 플러그인을 사용합니다.
auto-deploy
org.apache.sling
maven-sling-plugin
2.0.4-incubator
org.apache.sling
maven-sling-plugin
deploy-to-cq
install
install
${crx.url}/system/console/install
${crx.user}
${crx.password}
하나의 프로필에 슬링 플러그인을 설명하고 이 프로필에 대해 기본적으로 활성화되지 않습니다. 이것은 지정한 CQ 실례에 연결되지 않으면 싱 플러그인이 Maven 구축에 실패할 수 있기 때문입니다.Sling 플러그인을 프로필에 잃어버리면, Maven은 버블을 구축하고 발표할 수 있으며, 실행 중인 CQ 실례를 사용할 수 없습니다.
그럼에도 불구하고 재배치 환경에서 간단하게 이것을 활성화하기만 하면 된다
auto-deploy profile 을 실행하고 Maven install 을 실행할 때마다 이 bundle 은 CQ 에 자동으로 재배치됩니다.명령줄의 예는 다음과 같습니다.
mvn -Pauto-deploy clean install
대부분의 흔한 IDE (Eclipse, NetBeans 등) 는 개발자가 Maven 구축을 실행할 때 어떤 프로필을 사용할 수 있는지 설정할 수 있도록 한다.
Maven properties 사용을 통해 슬링의 연결 구성을 매개 변수화하는 것도 중요하다. 이렇게 구축하면 여러 개발자의 기기에서 쉽게 실행할 수 있지만 POM에서는 기본값을 제공해야 한다.
http://localhost:4502
admin
admin
기본값을 사용할 수 없을 때 표준 Maven 기능을 사용하여 쉽게 다시 쓸 수 있습니다.서버 URL에 대한 명령줄을 한 번에 작성하여 다시 쓰는 예는 다음과 같습니다.
mvn -Pauto-deploy -Dcrx.url=http://localhost:8080 clean install
또는 더 영구적인 리셋을 해서 이property를 사용자의 settings에 직접 추가합니다.xml 파일:
...
...
local-crx-settings
true
http://localhost
Maven 구축이 실행된 후, 배치가 성공하면 이 bundle가 설치되고 시작됩니다.이 버블이 하는 일에 따라 어떤 부정적인 영향도 바로 볼 수 있을 것이다.마지막으로 관리자 콘솔의 Bundles 화면에는 다음과 같은 기본 위치가 표시됩니다.
http://localhost:4502/system/console/bundles
텍스트 링크: Building & Deploying OSGi Bundles
저자: 김종국
CQBlueprints 웹 사이트는 Adobe CQ를 사용하는 프로그래머와 개발자에게 도움을 줄 수 있도록 설계되었습니다.Adobe의 공식 사이트에는 이미 CQ에 관한 정보가 많이 있지만 그 정보는 주로 CQ 자체의 제품에 전념한다.당신이 진정으로 CQ에 정착할 때, 당신은 많은 추가 과제를 고려해야 한다. (예를 들어, 어떻게 자발적으로 개발하고, 개발한 것은 어떻게 해야만 배치 환경에서 일할 수 있습니까?)CQBlueprints 웹 사이트는 이러한 문제를 다루고 있습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Netty 인터넷 채팅방의 세션 관리
웹을 쓴 학생들은 세션이라는 것에 익숙할 것이다.브라우저가 처음으로 서버와 연결을 맺을 때 서버는 자동으로 세션을 분배합니다.Session은 사용자가 로그인 인증을 받았는지 판단하거나 사용자의 각종 정보를 저장할 수...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
4.0.0
com.headwire.cqblueprints
parent
5.4.0-SNAPSHOT
cqblueprints-examples-osgi-bundle
bundle
...
org.apache.felix
maven-bundle-plugin
2.3.5
true
...
org.apache.felix
maven-bundle-plugin
...
...
org.apache.felix
maven-bundle-plugin
com.headwire.cqblueprints.examples.osgi.Activator
com.headwire.cqblueprints.examples.osgi
*;scope=compile|runtime
OSGI-INF/lib
true
!org.slf4j.impl,*
CQ의 구축은 Apache Sling을 기반으로 하기 때문에 이 프로젝트의 Maven 플러그인을 사용하여 OSGi bundle을 CQ에 직접 배치할 수 있습니다.Maven Sling 플러그인을 사용하면 OSGi bundle을 로컬 또는 원격 실행 중인 CQ 인스턴스에 배치할 수 있습니다.
다음에 POM에 새 프로필을 추가하고, 프로필에 플러그인 정의를 추가해서 Maven Sling 플러그인을 사용합니다.
auto-deploy
org.apache.sling
maven-sling-plugin
2.0.4-incubator
org.apache.sling
maven-sling-plugin
deploy-to-cq
install
install
${crx.url}/system/console/install
${crx.user}
${crx.password}
하나의 프로필에 슬링 플러그인을 설명하고 이 프로필에 대해 기본적으로 활성화되지 않습니다. 이것은 지정한 CQ 실례에 연결되지 않으면 싱 플러그인이 Maven 구축에 실패할 수 있기 때문입니다.Sling 플러그인을 프로필에 잃어버리면, Maven은 버블을 구축하고 발표할 수 있으며, 실행 중인 CQ 실례를 사용할 수 없습니다.
그럼에도 불구하고 재배치 환경에서 간단하게 이것을 활성화하기만 하면 된다
auto-deploy profile 을 실행하고 Maven install 을 실행할 때마다 이 bundle 은 CQ 에 자동으로 재배치됩니다.명령줄의 예는 다음과 같습니다.
mvn -Pauto-deploy clean install
대부분의 흔한 IDE (Eclipse, NetBeans 등) 는 개발자가 Maven 구축을 실행할 때 어떤 프로필을 사용할 수 있는지 설정할 수 있도록 한다.
Maven properties 사용을 통해 슬링의 연결 구성을 매개 변수화하는 것도 중요하다. 이렇게 구축하면 여러 개발자의 기기에서 쉽게 실행할 수 있지만 POM에서는 기본값을 제공해야 한다.
http://localhost:4502
admin
admin
기본값을 사용할 수 없을 때 표준 Maven 기능을 사용하여 쉽게 다시 쓸 수 있습니다.서버 URL에 대한 명령줄을 한 번에 작성하여 다시 쓰는 예는 다음과 같습니다.
mvn -Pauto-deploy -Dcrx.url=http://localhost:8080 clean install
또는 더 영구적인 리셋을 해서 이property를 사용자의 settings에 직접 추가합니다.xml 파일:
...
...
local-crx-settings
true
http://localhost
Maven 구축이 실행된 후, 배치가 성공하면 이 bundle가 설치되고 시작됩니다.이 버블이 하는 일에 따라 어떤 부정적인 영향도 바로 볼 수 있을 것이다.마지막으로 관리자 콘솔의 Bundles 화면에는 다음과 같은 기본 위치가 표시됩니다.
http://localhost:4502/system/console/bundles
텍스트 링크: Building & Deploying OSGi Bundles
저자: 김종국
CQBlueprints 웹 사이트는 Adobe CQ를 사용하는 프로그래머와 개발자에게 도움을 줄 수 있도록 설계되었습니다.Adobe의 공식 사이트에는 이미 CQ에 관한 정보가 많이 있지만 그 정보는 주로 CQ 자체의 제품에 전념한다.당신이 진정으로 CQ에 정착할 때, 당신은 많은 추가 과제를 고려해야 한다. (예를 들어, 어떻게 자발적으로 개발하고, 개발한 것은 어떻게 해야만 배치 환경에서 일할 수 있습니까?)CQBlueprints 웹 사이트는 이러한 문제를 다루고 있습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Netty 인터넷 채팅방의 세션 관리웹을 쓴 학생들은 세션이라는 것에 익숙할 것이다.브라우저가 처음으로 서버와 연결을 맺을 때 서버는 자동으로 세션을 분배합니다.Session은 사용자가 로그인 인증을 받았는지 판단하거나 사용자의 각종 정보를 저장할 수...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.