{"id":32410,"date":"2016-02-01T15:00:45","date_gmt":"2016-02-01T13:00:45","guid":{"rendered":"http:\/\/examples.javacodegeeks.com\/?p=32410"},"modified":"2019-04-09T13:26:47","modified_gmt":"2019-04-09T10:26:47","slug":"vaadin-osgi-example","status":"publish","type":"post","link":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/vaadin\/vaadin-osgi-example\/","title":{"rendered":"Vaadin OSGI Example"},"content":{"rendered":"<p>OSGI: Open Services Gateway initiative, is an open standards organization that make the OSGi specification that describe a modular system and a service platform for Java, OSGi components comes in the forms of bundles for deployment, can be remotely installed, started, stopped, updated, and uninstalled without requiring a reboot, in this example I am going to create a Vaadin OSGi bundle and deploy it on an OSGi container.<\/p>\n<p>With OSGi you can have multiple Vaadin applications of different versions on the same container or you can have an application that is formed with multiple bundles like plug-ins and start or stop each module without affect the other parts of your program, whit this module architecture you can make applications less dependent of the Classpath. To run OSGi applications you need a container in our case we are going to use a ready to use container then create a simple Vaadin application and deploy it on that container.\n<\/p>\n<h2>1. The tools<\/h2>\n<ul>\n<li>Java JDK 8<\/li>\n<li>Latest Eclipse Mars for JEE<\/li>\n<li>Apache Karaf 4.0.4<\/li>\n<li>Eclipse Libra<\/li>\n<li>Vaadin 7.6.1<\/li>\n<\/ul>\n<h2> 2. Introduction<\/h2>\n<p>The OSGi container is an application capable of run OSGi bundles, it manages the lifecycle of the bundles and take care of the details of all applications running on the container, in this case Apache Karaf is my container and is where the Vaadin application is going to run, Eclipse Libra is a plug-in for Eclipse to help me create the Vaadin web application Bundle project. I am going to deploy the Vaadin web application on Karaf and see how it handles the lifecycle of the Vaadin Web Application.<\/p>\n<h2> 3. Prerequisites<\/h2>\n<ul>\n<li>JDK installed<\/li>\n<li>Eclipse Mars installed and working<\/li>\n<li>Vaadin Plugin installed<\/li>\n<\/ul>\n<h2> 4. Download Apache Karaf<\/h2>\n<p>Go to <a href=\"http:\/\/karaf.apache.org\/index\/community\/download.html#Karaf4.0.4\" target=\"_blank\" rel=\"noopener noreferrer\">Apache Karaf<\/a> and get apache-karaf-4.0.4.zip.<\/p>\n<p><figure id=\"attachment_32418\" aria-describedby=\"caption-attachment-32418\" style=\"width: 562px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/01-Download-Apache-Karaf.png\" rel=\"attachment wp-att-32418\"><img decoding=\"async\" src=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/01-Download-Apache-Karaf.png\" alt=\"01 Download Apache Karaf\" width=\"562\" height=\"255\" class=\"size-full wp-image-32418\" srcset=\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/01-Download-Apache-Karaf.png 562w, https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/01-Download-Apache-Karaf-300x136.png 300w\" sizes=\"(max-width: 562px) 100vw, 562px\" \/><\/a><figcaption id=\"caption-attachment-32418\" class=\"wp-caption-text\">01 Download Apache Karaf<\/figcaption><\/figure><\/p>\n<h2> 5. Install Apache Karaf<\/h2>\n<p>Uncompress the zip file into a well know location on your computer and you are ready to launch Karaf because is a batteries included OSGi container. Into the folder where you unzip Karaf there is a bin folder and inside it is the executable for Karaf, double click on it.<\/p>\n<p><figure id=\"attachment_32421\" aria-describedby=\"caption-attachment-32421\" style=\"width: 261px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/02-Launch-Karaf.png\" rel=\"attachment wp-att-32421\"><img decoding=\"async\" src=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/02-Launch-Karaf.png\" alt=\"02 Launch Karaf\" width=\"261\" height=\"352\" class=\"size-full wp-image-32421\" srcset=\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/02-Launch-Karaf.png 261w, https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/02-Launch-Karaf-222x300.png 222w\" sizes=\"(max-width: 261px) 100vw, 261px\" \/><\/a><figcaption id=\"caption-attachment-32421\" class=\"wp-caption-text\">02 Launch Karaf<\/figcaption><\/figure><\/p>\n<p>After you launch Karaf you get into the Karaf console.<\/p>\n<p><figure id=\"attachment_32427\" aria-describedby=\"caption-attachment-32427\" style=\"width: 596px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/03-Launch-Karaf.png\" rel=\"attachment wp-att-32427\"><img decoding=\"async\" src=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/03-Launch-Karaf.png\" alt=\"03 Launch Karaf\" width=\"596\" height=\"217\" class=\"size-full wp-image-32427\" srcset=\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/03-Launch-Karaf.png 596w, https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/03-Launch-Karaf-300x109.png 300w\" sizes=\"(max-width: 596px) 100vw, 596px\" \/><\/a><figcaption id=\"caption-attachment-32427\" class=\"wp-caption-text\">03 Launch Karaf<\/figcaption><\/figure><\/p>\n<p>In the Karaf console do the following command<\/p>\n<p><span style=\"text-decoration: underline\"><em>Web console<\/em><\/span><\/p>\n<pre class=\"brush:bash\">root@karaf&gt; features:install webconsole\n<\/pre>\n<p>with that command we install a web console that provides a graphical overview of the Karaf runtime.<br \/>\nyou can access the web console from the uri http:\/\/localhost:8181\/system\/console<\/p>\n<p>Now do the following command<\/p>\n<p><span style=\"text-decoration: underline\"><em>War support<\/em><\/span><\/p>\n<pre class=\"brush:bash\">karaf@root()&gt; feature:install war\n<\/pre>\n<p>this command install the WAR support to use war files as OSGi bundles.<br \/>\nNow we are done configuring Karaf to run our application.<\/p>\n<h2> 6. Install Eclipse Libra<\/h2>\n<p>Launch Eclipse and go to Help -&gt; Install New Software&#8230;<\/p>\n<p><figure id=\"attachment_32432\" aria-describedby=\"caption-attachment-32432\" style=\"width: 345px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/04-Install-Eclipse-Libra.png\" rel=\"attachment wp-att-32432\"><img decoding=\"async\" src=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/04-Install-Eclipse-Libra.png\" alt=\"04 Install New Software\" width=\"345\" height=\"400\" class=\"size-full wp-image-32432\" srcset=\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/04-Install-Eclipse-Libra.png 345w, https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/04-Install-Eclipse-Libra-259x300.png 259w\" sizes=\"(max-width: 345px) 100vw, 345px\" \/><\/a><figcaption id=\"caption-attachment-32432\" class=\"wp-caption-text\">04 Install New Software<\/figcaption><\/figure><\/p>\n<p>Now click on Add button<\/p>\n<p><figure id=\"attachment_32433\" aria-describedby=\"caption-attachment-32433\" style=\"width: 639px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/05-Addl-New-Software.png\" rel=\"attachment wp-att-32433\"><img decoding=\"async\" src=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/05-Addl-New-Software.png\" alt=\"05 Add New Software\" width=\"639\" height=\"467\" class=\"size-full wp-image-32433\" srcset=\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/05-Addl-New-Software.png 639w, https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/05-Addl-New-Software-300x219.png 300w\" sizes=\"(max-width: 639px) 100vw, 639px\" \/><\/a><figcaption id=\"caption-attachment-32433\" class=\"wp-caption-text\">05 Add New Software<\/figcaption><\/figure><div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<p>In Add repository window fill the name with a easy to remember name and in the Location put  http:\/\/download.eclipse.org\/libra\/releases and click ok<\/p>\n<p><figure id=\"attachment_32435\" aria-describedby=\"caption-attachment-32435\" style=\"width: 526px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/06-Add-Repository.png\" rel=\"attachment wp-att-32435\"><img decoding=\"async\" src=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/06-Add-Repository.png\" alt=\"06 Add Repository\" width=\"526\" height=\"251\" class=\"size-full wp-image-32435\" srcset=\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/06-Add-Repository.png 526w, https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/06-Add-Repository-300x143.png 300w\" sizes=\"(max-width: 526px) 100vw, 526px\" \/><\/a><figcaption id=\"caption-attachment-32435\" class=\"wp-caption-text\">06 Add Repository<\/figcaption><\/figure><\/p>\n<p>Select both packages and click finish<\/p>\n<p><figure id=\"attachment_32438\" aria-describedby=\"caption-attachment-32438\" style=\"width: 635px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/07-Install-Eclipse-Libra.png\" rel=\"attachment wp-att-32438\"><img decoding=\"async\" src=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/07-Install-Eclipse-Libra.png\" alt=\"07 Install Eclipse Libra\" width=\"635\" height=\"402\" class=\"size-full wp-image-32438\" srcset=\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/07-Install-Eclipse-Libra.png 635w, https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/07-Install-Eclipse-Libra-300x190.png 300w\" sizes=\"(max-width: 635px) 100vw, 635px\" \/><\/a><figcaption id=\"caption-attachment-32438\" class=\"wp-caption-text\">07 Install Eclipse Libra<\/figcaption><\/figure><\/p>\n<p>Accept the user agreement and follow the installation process, after that reboot Eclipse and we are done installing Eclipse Libra<\/p>\n<h2> 7. Create a Vaadin Project<\/h2>\n<p>From File -&gt; New -&gt; Other&#8230;, select Vaadin 7 Project and click next<\/p>\n<p><figure id=\"attachment_32440\" aria-describedby=\"caption-attachment-32440\" style=\"width: 521px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/08-New-Vaadin-project.png\" rel=\"attachment wp-att-32440\"><img decoding=\"async\" src=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/08-New-Vaadin-project.png\" alt=\"08 New Vaadin project\" width=\"521\" height=\"494\" class=\"size-full wp-image-32440\" srcset=\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/08-New-Vaadin-project.png 521w, https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/08-New-Vaadin-project-300x284.png 300w\" sizes=\"(max-width: 521px) 100vw, 521px\" \/><\/a><figcaption id=\"caption-attachment-32440\" class=\"wp-caption-text\">08 New Vaadin project<\/figcaption><\/figure><\/p>\n<p>Now name the project and click modify<\/p>\n<p><figure id=\"attachment_32441\" aria-describedby=\"caption-attachment-32441\" style=\"width: 518px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/09-Modify-Project.png\" rel=\"attachment wp-att-32441\"><img decoding=\"async\" src=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/09-Modify-Project.png\" alt=\"09 Modify Project\" width=\"518\" height=\"628\" class=\"size-full wp-image-32441\" srcset=\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/09-Modify-Project.png 518w, https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/09-Modify-Project-247x300.png 247w\" sizes=\"(max-width: 518px) 100vw, 518px\" \/><\/a><figcaption id=\"caption-attachment-32441\" class=\"wp-caption-text\">09 Modify Project<\/figcaption><\/figure><\/p>\n<p>On the Project Facets add &#8220;OSGi Bundle&#8221; option and hit OK<\/p>\n<p><figure id=\"attachment_32443\" aria-describedby=\"caption-attachment-32443\" style=\"width: 648px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/10-Project-Facets.png\" rel=\"attachment wp-att-32443\"><img decoding=\"async\" src=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/10-Project-Facets.png\" alt=\"10 Project Facets\" width=\"648\" height=\"664\" class=\"size-full wp-image-32443\" srcset=\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/10-Project-Facets.png 648w, https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/10-Project-Facets-293x300.png 293w\" sizes=\"(max-width: 648px) 100vw, 648px\" \/><\/a><figcaption id=\"caption-attachment-32443\" class=\"wp-caption-text\">10 Project Facets<\/figcaption><\/figure><\/p>\n<p>Hit next twice and check the option &#8220;Generate web.xml deployment descriptor&#8221;<\/p>\n<p><figure id=\"attachment_32444\" aria-describedby=\"caption-attachment-32444\" style=\"width: 522px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/11-Web-XML-Descriptor.png\" rel=\"attachment wp-att-32444\"><img decoding=\"async\" src=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/11-Web-XML-Descriptor.png\" alt=\"11 Web XML Descriptor\" width=\"522\" height=\"627\" class=\"size-full wp-image-32444\" srcset=\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/11-Web-XML-Descriptor.png 522w, https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/11-Web-XML-Descriptor-250x300.png 250w\" sizes=\"(max-width: 522px) 100vw, 522px\" \/><\/a><figcaption id=\"caption-attachment-32444\" class=\"wp-caption-text\">11 Web XML Descriptor<\/figcaption><\/figure><\/p>\n<p>Click finish and we have our brand new Vaadin project with OSGi support.<\/p>\n<h2> 8. Edit MANIFEST.MF<\/h2>\n<p>Edit the file  -&gt; WebContent -&gt; META-INF -&gt; MANIFEST.MF and make it as follows<\/p>\n<p><span style=\"text-decoration: underline\"><em>MANIFEST.MF<\/em><\/span><\/p>\n<pre class=\"brush:bash\">Manifest-Version: 1.0\nBundle-ManifestVersion: 2\nBundle-Name: VaadinOSGi\nBundle-SymbolicName: VaadinOSGi\nBundle-Version: 1.0.0.qualifier\nBundle-ClassPath: WEB-INF\/classes\/,\n WEB-INF\/lib\/vaadin-server-7.6.1.jar,\n WEB-INF\/lib\/vaadin-shared-7.6.1.jar,\n WEB-INF\/lib\/jsoup-1.8.3.jar,\n WEB-INF\/lib\/vaadin-client-compiled-7.6.1.jar,\n WEB-INF\/vaadin-themes-7.6.1.jar,\n WEB-INF\/vaadin-widgets-7.6.1.jar\nBundle-Vendor: JavaCodeGeeks\nBundle-RequiredExecutionEnvironment: JavaSE-1.8\nImport-Package: javax.el,\n javax.servlet,\n javax.servlet.http,\n javax.servlet.jsp,\n javax.servlet.jsp.el,\n javax.servlet.jsp.tagext\nWeb-ContextPath: \/VaadinOSGi\n<\/pre>\n<p>The MANIFEST.MF is used by the OSGi container and have all relevant information about our bundle, the important point for Vaadin here is the <code>Bundle-ClassPath<\/code>, where you put the libraries used by Vaadin, just because this is a minimal example only a few libraries are needed.<\/p>\n<h2> 9. Edit web.xml<\/h2>\n<p>Edit the web.xml descriptor in WebContent -&gt; WEB-INF folder of our project and modify as follows<\/p>\n<p><span style=\"text-decoration: underline\"><em>web.xml<\/em><\/span><\/p>\n<pre class=\"brush:xml\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n&lt;web-app xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" xmlns=\"http:\/\/java.sun.com\/xml\/ns\/javaee\" xsi:schemaLocation=\"http:\/\/java.sun.com\/xml\/ns\/javaee http:\/\/java.sun.com\/xml\/ns\/javaee\/web-app_3_0.xsd\" id=\"WebApp_ID\" version=\"3.0\"&gt;\n  \t&lt;display-name&gt;VaadinOsgi&lt;\/display-name&gt;\n  \t&lt;servlet&gt;\n    \t&lt;servlet-name&gt;VaadinOsgi&lt;\/servlet-name&gt;\n    \t&lt;servlet-class&gt;\n\t\t\tcom.vaadin.server.VaadinServlet\n\t\t&lt;\/servlet-class&gt;\n    \t&lt;init-param&gt;\n      \t\t&lt;param-name&gt;UI&lt;\/param-name&gt;\n      \t\t&lt;param-value&gt;com.example.vaadinosgi.VaadinosgiUI&lt;\/param-value&gt;\n    \t&lt;\/init-param&gt;\n  \t&lt;\/servlet&gt;\n  \t&lt;servlet-mapping&gt;\n    \t&lt;servlet-name&gt;VaadinOsgi&lt;\/servlet-name&gt;\n    \t&lt;url-pattern&gt;\/*&lt;\/url-pattern&gt;\n  \t&lt;\/servlet-mapping&gt;\n\t&lt;context-param&gt;\n\t  &lt;description&gt;Vaadin production mode&lt;\/description&gt;\n\t  &lt;param-name&gt;productionMode&lt;\/param-name&gt;\n\t  &lt;param-value&gt;true&lt;\/param-value&gt;\n\t&lt;\/context-param&gt;    \n&lt;\/web-app&gt;\n<\/pre>\n<p>Here we specify the entry point of our project also the servlet class inherited by our entry point class and set production mode for our application to avoid push errors, because is not supported by OSGi at the moment.[ulp id=&#8217;YBvYYzEYBUrADqmI&#8217;]<\/p>\n<h2> 10. Compile the Vaadin Theme<\/h2>\n<p>Is recommended in OSGi environments that you avoid the SCSS compiler that ships with Vaadin thats why we precompile the styles.css. In the Vaadin toolbar button choose the option &#8220;Compile Theme&#8221;.<\/p>\n<p><figure id=\"attachment_32452\" aria-describedby=\"caption-attachment-32452\" style=\"width: 563px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/12-Compile-theme.png\" rel=\"attachment wp-att-32452\"><img decoding=\"async\" src=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/12-Compile-theme.png\" alt=\"12 Compile theme\" width=\"563\" height=\"654\" class=\"size-full wp-image-32452\" srcset=\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/12-Compile-theme.png 563w, https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/12-Compile-theme-258x300.png 258w\" sizes=\"(max-width: 563px) 100vw, 563px\" \/><\/a><figcaption id=\"caption-attachment-32452\" class=\"wp-caption-text\">12 Compile theme<\/figcaption><\/figure><\/p>\n<p>in the Eclipse console you should get the output<\/p>\n<p><span style=\"text-decoration: underline\"><em>Compile theme output<\/em><\/span><\/p>\n<pre class=\"brush:bash\">Compiling theme vaadinosgi\nCompilation of theme vaadinosgi done in 3985 ms\n<\/pre>\n<h2> 11. Run Web Application on server<\/h2>\n<p>Right click on the project folder and choose the option Run As -&gt; 1 Run On Server<\/p>\n<p><figure id=\"attachment_32463\" aria-describedby=\"caption-attachment-32463\" style=\"width: 698px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/13-Run-On-Server.png\" rel=\"attachment wp-att-32463\"><img decoding=\"async\" src=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/13-Run-On-Server.png\" alt=\"13 Run On Server\" width=\"698\" height=\"560\" class=\"size-full wp-image-32463\" srcset=\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/13-Run-On-Server.png 698w, https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/13-Run-On-Server-300x241.png 300w\" sizes=\"(max-width: 698px) 100vw, 698px\" \/><\/a><figcaption id=\"caption-attachment-32463\" class=\"wp-caption-text\">13 Run On Server<\/figcaption><\/figure><\/p>\n<p>with this step you ensure your application is working, everything must work before you drop your application on a OSGi container, I&#8217;m using J2EE Preview to test this simple application.<\/p>\n<h2> 12. Export War file<\/h2>\n<p>Now we need to export the war file to put it on the OSGi container, right click on the project folder and click on the option Export-&gt; War File<\/p>\n<p><figure id=\"attachment_32464\" aria-describedby=\"caption-attachment-32464\" style=\"width: 569px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/14-Export-war.png\" rel=\"attachment wp-att-32464\"><img decoding=\"async\" src=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/14-Export-war.png\" alt=\"14 Export war\" width=\"569\" height=\"334\" class=\"size-full wp-image-32464\" srcset=\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/14-Export-war.png 569w, https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/14-Export-war-300x176.png 300w\" sizes=\"(max-width: 569px) 100vw, 569px\" \/><\/a><figcaption id=\"caption-attachment-32464\" class=\"wp-caption-text\">14 Export war<\/figcaption><\/figure><\/p>\n<p>now choose a well know location on your hard disk and click finish<\/p>\n<p><figure id=\"attachment_32465\" aria-describedby=\"caption-attachment-32465\" style=\"width: 536px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/15-War-export-options.png\" rel=\"attachment wp-att-32465\"><img decoding=\"async\" src=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/15-War-export-options.png\" alt=\"15 War export options\" width=\"536\" height=\"431\" class=\"size-full wp-image-32465\" srcset=\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/15-War-export-options.png 536w, https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/15-War-export-options-300x241.png 300w\" sizes=\"(max-width: 536px) 100vw, 536px\" \/><\/a><figcaption id=\"caption-attachment-32465\" class=\"wp-caption-text\">15 War export options<\/figcaption><\/figure><\/p>\n<h2> 13. The karaf web console<\/h2>\n<p>Run Karaf if not running as previously mentioned and open your browser at http:\/\/localhost:8181\/system\/console\/bundles, click on the button Install\/Update&#8230; to install our war bundle, remember war files can work as a bundle here just because we installed Karaf war support.<\/p>\n<p><figure id=\"attachment_32466\" aria-describedby=\"caption-attachment-32466\" style=\"width: 782px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/16-Karaf-Web-Console.png\" rel=\"attachment wp-att-32466\"><img decoding=\"async\" src=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/16-Karaf-Web-Console.png\" alt=\"16 Karaf Web Console\" width=\"782\" height=\"498\" class=\"size-full wp-image-32466\" srcset=\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/16-Karaf-Web-Console.png 782w, https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/16-Karaf-Web-Console-300x191.png 300w, https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/16-Karaf-Web-Console-768x489.png 768w\" sizes=\"(max-width: 782px) 100vw, 782px\" \/><\/a><figcaption id=\"caption-attachment-32466\" class=\"wp-caption-text\">16 Karaf Web Console<\/figcaption><\/figure><\/p>\n<h2> 14. Install the Vaadin bundle<\/h2>\n<p>Choose the war file and then click Install or update, And now our war file should be on the bundles list, just locate it scrolling down<\/p>\n<p><figure id=\"attachment_32467\" aria-describedby=\"caption-attachment-32467\" style=\"width: 702px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/17-Bundles-list.png\" rel=\"attachment wp-att-32467\"><img decoding=\"async\" src=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/17-Bundles-list.png\" alt=\"17 Bundles list\" width=\"702\" height=\"338\" class=\"size-full wp-image-32467\" srcset=\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/17-Bundles-list.png 702w, https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/17-Bundles-list-300x144.png 300w\" sizes=\"(max-width: 702px) 100vw, 702px\" \/><\/a><figcaption id=\"caption-attachment-32467\" class=\"wp-caption-text\">17 Bundles list<\/figcaption><\/figure><\/p>\n<h2> 15. Run the bundle<\/h2>\n<p>Click on the arrow button on our bundle application row of the bundles list and it should change the lifecycle state from Installed to Active, then go to menu Main option Http to see the Karaf web contexts<\/p>\n<p><figure id=\"attachment_32472\" aria-describedby=\"caption-attachment-32472\" style=\"width: 476px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/18-HTTP-Bundles.png\" rel=\"attachment wp-att-32472\"><img decoding=\"async\" src=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/18-HTTP-Bundles.png\" alt=\"18 HTTP Bundles\" width=\"476\" height=\"304\" class=\"size-full wp-image-32472\" srcset=\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/18-HTTP-Bundles.png 476w, https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/18-HTTP-Bundles-300x192.png 300w\" sizes=\"(max-width: 476px) 100vw, 476px\" \/><\/a><figcaption id=\"caption-attachment-32472\" class=\"wp-caption-text\">18 HTTP Bundles<\/figcaption><\/figure><\/p>\n<p>The example application must be in the list of http contexts and you can run it clicking on its web context link<\/p>\n<p><figure id=\"attachment_32474\" aria-describedby=\"caption-attachment-32474\" style=\"width: 728px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/19-Karaf-Http-Contexts.png\" rel=\"attachment wp-att-32474\"><img decoding=\"async\" src=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/19-Karaf-Http-Contexts.png\" alt=\"19 Karaf Http Contexts\" width=\"728\" height=\"455\" class=\"size-full wp-image-32474\" srcset=\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/19-Karaf-Http-Contexts.png 728w, https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/19-Karaf-Http-Contexts-300x188.png 300w\" sizes=\"(max-width: 728px) 100vw, 728px\" \/><\/a><figcaption id=\"caption-attachment-32474\" class=\"wp-caption-text\">19 Karaf Http Contexts<\/figcaption><\/figure><\/p>\n<p>the Vaadin bundle should be running on the OSGi Container<\/p>\n<p><figure id=\"attachment_32476\" aria-describedby=\"caption-attachment-32476\" style=\"width: 588px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/20-Application-running.png\" rel=\"attachment wp-att-32476\"><img decoding=\"async\" src=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/20-Application-running.png\" alt=\"20 Application running\" width=\"588\" height=\"330\" class=\"size-full wp-image-32476\" srcset=\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/20-Application-running.png 588w, https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/20-Application-running-300x168.png 300w\" sizes=\"(max-width: 588px) 100vw, 588px\" \/><\/a><figcaption id=\"caption-attachment-32476\" class=\"wp-caption-text\">20 Application running<\/figcaption><\/figure><\/p>\n<p>If the application is not running or something went wrong you can check the errors on the Karaf log, placed in the [Karaf Install Directory] -&gt; data -&gt; log -&gt; karaf.log<\/p>\n<h2> 16. Conclusion<\/h2>\n<p>OSGi could be an option to deploy Vaadin applications of different version, sometimes on the real world you get a programs versions labyrinth, each with different requirements and a clean solution for these cases could be OSGi.<\/p>\n<h2> 17. Download the Source Code<\/h2>\n<div class=\"download\"><strong>Download<\/strong><br \/>\nYou can download the Eclipse project here: <strong><a href=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/VaadinOSGi.zip\">VaadinOSGi<\/a><\/strong><\/div>\n","protected":false},"excerpt":{"rendered":"<p>OSGI: Open Services Gateway initiative, is an open standards organization that make the OSGi specification that describe a modular system and a service platform for Java, OSGi components comes in the forms of bundles for deployment, can be remotely installed, started, stopped, updated, and uninstalled without requiring a reboot, in this example I am going &hellip;<\/p>\n","protected":false},"author":77,"featured_media":33079,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1358],"tags":[1266,1000,1265],"class_list":["post-32410","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-vaadin","tag-jee","tag-osgi","tag-vaadin"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Vaadin OSGI Example - Java Code Geeks<\/title>\n<meta name=\"description\" content=\"OSGI: Open Services Gateway initiative, is an open standards organization that make the OSGi specification that describe a modular system and a service\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/vaadin\/vaadin-osgi-example\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Vaadin OSGI Example - Java Code Geeks\" \/>\n<meta property=\"og:description\" content=\"OSGI: Open Services Gateway initiative, is an open standards organization that make the OSGi specification that describe a modular system and a service\" \/>\n<meta property=\"og:url\" content=\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/vaadin\/vaadin-osgi-example\/\" \/>\n<meta property=\"og:site_name\" content=\"Examples Java Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/javacodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2016-02-01T13:00:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-04-09T10:26:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/vaadin-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Jesus Boadas\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@jboadas\" \/>\n<meta name=\"twitter:site\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jesus Boadas\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/vaadin\/vaadin-osgi-example\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/vaadin\/vaadin-osgi-example\/\"},\"author\":{\"name\":\"Jesus Boadas\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/#\/schema\/person\/506f9c2b38156c7f94bba77757206dd7\"},\"headline\":\"Vaadin OSGI Example\",\"datePublished\":\"2016-02-01T13:00:45+00:00\",\"dateModified\":\"2019-04-09T10:26:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/vaadin\/vaadin-osgi-example\/\"},\"wordCount\":1262,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/vaadin\/vaadin-osgi-example\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/vaadin-logo.jpg\",\"keywords\":[\"Jee\",\"OSGi\",\"Vaadin\"],\"articleSection\":[\"Vaadin\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/vaadin\/vaadin-osgi-example\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/vaadin\/vaadin-osgi-example\/\",\"url\":\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/vaadin\/vaadin-osgi-example\/\",\"name\":\"Vaadin OSGI Example - Java Code Geeks\",\"isPartOf\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/vaadin\/vaadin-osgi-example\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/vaadin\/vaadin-osgi-example\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/vaadin-logo.jpg\",\"datePublished\":\"2016-02-01T13:00:45+00:00\",\"dateModified\":\"2019-04-09T10:26:47+00:00\",\"description\":\"OSGI: Open Services Gateway initiative, is an open standards organization that make the OSGi specification that describe a modular system and a service\",\"breadcrumb\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/vaadin\/vaadin-osgi-example\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/vaadin\/vaadin-osgi-example\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/vaadin\/vaadin-osgi-example\/#primaryimage\",\"url\":\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/vaadin-logo.jpg\",\"contentUrl\":\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/vaadin-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/vaadin\/vaadin-osgi-example\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/examples.javacodegeeks.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java Development\",\"item\":\"https:\/\/examples.javacodegeeks.com\/category\/java-development\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Enterprise Java\",\"item\":\"https:\/\/examples.javacodegeeks.com\/category\/java-development\/enterprise-java\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Vaadin\",\"item\":\"https:\/\/examples.javacodegeeks.com\/category\/java-development\/enterprise-java\/vaadin\/\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"Vaadin OSGI Example\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/#website\",\"url\":\"https:\/\/examples.javacodegeeks.com\/\",\"name\":\"Java Code Geeks\",\"description\":\"Java Examples and Code Snippets\",\"publisher\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/#organization\"},\"alternateName\":\"JCG\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/examples.javacodegeeks.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\/\/examples.javacodegeeks.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"contentUrl\":\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/javacodegeeks\",\"https:\/\/x.com\/javacodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/#\/schema\/person\/506f9c2b38156c7f94bba77757206dd7\",\"name\":\"Jesus Boadas\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/10\/Jesus-Boadas_avatar_1476120926-96x96.jpg\",\"contentUrl\":\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/10\/Jesus-Boadas_avatar_1476120926-96x96.jpg\",\"caption\":\"Jesus Boadas\"},\"description\":\"I'm a self taught programmer, I began programming back in 1991 using an IBM A10 mainframe with Pascal an Assembler IBM 360\/70 emulator and Turbo C on a X86 PC, since that I work for the banking industry with emerging technologies like Fox Pro, Visual Fox Pro, Visual Basic, Visual C++, Borland C++, lately I moved out to the Airline industry, leading designing and programming in-house web applications with Flex, Actionscript, PHP, Python and Rails and in the last 7 years I focused all my work in Java, working on Linux servers using GlassFish, TomCat, Apache and MySql.\",\"sameAs\":[\"http:\/\/www.javacodegeeks.com\/\",\"https:\/\/ve.linkedin.com\/in\/jesus-boadas\",\"https:\/\/x.com\/jboadas\"],\"url\":\"https:\/\/examples.javacodegeeks.com\/author\/jesus-boadas\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Vaadin OSGI Example - Java Code Geeks","description":"OSGI: Open Services Gateway initiative, is an open standards organization that make the OSGi specification that describe a modular system and a service","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/vaadin\/vaadin-osgi-example\/","og_locale":"en_US","og_type":"article","og_title":"Vaadin OSGI Example - Java Code Geeks","og_description":"OSGI: Open Services Gateway initiative, is an open standards organization that make the OSGi specification that describe a modular system and a service","og_url":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/vaadin\/vaadin-osgi-example\/","og_site_name":"Examples Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_published_time":"2016-02-01T13:00:45+00:00","article_modified_time":"2019-04-09T10:26:47+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/vaadin-logo.jpg","type":"image\/jpeg"}],"author":"Jesus Boadas","twitter_card":"summary_large_image","twitter_creator":"@jboadas","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Jesus Boadas","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/vaadin\/vaadin-osgi-example\/#article","isPartOf":{"@id":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/vaadin\/vaadin-osgi-example\/"},"author":{"name":"Jesus Boadas","@id":"https:\/\/examples.javacodegeeks.com\/#\/schema\/person\/506f9c2b38156c7f94bba77757206dd7"},"headline":"Vaadin OSGI Example","datePublished":"2016-02-01T13:00:45+00:00","dateModified":"2019-04-09T10:26:47+00:00","mainEntityOfPage":{"@id":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/vaadin\/vaadin-osgi-example\/"},"wordCount":1262,"commentCount":0,"publisher":{"@id":"https:\/\/examples.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/vaadin\/vaadin-osgi-example\/#primaryimage"},"thumbnailUrl":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/vaadin-logo.jpg","keywords":["Jee","OSGi","Vaadin"],"articleSection":["Vaadin"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/vaadin\/vaadin-osgi-example\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/vaadin\/vaadin-osgi-example\/","url":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/vaadin\/vaadin-osgi-example\/","name":"Vaadin OSGI Example - Java Code Geeks","isPartOf":{"@id":"https:\/\/examples.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/vaadin\/vaadin-osgi-example\/#primaryimage"},"image":{"@id":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/vaadin\/vaadin-osgi-example\/#primaryimage"},"thumbnailUrl":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/vaadin-logo.jpg","datePublished":"2016-02-01T13:00:45+00:00","dateModified":"2019-04-09T10:26:47+00:00","description":"OSGI: Open Services Gateway initiative, is an open standards organization that make the OSGi specification that describe a modular system and a service","breadcrumb":{"@id":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/vaadin\/vaadin-osgi-example\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/vaadin\/vaadin-osgi-example\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/vaadin\/vaadin-osgi-example\/#primaryimage","url":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/vaadin-logo.jpg","contentUrl":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/01\/vaadin-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/vaadin\/vaadin-osgi-example\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/examples.javacodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Java Development","item":"https:\/\/examples.javacodegeeks.com\/category\/java-development\/"},{"@type":"ListItem","position":3,"name":"Enterprise Java","item":"https:\/\/examples.javacodegeeks.com\/category\/java-development\/enterprise-java\/"},{"@type":"ListItem","position":4,"name":"Vaadin","item":"https:\/\/examples.javacodegeeks.com\/category\/java-development\/enterprise-java\/vaadin\/"},{"@type":"ListItem","position":5,"name":"Vaadin OSGI Example"}]},{"@type":"WebSite","@id":"https:\/\/examples.javacodegeeks.com\/#website","url":"https:\/\/examples.javacodegeeks.com\/","name":"Java Code Geeks","description":"Java Examples and Code Snippets","publisher":{"@id":"https:\/\/examples.javacodegeeks.com\/#organization"},"alternateName":"JCG","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/examples.javacodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/examples.javacodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/examples.javacodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/examples.javacodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/examples.javacodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/javacodegeeks","https:\/\/x.com\/javacodegeeks"]},{"@type":"Person","@id":"https:\/\/examples.javacodegeeks.com\/#\/schema\/person\/506f9c2b38156c7f94bba77757206dd7","name":"Jesus Boadas","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/examples.javacodegeeks.com\/#\/schema\/person\/image\/","url":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/10\/Jesus-Boadas_avatar_1476120926-96x96.jpg","contentUrl":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2016\/10\/Jesus-Boadas_avatar_1476120926-96x96.jpg","caption":"Jesus Boadas"},"description":"I'm a self taught programmer, I began programming back in 1991 using an IBM A10 mainframe with Pascal an Assembler IBM 360\/70 emulator and Turbo C on a X86 PC, since that I work for the banking industry with emerging technologies like Fox Pro, Visual Fox Pro, Visual Basic, Visual C++, Borland C++, lately I moved out to the Airline industry, leading designing and programming in-house web applications with Flex, Actionscript, PHP, Python and Rails and in the last 7 years I focused all my work in Java, working on Linux servers using GlassFish, TomCat, Apache and MySql.","sameAs":["http:\/\/www.javacodegeeks.com\/","https:\/\/ve.linkedin.com\/in\/jesus-boadas","https:\/\/x.com\/jboadas"],"url":"https:\/\/examples.javacodegeeks.com\/author\/jesus-boadas\/"}]}},"_links":{"self":[{"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/32410","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/users\/77"}],"replies":[{"embeddable":true,"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=32410"}],"version-history":[{"count":0,"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/32410\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/media\/33079"}],"wp:attachment":[{"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/media?parent=32410"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=32410"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=32410"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}