나는 apache felix 용 번들을 개발하기 시작했으며 ops4j pax 플러그인을 사용했다.번들에 처음부터 org.apache.felix.scr 주석을 사용하는 방법은 무엇입니까?
pax-create-project
으로 프로젝트 구조를 만들었으며 정상적으로 pax-create-bundle
을 만들었습니다. 그런 다음, Maven으로 모든 것을 빌드하기위한 초기 프로젝트 구조를 얻습니다. 여기서 중요한 부분은 묶음에 자신의 pom (bundlename/pom.xml
)과 bnd 파일 (bundlename/osgi.bnd
)이 있지만 maven-bundle-plugin
의 구성은 이미 poms/compiled/pom.xml
에 있습니다. 번들 메타 데이터가 poms/compiled/pom.xml
으로 구성되었지만 표준 활성화자가 위에서 언급 한 osgi.bnd
파일로 구성되었습니다. bnd 파일의 기본값은 Bundle-Activator: ${bundle.namespace}.internal.ExampleActivator
입니다.
지금 나는 내가 번들에 종속에서 자신의 치어이 포함 org.apache.felix.scr
에서 주석을 사용하기 시작하고 싶었 :
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.scr</artifactId>
<version>1.6.0</version>
</dependency>
을 그리고 서비스에 대한 내 인터페이스를 만들어 :뿐만 아니라
package namespace;
public interface Sample {
void sayHello();
}
을 주석이있는 구현은 org.apache.felix.scr
:
package namespace.internal;
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Deactivate;
import namespace.Sample;
@Component
@Service
public class SampleImpl implements Sample{
@Activate
void start(){
System.out.println("Started SampleImpl.");
}
@Deactivate
void stop(){
System.out.println("Stopped SampleImpl.");
}
@Override
public void sayHello() {
System.out.println("Hello!");
}
}
구성 요소를 시작하려면 무엇을 osgi.bnd
파일에 넣어야합니까? 나는 BundleActivator를 더 이상 사용하지 않기 때문에 위에서 언급 한 기본 항목을 제거해야했습니다. 이제 여기
는 질문 : 나는이 mvn clean install pax:provision
내 번들을 시작하는 펠릭스 환경을 시작하자 나를 출력물의 어떤를 볼 수 있도록하기 위해 위에서 언급 한 모든 파일을 어떻게해야합니까? 나는 이미 내가 너무 시작하고 아파치 로그 서비스의 로그 출력에보고하고 그냥 저에게 말한다 :
2012.09.28 16:52:44 INFO - Bundle: namespace - BundleEvent STARTED
2012.09.28 16:52:44 INFO - Bundle: namespace - BundleEvent RESOLVED
이 어떤 힌트가 아주 잘 부탁드립니다. 또는 링크를 통해 필자는 scr과 번들을위한 maven 플러그인을 사용하기위한 완벽한 안내서를 찾기 위해 더 많은 시간 동안 검색했습니다.
인사말, Kjellski