Создать Maven-проект.
В папке src\main\java создать класс App:
public class App {
public void init(){
System.out.println("Hello World!");
}
public void destroy(){
System.out.println("Bye!");
}
}
В папку src\main\resource добавить папку OSGI-INF.
В папку OSGI-INF добавить папку blueprint.
В папке blueprint создать файл blueprint.xml:
<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
<bean id="hellobean" class="App"
init-method="init"
destroy-method="destroy">
</bean>
</blueprint>
Проект выглядит так:
Теперь:
install -s wrap:mvn:<groupId>/<artifactId>/<version>
После установки программы в командной строке karaf-а высветится "Hello World!".
После удаления программы (удалении jar-файла из папки deploy или выполнения команды uninstall
), высветится "Bye!"
Примечание. В команде install
url начинается с "wrap:" потому, что созданный jar-файл не является бандлом karaf-а.
Если добавить в pom.xml:
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<executions>
<execution>
<id>osgi-bundle</id>
<goals>
<goal>bundle</goal>
</goals>
<phase>package</phase>
<configuration>
<instructions>
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
<Bundle-Version>${project.version}</Bundle-Version>
<Import-Package>
*;resolution:=optional
</Import-Package>
</instructions>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
установка бандла в karaf выполняется командой:
install -s mvn:<groupId>/<artifactId>/<version>