]> source.dussan.org Git - vaadin-framework.git/commitdiff
Documented minimal set of OSGi bundles (#9489)
authorIlia Motornyi <elmot@vaadin.com>
Wed, 26 Jul 2017 10:22:01 +0000 (13:22 +0300)
committerHenri Sara <henri.sara@gmail.com>
Wed, 26 Jul 2017 10:22:01 +0000 (13:22 +0300)
documentation/advanced/advanced-osgi.asciidoc

index 5f38bdb3ac91a9a72d2b9a7f708179345dff0ed3..0cb7a57539c15a6e40461d24d9db26899ed8427d 100644 (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
+----