123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315 |
- ---
- title: Using Vaadin In IBM Domino
- order: 7
- layout: page
- ---
-
- [[using-vaadin-in-ibm-domino]]
- = Using Vaadin In IBM Domino
-
- Vaadin can be used as a UI technology in Domino. This page will contain
- the instruction how to setup the development environment and to get
- started with your first Vaadin app in Domino.
-
- The steps for setting up XPages SDK are:
-
- 1. Download the
- http://www.openntf.org/main.nsf/project.xsp?r=project/XPages%20SDK%20for%20Eclipse%20RCP/releases/0C60A1BFF5F40FD586257D8D005AA593[XPages
- SDK for Luna and above from OpenNTF]
- 2. In Eclipse, from the Help menu select *Install New Software….*
- 3. Select *Add…*, then choose *Archive…* and navigate to the zip file
- downloaded. +
- image:https://lh3.googleusercontent.com/PznhvZ1_SL6oJAm_J7BDsd0uBRHK7HDgCm6XJThdSRrPxDymwjYWOxbDpJ5Kt_5VIOIR-SP4Zl9KDAwCG0wzWni1iTwK8FUcmT8P_mYo4GxdtGjPZS4D8Y9pQus3dHM-kNeaRmfChg[Add XPages repository]
- 4. You will need to deselect *Group items by category*. Two features
- will show. The first includes sources, so select the second and click
- *Next*. +
- image:https://lh6.googleusercontent.com/PcTpwSQ-XpG-6c51FQ0W2upuK7XTNmawdi8vVgMb31pCBUg8Lt1oInKXT7r7o21Qjj_KJtie3yLxtPvGtCnltuNwGtj42ChuMEJBkqys8nt3KCmilFydpm6iFrme6Ro-FL4uZtUjkA[Select features]
- 5. Accept the terms and finish the dialog. You will be prompted to
- restart Eclipse to complete the install.
- 6. Select *Window* > *Preferences* (on Mac the location is *Eclipse* >
- *Preferences*). In the XPages SDK category tick *Automatically create
- JRE* and point to your local Notes and Domino installs. Then click
- *Apply*. +
- image:https://lh4.googleusercontent.com/22p8lT8-LrVTSKMDM0rpK2rFJT2EVfAuT62DyTYu6-x_eeddy6pEm1Io1haYlbGMwIE6PY8YRAUIEw0HQkXcHs6sNdnxkguXO4vv5VRKnoWUulDC6t46oDYI8Y9EjraTEV-dDHT6Wg[Select XPages SDK]
- 7. In the *Java* > *Installed JREs* category you should now have two
- additional options, “XPages Domino JRE” and “XPages Notes JRE”. Under
- *Plug-in Development* > *Target Platform* click *Add…*. Select the
- *Domino Install Target* template and complete. +
- image:https://lh5.googleusercontent.com/q0i66CSxHHvtQHXX4d-sq6AzElKUH_Lj-D9bg2awQL0Gn3WkcW_eTC7p_WBL94GUpB7ohEGw_i33Mk9K-q8wJ-2F5cguXimdrcCJxkELNLYC1FBzmDsx6FJo3-7wotvPdPGYVq_EeA[Configure target definition]
- 8. Apply this as the target platform. +
- image:https://lh6.googleusercontent.com/bguj0lMgODnG96vnU-RyBXCpz-FsodyAuvR6E-X3AsOoi4jC5iEilOtfssxk_Mwl3Ks1RPIbm6Pu6VzjmhOAnaL5c219wStTvw8cGKlG3pKSCVuSCcqHmHHpAxDHqK9c8TYT18siGA[Apply target definition]
-
- If you do not have a Domino server installed, there is an alternative
- approach. However, to test your OSGi plugin, you will need to create a
- Feature project, add the Plugin to that feature, then create an Update
- Site Project, add the feature to the update site, build and export. Then
- you will need to import that into an Update Site database on your
- server. This is the same process for creating and testing any other OSGi
- plugin on the server, such as XPages Extension Library.
-
- 1. Download the
- http://www.openntf.org/main.nsf/project.xsp?r=project/XPages%20SDK%20for%20Eclipse%20RCP/releases/0C60A1BFF5F40FD586257D8D005AA593[IBM
- Domino Update Site for Build Management from OpenNTF]. This is basically
- a zip file that contains features and plugins required for Maven and
- Tycho development in Eclipse, but also has all the dependencies required
- for Eclipse.
- 2. In Eclipse, go to *Window* > *Preferences* (on Mac the location is
- *Eclipse* > *Preferences*). Then go to *Plug-in Development* > *Target
- Platform*.
- 3. Edit the existing target platform configuration and in the dialog,
- click *Add…*, then *Directory*, then Next. Browse to and select the
- folder where you extracted the Update Site.> +
- image:https://lh5.googleusercontent.com/H2SiM2GdW9GYFzX_Az1Y7S_KAPnxYaGxwludqlqQoT3P1oVRDNxlC53uTt6SIrtQkPn42hr7yYqaJPK3hY9yF7BVeH8dPdwknzwLdeTIGgOXToWkKhy4smxg0hucyt3aWbmtjFpsgg[Add content]
- 4. The current release of Domino, 9.0.1, only supports Java 1.6. The
- next release, probably called Domino 9.0.2 and expected to ship first
- half 2016, is expected to include Java 1.8. But in the meantime, it’s
- best to set the JRE accordingly. In the preferences, go to *Java* >
- *Installed JREs* category.
- 5. *Add…*, *Standard VM*, then *Next* +
- image:https://lh6.googleusercontent.com/CGTOZTDGlIzgLNWn-1gTnrmhl7knp3SM2up9CX1cknk4Fyu5NfzQXjBDu2_yBz6gfq2HBppWH4gessWitIqUMOW793v_E7VekqUPJSAw0lVXj0inSusqi7gzjw6NjRsIDwJqvirjDA[Add JRE]
- 6. Click *Directory* and browse to your IBM Notes install’s “jvm”
- library. Give it an appropriate name and click *Finish*. Alternatively,
- if you don’t have IBM Notes installed on the development environment,
- download Java SE 6 SDK from Oracle. +
- image:https://lh5.googleusercontent.com/ipTTRFnUl_Ew0UE0X7XOaqqGcjEwUMAosAY6LDJ0_XZg8d7TyjsnRmDXDjGY3yrCOZ_54q9a23eqKZU0G__HwLKlglRxw5XeW2eDHvKPsgBpRu7YKcP46nKL_2KcCN4ljt1F3NAlFw[Configure JRE]
-
- [[setting-up-vaadin]]
- Setting up Vaadin
- ^^^^^^^^^^^^^^^^^
-
- Eclipse has a set of Vaadin plugins that can easily be installed to set
- up your environment.
-
- 1. *Select *Help* > *Eclipse Marketplace…*.*
- 2. Search for "Vaadin" amd install the**Vaadin Plugin for Eclipse** +
- image:https://lh4.googleusercontent.com/SpgGN3m6aFksfRJG47RVBg4qi5D7r9dhfaIUwHkm3A8TLfkF6M2farq2ZZf-zvjZakrNl1wALHHqGtiP6GNoVyIFHJs9Dpr9Tt3yqtWS6TwFMN1qsJ47o3T4UqU-G1SW0KCIbQGBnA[Select Vaadin plugin]
- 3. The options to install will include the *Vaadin Designer*, so leave
- all selected, confirm and accept the license. You will be prompted to
- restart Eclipse to complete the install.
-
- [[hello-world-example]]
- Hello World Example
- ^^^^^^^^^^^^^^^^^^^
-
- Now the development environment is set up, it’s time to create a Hello
- World application. But this one will not just print “Hello World” to the
- browser, instead it will add in the other key aspect, integrating with
- Domino. Maven is a useful tool for loading dependencies automatically,
- but will require the
- http://www.openntf.org/main.nsf/project.xsp?r=project/IBM%20Domino%20Update%20Site%20for%20Build%20Management[IBM
- Domino Update Site for Build Management] mentioned earlier. So at this
- point the approach will just create a simple non-Mavenized plugin.
-
- 1. In Eclipse, select *File* > *New* > *Plug-in Project* and give it a
- name. As an OSGi plugin, tell it to run with the OSGi framework
- “Equinox”.
- image:img/domino1.png[1]
-
- 2. Until the next release of Domino is out, the execution environment
- needs to be changed to Java 1.6. Then finish – the Eclipse perspective
- used for development is not significant at this stage.
- image:img/domino2.png[2]
-
- 3. The MANIFEST.MF will be opened and some additional configuration is
- required. The plugin should be set as a singleton on the Overview tab.
- image:img/domino3.png[3]
-
- 4. On the Dependencies tab some plugins and packages need loading for
- OSGi and Domino, as below.
- image:img/domino4.png[4]
-
- 5. Back on the Overview tab, click the Extension Points link and
- confirm you want to display the Extension and Extension Point pages.
- image:img/domino4.png[5]
-
- 6. On the Extensions tab, click *Add…* and choose
- `com.ibm.pvc.webcontainer.application`.
- image:img/domino6.png[6]
-
- 7. Set the contextRoot to “/helloVaadin”.
- image:img/domino7.png[7]
-
- 8. Right-click on *com.ibm.pvc.webcontainer.application* and select
- *New* > *contentLocation*. Set it to “WebContent”. These two steps can
- be done by manually typing the relevant XML onto the plugin.xml tab and
- I would recommend you loop at what the resulting XML is.
- image:img/domino8.png[8]
-
- 9. Next download the Vaadin jar files that will be needed from the
- https://vaadin.com/download#direct-download[Vaadin website]. The
- README.txt file outlines the steps required to add it to the project,
- but are repeated below.
-
- 10. Right-click the project and select *New* > *Folder* and call it
- WebContent/WEB-INF/lib.
- image:img/domino9.png[9]
-
- 11. Copy all jars to WebContent/WEB-INF/lib. Copy all jars in the lib
- folder to WebContent/WEB-INF/lib.
-
- 12. In the MANIFEST.MF, on the *Runtime* tab in the *Classpath* section,
- click *Add…* and add all the jar files added to WebContent/WEB-INF/lib.
- You must select the jars, not the folder. Then remember to move the “.”
- entry to the top of the list.
- image:img/domino10.png[10]
-
- 13. Right-click the WebContent/WEB-INF folder and select *New* > *File*.
- Call it web.xml.
-
- 14. Paste in the code below:
- +
- [source,xml]
- ....
- <?xml version="1.0" encoding="ISO-8859-1"?>
- <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
- <display-name>HelloVaadin</display-name>
- <welcome-file-list>
- <welcome-file>index.html</welcome-file>
- <welcome-file>index.htm</welcome-file>
- <welcome-file>index.jsp</welcome-file>
- <welcome-file>default.html</welcome-file>
- <welcome-file>default.htm</welcome-file>
- <welcome-file>default.jsp</welcome-file>
- </welcome-file-list>
- <context-param>
- <description>Vaadin production mode</description>
- <param-name>productionMode</param-name>
- <param-value>false</param-value>
- </context-param>
-
- <servlet>
- <servlet-name>HelloVaadinServlet</servlet-name>
- <servlet-class>com.vaadin.server.VaadinServlet</servlet-class>
- <init-param>
- <param-name>UI</param-name>
- <param-value>com.paulwithers.hellovaadin.HelloVaadinUI</param-value>
- </init-param>
- </servlet>
-
- <servlet-mapping>
- <servlet-name>HelloVaadinServlet</servlet-name>
- <url-pattern>/*</url-pattern>
- </servlet-mapping>
- </web-app>
- ....
- +
- This first block gives a list of default URL extensions accepted for
- mapping and tells the application to run in development mode. The
- <servlet> block gives the servlet name and points to a class we will
- create later which will initialise the NotesThread required for talking
- to Domino. The initParam points to a class we will create later that
- will be the entry point into the application.
-
- 15. Right-click com.paulwithers.hellovaadin and select *New* > *Vaadin
- Design*. You will need an evaluation or full license for Vaadin
- Designer. To get the trial license, log into the vaadin.com website and
- go to https://vaadin.com/designer#license-modal[https://vaadin.com/designer#license-modal.]
-
- 16. Call the design page “WelcomeDesign” and use the *Vertical Layout*
- template. Finish and confirm to switch to the Vaadin perspective.
-
- 17. Drag and drop a new Label onto the page (components are displayed
- alphabetically). In the Properties view set the name to “label1”. Click
- the ellipsis button next to *StyleName*. Select “LABEL_H2” and click
- *Add ->*, then OK. Change *ComponentAlignment* to “TOP_CENTER”. Save and
- close.
-
- 18. Switch back to the Plug-in Development perspective. This is better
- suited to plugin development. Note the “WelcomeDesign.html” and
- “WelcomeDesign.java” files. Review WelcomeDesign.java.
-
- 19. Right-click on com.paulwithers.hellovaadin and select *New* >
- *Class*. Call it WelcomeView and set the superclass as WelcomeDesign.
- image:img/domino12.png[12]
-
- 20. Add the following code to the class to extend the auto-generated class and to compute the value of label1.
- +
- [source,java]
- ....
- import com.ibm.domino.osgi.core.context.ContextInfo;
-
- public class WelcomeView extends WelcomeDesign {
- private static final long serialVersionUID = 1L;
-
- public WelcomeView() {
- super();
- try {
- label1.setValue("Welcome " +
- ContextInfo.getUserSession().getEffectiveUserName());
- } catch (final Exception e) {
- // TODO: handle exception
- }
- }
- }
- ....
-
- 21. You may get an error that the method Session.getEffectiveUserName()
- is not API. That can be fixed by amending the Java compiler settings, by
- changing the setting for forbidden reference to “Warning”.
- image:img/domino13.png[13]
-
- 22. Right-click on *src/com.paulwithers.hellovaadin* and select *New* >
- *Class*. Class it “HelloVaadinUI” and set the superclass as
- “com.vaadin.ui.UI”.
- image:img/domino14.png[14]
-
- 23. Add the following code to the class:
- +
- [source,java]
- ....
- import com.vaadin.server.VaadinRequest;
- import com.vaadin.ui.UI;
-
- public class HelloVaadinUI extends UI {
- @Override
- protected void init(VaadinRequest request) {
- final WelcomeView welcome = new WelcomeView();
- setContent(welcome);
- }
- }
- ....
- This creates an instance of the WelcomeView class just created and loads
- it to the page.
-
- 24. On the *Build* tab ensure META-INF, WebContent, plugin.xml, src are
- all ticked for Binary Build.
-
- 25. On the Overview tab, launch the *Organize Manifests Wizard* and
- complete.
- image:img/domino15.png[15]
-
- 26. Select *File* > *New* > *Feature Project*. Call it
- com.paulwithers.helloVaadinFeature.
- image:img/domino16.png[16]
-
- 27. Click Next and initialize from the com.paulwithers.helloVaadin
- plugin.
-
- 28. Select *File* > *New* > *Update Site Project*. Call it
- com.paulwithers.helloVaadinUpdate and click Finish. Click *Add Feature…*
- and select com.paulwithers.helloVaadinFeature. Click *Build All*.
-
- 29. Right-click com.paulwithers.helloVaadinUpdate and click *Export…*.
- Choose *General > File System*. You only need to select the site.xml.
- Export to an appropriate location.
- image:img/domino17.png[17]
-
- 30. In an Update Site database on the relevant server, import the update
- site by pointing to the site.xml.
- image:img/domino18.png[18]
- +
- As with any OSGi plugin, you will need to issue “restart task http”
- command to the server for the plugin to be available.
-
- 31. If you browse to the “helloVaadin” URL on the server (corresponding
- to the contextRoot in the plugin.xml), you should now see “Hello
- Anonymous” message.
- image:img/domino19.png[19]
-
- If you log in or prefix the contextRoot with the filepath of a database
- that does not allow anonymous access, you will see a welcome message for
- the current logged in user.
- image:img/domino20.png[20]
|