1
으로 OSGI 번들을 나열 쉘에서 액세스 테스트 :펠릭스는 액티브하지만 고골 락 셸 명령에 액세스 할 수 없습니다 (관련 의존성)이 기본 코드가 명령 scopeA을 만들기에 성공
package com.A;
import org.apache.felix.ipojo.annotations.Component;
import org.apache.felix.ipojo.annotations.Instantiate;
import org.apache.felix.ipojo.annotations.Provides;
import org.apache.felix.ipojo.annotations.Requires;
import org.apache.felix.ipojo.annotations.ServiceProperty;
import org.apache.felix.service.command.Descriptor;
@Component(immediate = true)
@Instantiate
@Provides(specifications = Commands.class)
public final class Commands {
@ServiceProperty(name = "osgi.command.scope", value = "scopeA")
String scope;
@ServiceProperty(name = "osgi.command.function", value = "{}")
String[] function = new String[] {
"test"
};
@Descriptor("Example")
public void test() {
System.out.println("hello");
}
}
을하지만, 내가 생성자를 추가하는 경우 그 다른 OSGI 구성 요소에 의존하기 때문에 명령에 더 이상 액세스 할 수 없으며 "도움말"에 나열되지 않습니다. 그러나 번들은 여전히 활성 상태로로드 될 수 있습니다.
package com.A;
import org.apache.felix.ipojo.annotations.Component;
import org.apache.felix.ipojo.annotations.Instantiate;
import org.apache.felix.ipojo.annotations.Provides;
import org.apache.felix.ipojo.annotations.Requires;
import org.apache.felix.ipojo.annotations.ServiceProperty;
import org.apache.felix.service.command.Descriptor;
import com.B;
@Component(immediate = true)
@Instantiate
@Provides(specifications = Commands.class)
public final class Commands {
public Commands(@Requires B b) {
}
@ServiceProperty(name = "osgi.command.scope", value = "scopeA")
String scope;
@ServiceProperty(name = "osgi.command.function", value = "{}")
String[] function = new String[] {
"test"
};
@Descriptor("Example")
public void test() {
System.out.println("hello");
}
}
B의 내용은 간단하다 :
import org.apache.felix.ipojo.annotations.Component;
import org.apache.felix.ipojo.annotations.Instantiate;
import org.apache.felix.ipojo.annotations.Provides;
@Component(immediate = true)
@Instantiate
@Provides
final class B {
}
명령이 더 이상 나열되어 왜 어떤 아이디어? 팁을 더 잘 디버깅 할 수 있도록 상태에 대한 자세한 정보를 찾으십니까?
B 서비스가 실제로 게시 되었습니까? 'inspect cap service [id]'명령으로 확인할 수 있습니다. 여기서 [id]는 구성 요소 B를 포함하는 번들의 ID 여야합니다. –