Browse Source

Documented minimal set of OSGi bundles (#9489)

tags/8.1.1
Ilia Motornyi 6 years ago
parent
commit
78604ac483
1 changed files with 118 additions and 0 deletions
  1. 118
    0
      documentation/advanced/advanced-osgi.asciidoc

+ 118
- 0
documentation/advanced/advanced-osgi.asciidoc View File

@@ -15,6 +15,94 @@ To deploy Vaadin applications as OSGi bundles, static resources (including theme

The application is typically packaged as a JAR file, and needs to have a valid OSGi bundle manifest which can be created e.g. by the `bnd-maven-plugin`. All the dependencies of the application should be available as OSGi bundles.

[[advanced.osgi.servlet.maven]]
== Minimal Vaadin Project For OSGi
Vaadin application for OSGi should be a valid bundle, i.e. it should be packaged as a `.jar` file, and it should have a proper OSGi manifest inside.
The easiest way to convert regular maven-based Vaadin application into a valid OSGi bundle consists of five steps:

* Change packaging type to `jar` in your `pom.xml`:
[source, xml]
----
<packaging>jar</packaging>
----
* Change the scope for all vaadin dependencies from default to `provided`, like this:
[source, xml]
----
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-server</artifactId>
<scope>provided</scope>
</dependency>
----
* Add OSGi-related dependencies to the project
[source, xml]
----
<groupId>com.vaadin</groupId>
<artifactId>vaadin-osgi-integration</artifactId>
<version>8.1.0.beta1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
<artifactId>osgi.core</artifactId>
<version>6.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
<artifactId>osgi.annotation</artifactId>
<version>6.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
<artifactId>osgi.cmpn</artifactId>
<version>6.0.0</version>
<scope>provided</scope>
</dependency>
----
* Setup necessary plugins for building the project:
[source, xml]
----
<build>
<plugins>
<plugin>
<groupId>biz.aQute.bnd</groupId>
<artifactId>bnd-maven-plugin</artifactId>
<version>3.3.0</version>
<executions>
<execution>
<goals>
<goal>bnd-process</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<archive>
<manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
</archive>
</configuration>
</plugin>
...
</plugins>
</build>
----
* Add bundle script (`bnd.bnd`) into the project root folder:
[source, text]
----
Bundle-Name: ${project.name}
Bundle-Version: ${project.version}
Bundle-SymbolicName: ${project.groupId}.${project.artifactId}
Export-Package: com.example.osgi.myapplication
Import-Package: *
Web-ContentPath: /myapp
----

[[advanced.osgi.servlet]]
== Publishing a Servlet With OSGi

@@ -64,3 +152,33 @@ Alternatively, an OSGi bundle activator or an SCR Component [interfacename]#@Act
----

In addition to these approaches, it is also possible to repackage all the static resources of an application to a single bundle and export the [filename]#/VAADIN# directory. This can be useful e.g. when migrating an old Vaadin OSGi application in an environment that does not support parallel deployments of multiple versions of the application.

[[advanced.osgi.deploy]]
== Deployment to OSGi container.

In order to have your application running under OSGi container, you need to have Vaadin framework bundles deployed, and then the application bundle can be deployed and started.
Here is a list of required Vaadin bundles, in order of loading:

* `jsoup-1.8.3.jar`
* `gentyref-1.2.0.vaadin1.jar`
* `vaadin-shared-8.1.x.jar`
* `vaadin-server-8.1.x.jar-8.1.x.jar`
* `vaadin-osgi-integration-8.1.x.jar`
* `vaadin-client-compiled-8.1.x.jar` (not required, if your project uses its own widgetset)
* `vaadin-themes-8.1.x.jar`

And here is a complete script to have Vaadin application up and running using link:https://karaf.apache.org/[Apache Karaf 4.0.8] console:

[source]
----
feature:install http
feature:install http-whiteboard
bundle:install -s mvn:org.jsoup/jsoup/1.8.3
bundle:install -s mvn:com.vaadin.external/gentyref/1.2.0.vaadin1
bundle:install -s mvn:com.vaadin/vaadin-shared/8.1.0
bundle:install -s mvn:com.vaadin/vaadin-server/8.1.0
bundle:install -s mvn:com.vaadin/vaadin-osgi-integration/8.1.0
bundle:install -s mvn:com.vaadin/vaadin-client-compiled/8.1.0
bundle:install -s mvn:com.vaadin/vaadin-themes/8.1.0
bundle:install -s file:path-to-the-application.jar
----

Loading…
Cancel
Save