위의 모든 대답이 맞습니다.지금 당신은 뭔가를 쓸 수 쉘에 뭔가를 인쇄하는 식으로 뭔가를해야합니다 :
public interface PrintService {
public void print();
}
Implentation :
public class PrintServiceImpl implements PrintService {
@Override
public void print() {
System.out.println("Hello from PrintServiceImpl!");
}
}
component.xml :
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="service">
<implementation class="service.PrintServiceImpl"/>
<service>
<provide interface="print.PrintService"/>
</service>
</scr:component>
그리고 지금 당신이 명령을 사용할 수 있습니다 인쇄 방법을 호출하려면 :
public class PrintCommand implements Command {
private PrintService printer;
public void setPrinter(PrintService printer) {
this.printer = printer;
}
public void unsetPrinter(PrintService printer) {
this.printer = null;
}
@Override
public void execute(String line, PrintStream arg1, PrintStream arg2) {
printer.print();
}
@Override
public String getName() {
return "print";
}
@Override
public String getShortDescription() {
return "just a printer";
}
@Override
public String getUsage() {
return "print";
}
}
그리고 당신의 component.xml는 새 항목이 있어야합니다
<component name="PrintCommand">
<implementation class="PrintCommand"/>
<service>
<provide interface="org.apache.felix.shell.Command"/>
</service>
<reference
name="printer"
interface="PrintService"
bind="setPrinter"
unbind="unsetPrinter"
cardinality="1..1"
policy="static"
/>
</component>
명령 인터페이스 아파치 펠릭스 셸의 일부이며 지금 펠릭스를 실행하고 콘솔에 help
를 입력 할 경우 등록 된 모든 명령을 볼 수 있습니다을하고있다 PrintCommand도 print
입니다. 쉘에 print를 입력하면 텍스트가 표시됩니다.
관리 콘솔에서 신고 된 서비스를 볼 수 있습니까? 그것은 활동적입니까? –
예 "ss"명령을 사용하며 활성화되어 있지만 "ls"명령은 "불만족"상태입니다. –
'org.eclipse.equinox.ds' 번들이 있고 실행 구성에 추가 된 종속성이 있는지 확인하십시오. –