SlideShare une entreprise Scribd logo
1  sur  67
1 App, 2 Developers, 3 Servers:
Getting the Same
Application to run on
different servers
Mark Myers, LDC
René Winkelmeyer, midpoints GmbH (honorary)
Who Am I ? : Mark Myers
 Member of the London Developer Co-op http://www.londc.com
– A group of freelance developers that band together to build more
complex projects.
– IBM Connections, Domino, Mobile and Web development
– Hire me!
 Developer from a support background
 13+ years on Domino, 16+ years in IT
 Speaker at 5x Lotuspheres/Connects, 5 x UKLUGs, 1 x ILUG,
2 x BLUG/Engage

Honorary second presenter : René Winkelmeyer
 Head of Development at midpoints GmbH
– IBM Advanced Business Partner from Germany
http://www.midpoints.de
– Specialized in RCP development
– XPages development and building mobile infrastructures
– IBM Design Partner for Notes/Domino Next and Mobile
 OpenNTF Contributor
– File Navigator (http://filenavigator.openntf.org)
– Generic NSF View Widget for IBM Connections2 © 2013 IBM
Corporation

He is not always this grumpy
looking
What is this Session about?
 Its about being able to write a core app and deploy it on any server with a Java core
– It does not even need to be a Java app, this works just as well for pure client side websites using
popular client side JavaScript frameworks eg, AngluarJS, backbone.
– This also means you can use your preferred IDE, ie sublime text for AngularJS
 As IBM develops new apps and brings out new platforms, you want to be able to develop
for them without putting all your eggs in one basket (this is good for IBM as it lowers the
investment cost for partners to developer for their platforms)
 We used to take each new standard and framework and try and glue it to Domino, now we
can speed up that process and glue it to any part of the IBM stack. <cough> BlueMix
<cough> or even expand our apps to other providers
What Software are we using?
 IDE: Eclipse™ Luna for EE https://www.eclipse.org/downloads/packages/eclipse-ide-java-
ee-developers/lunasr1a
– Vaadin Plugin https://vaadin.com/eclipse
– Apache® Tomcat® V8 http://tomcat.apache.org/download-80.cgi
 IBM® Domino® 9.0.1
 IBM® WebSphere® 8.5.5 (Not the Liberty Profile, the full server as used by Connections)
BASIC APPLICATION
Basic Vaadin Application
 Why Use Vaadin for this demo?
– It is one of the best frameworks in terms of features ( both client side and server side logic)
– Easy for Domino People to pick up, as of all the current frameworks it seems to work the nearest
of Domino and Xpages.
– Uses a single servlet and deploys as a standard WAR application (Web application ARchive)
– Complex in terms of infrastructure (not a hello world platform)
– Its not a client end framework e.g AngularJS
Basic Vaadin Application
 Once you have added the Vaadin Plugin
 Select “File”  “New” and select “Vaadin
7 Project”
Basic Vaadin Application
 Give the Project a name and leave the Target runtime as
“<None>” and accept defaults on the rest of the options
 Accept the default build Directory
Basic Vaadin Application
 Select “Generate web.xml deployment descriptor”
 Accept the other defaults.
Basic Vaadin Application
 If this is your first time building a Vaadin App it will
download a load of backend framework stuff, don’t worry
just let it run. (we will come back to why that is important
later)
 You now have a clean
new WAR app, lets
deploy it.
APACHE SETUP
Apache: Setup
 Globally considered the baseline for Java Application Servers
 The Most popular Java Application Server on the Internet
– https://plumbr.eu/blog/most-popular-application-servers-in-2014
 Very easy going and light weight
Apache: Setup
 Download Tomcat from
http://tomcat.apache.org/download-
80.cgi
 Upzip the Download and place it
somewhere sensible.
Apache: Setup
 Go Back To Eclipse, Select the “Servers”
tab
 Click to the Link to Create a New Server
Config
Apache: Setup
 Select Apache / Tomcat v8.0 from the list
 Browse to the directory you unzipped
Tomcat to and select it.
Apache: Setup
 To deploy an app in eclipse, right click
on the application root
 Select “Run As”  “Run on Server”
Apache: Setup
 The “3ServerDemo” will be listed in
the Available column, add it to the
“Configured” column.
Apache: Setup
 Right click on the server in the “Server”
tab and select “Start”
Apache: Setup
 The Application in now running on
Apache
 Be still my beating heart part 1
WEBSPHERE SETUP
WebSphere: Setup
 The core of the IBM stack
 The Liberty profile is a very light weight version of the full WebSphere server.
– Perfect for local development.
– From the point of view of the type of applications we are discussing here WebSphere and the
liberty profile are interchangeable.
– We are not using it here just to prove a point as Connections development is one of our primary
use cases and Connections uses the full WebSphere server.
WebSphere: Setup
 We are assuming you have installed
WebSphere 8.5.5 locally
– A typical install accepting all defaults
 After that we will want to install the IBM
WebSphere plugin for Eclipse
 This is in the “Eclipse Marketplace” rather
than under the “Install New Software”
Websphere: Setup
 Search for IBM and select “install” on
“IBM WebSphere Application Server
V8.5x Developer Tools”
WebSphere: Setup
 You only need the “WebSphere
Application Server V8.5 Tools” but the
other tools are useful.
 Select “Confirm”.
Websphere: Setup
 Once the tools have installed and Eclipse
restarted.
 On the “Servers” tab right click, and
select “New”  Server
WebSphere: Setup
 Select “WebSphere Application Server V8.5”
 Accept All defaults
 Select “Finish”
WebSphere: Setup
 Browse to the servers AppServer directory (it
will auto fill the JRE Setting)
– Note: This JRE has to be a version equal or
higher than the Compile version of the
application
WebSphere: Setup
 You will find that when you try to
run the WAR app on WebSphere in
the same way as you did for
Tomcat that no applications will be
Listed
 You need to create a EAR wrapper
WebSphere: Setup
 Select “File”  “New”
 Pick “Java EE”  “Enterprise
Application Project”
WebSphere: Setup
 Give the EAR project a suitable name,
and select the “Target runtime”
 Click “Next”
WebSphere: Setup
 Now select the actual app that will be
inserted into the EAR application
 If you want to keep all the Application
settings within the core application then
do not select “Generate application.xml
deployment descriptor”
WebSphere: Setup
 Now you will find, that when you try to
run the application on WebSphere you
have a available Application.
WebSphere: Setup
 The Application in now running on
WebSphere
 Be still my beating heart part 2
WEBSPHERE SETUP
APPENDIX: CONNECTIONS
Connections: Setup
 The connections box can take any of the apps you build (Its just a WebSphere box after
all)
– Don’t forget that connections is a heavy duty application adding additional apps to the same box
has to be done carefully, make sure you work out the maximum load your app is going to add and
keep Admins informed.
– You should use the Connections API’s for most things but you DO gain access to the
Connections DB2 databases (by their well known JDBC names), and they grant you a great deal
of power and speed
• Do not do this without telling your admin.
M
Connections: Setup
 If you are adding a new app to connections with a new context i.e. the “directory” the site
runs in (in this case “3ServerDemo”)
 You will find the URL will not work when you first try and open the website.
 You will have to use wsadmin to re-sync the application servers
LCConfigService.checkInConfig("d:",AdminControl.getCell())
LCConfigService.updateConfig("versionStamp","")
Connections: Setup
 Integration at the users end is done with widgets, either the “Open Social” widget
standard or iwidgets
– See the slides for MAS202 to tell the difference.
 An Example of a BASIC “Open Social” wrapper, that you can use to point to your own
content within your own app
<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs title=“ServerDemo“ author_email=support@3ServerDemo.com height=“500“ width=“100%">
<Require feature="dynamic-height" />
</ModulePrefs>
<Content href="/3ServerDemo" type="url" view="canvas" /></Module>
Connections: Setup
 And a BASIC iwidget wrapper, that you can use to point to your own content within
your own app
<?xml version="1.0" encoding="UTF-8" ?>
<iw:iwidget name=“3ServerDemo" xmlns:iw="http://www.ibm.com/xmlns/prod/iWidget" iScope="htmlWidget" supportedModes="view" mode="view">
<iw:content mode="view">
<![CDATA[
<iframe src="/3ServerDemo/" scrolling="auto" width="100%" height="3000px" frameborder="0" scrolling="no"></iframe>
]]>
</iw:content>
</iw:iwidget>
Connections: Setup
 Put the iwidget xml file in the WEB-INF directory
 You can use this to add a widget to Connections with the URL
http://servername/3ServerDemo/iwidgetlink.xml
DOMINO SETUP
Domino: Setup
 Take advance of the latest frameworks while still being able to leverage all your existing
domino data and features with easy NSF data and security access.
 This has been done multiple times before 2 excellent reference presentations are:
– https://speakerdeck.com/sbasegmez/bp207-meet-the-java-application-server-you-already-own-
ibm-domin
– http://www.slideshare.net/fiorep/domino-osgi-development
Domino: Getting Existing Web Applications Running on Domino via OSGI
 Method 1 – Copy existing App components over then glue the app back into a new Plug in
Project
– Pros:
• Easy to work out what's going out (mixing project dependency's + OSGI is horrible)
• If you have resource conflicts caused by dependency injection tools, you might have to do an
export as WAR to get the jars matching entries in MANIFEST.MF
– Cons
• Not very elegant
 Method 2 - Migrate your Existing Application to a plug-in project
– Pros:
• Impressive and fast when it works.
– Cons:
• Horribly confusing to get right if you don’t know what your OSGI config should look like
Domino: Setup
 Lets do Method 1
 In Eclipse click “New”  “Plug-in Project”
Domino: Setup
 In Eclipse click “New”
 “Plug-in Project”
 Select “Equinox” as
your framework
 Generate an Activator
Domino: Setup - Update
 Next copy your “src” and “WebContent” from your
original project to
 This is only because we are using a Java backend
framework (worst Case scenario)
– If we were using only front end frameworks, you
would only have to copy the “WebContent”
Directory
Domino: Setup - Update
 Now Import the Notes.jar
– File  Import
– Select the file system and get
the Notes.jar file from the ext
directory
Domino: Setup - Update
 Your MANIFEST.MF will tend to take a lot of
work until you get used to it,
 Once you are happy with it, It is
recommended you just manually edit it
rather than using the GUI
The Jar files you copied over from your original project
Domino: Setup - Update
 Next to ensure you have all
required system libs, check the
facets view for both projects to
ensure they are the same
– Right click on the project root 
Properties and select Project
Facets
Domino: Setup - Update
 That will give you a valid project that can be used in conjunction with
– 1- A eclipse feature site
– 2- Then an eclipse update site
– 3- Then the Domino update site
 Be Still my beating heart part 3
I’m not going to go though it as
its been done in a presentation
every year for the last 3 years at
this conference. Zzzzzz
MULTI AUTHENTICATION
Multi Authentication
 With the increased emphasis on security due to recent breaches, your application often
has to deal with multiple forms of security.
 Despite common standards if you are going to support different servers you have to cater
to different authentication mediums.
 Once you have made the initial effort to handle different forms of authentication as dictated
by the server platforms, then adding multiple ones becomes progressively easier.
Multi Authentication
 Enterprise applications now often
compare poorly against
consumer websites which take
multiple forms of authentication.
Multi Authentication: Example
if (isDomino) {
Session userSession = DominoResource.INSTANCE.getUserSession(username.getValue(), password.getValue());
if (null == userSession || !userSession.isValid()) {
//Report system Error
} else {
AppSession appSession = SessionUtils.populateFromDominoSession(userSession)
}
} else {
LDAPLogon lDAPLogon = new LDAPLogon();
LdapContext userCTX = lDAPLogon.getUserCtx(username.getValue(), password.getValue());
if (null == userCTX) {
//Report system Error
} else {
LDAPUtils ldap = new LDAPUtils(username.getValue(), LDAPResource.INSTANCE.getCtx());
AppSession appSession = SessionUtils.populateFromLDAP(ldap)
}
Multi Authentication
 Pros
– Allows greater integration into a clients system.
– If a client is migrating from one system to another your systems will not be a bottleneck in the
process.
– Can allow you to log on to multiple systems simultaneously.
 Cons
– Can slow down the login process
– A systems wide unique identifier is sometimes hard to achieve
• You would not believe how many times email address is not suitable.
DATA ABSTRACTION
Data Abstraction
 Just about all data storage is actually an abstraction layer (such as http://hibernate.org/ )
 If you are considering support for multiple platforms, then providing your own functional
abstraction layer can be very useful.
– You design how you want the data to be handled in your app and deal with the actual nuts and
bold of storage latter, which makes your storage more agnostic.
 When doing a data abstraction, it is best to sit down and work out exactly how and what
you are wanting to store and read
 If you have created an API then its easy to use the same functions as a data abstraction
and vs versa, so you may have done all the hard work.
Data Abstraction
Create Order
Internal Order
Object
 Reference No
 Status
 Address
 Items
 Etc..
DB2 Order
Table
MongoDb
Collection
NSF
Database
Create DB2
Order
Create
MongoDb
Order
Create NSF
Order
Data Abstraction: Example
public OrderStatus createOrder(Order currentOrder, String requestingUser) {
try {
if (isDomino) {
return dominoStore.createOrder( currentOrder, requestingUser) ;
} else(isWebSphere) {
return db2Store.createOrder( currentOrder, requestingUser);
} else {
return mongoStore.createOrder( currentOrder, requestingUser);
}
} catch (Exception e) {
e.printStackTrace();
return OrderStatus.ORDER_CREATE_FAIL;
}
}
There is no mention of
database connections or
tables or SQL or sessions
or anything specific to a
single storage medium
Data Abstraction
 Pros
– Grants flexibility to changing backend storage
– Makes you think about storage rather than just stuffing data into a database
– Once you have done it once, its easy to reuse.
– Allows soft rollouts of new platforms.
– Easier to work on large teams as it separates workflow and storage.
 Cons
– Adding an extra field etc takes much longer.
– It can get complex and cause performance issues if done badly
• Think about the difference between real workflow and storage workflow eg search
– Different platforms can have features that another does not have (eg. Blob storage)
SUMMARY
Summary
 Given the speed that both frameworks and platforms change, you need to provide the most
flexibility you can without sacrificing functionality, all the while ensuring you can pivot if
needed.
– This can be seen in the mobile market where companies tying them selves to a single platform
limit their long term growth, the same rule applies to any application market.
 Gluing frameworks onto frameworks is both slow and clunky, taking a few steps back and
building your apps on as clean a system as possible means change is easier, and you can
get for more return on investment.
QUESTIONS?
René Winkelmeyer Online
 Company http://www.midpoints.de
– IBM Advanced Business Partner
 Blog http://blog.winkelmeyer.com
 Twitter @muenzpraeger
 Skype muenzpraeger
 LinkedIn https://www.linkedin.com/in/muenzpraeger
 Mail mail@winkelmeyer.com rene.winkelmeyer@midpoints.de
 Slide Share http://www.slideshare.net/muenzpraeger
Mark Myers Online
 Company http://www.londc.com
– Our Latest product http://www.LDCVia.com
 Blog http://www.stickfight.co.uk
 Twitter @stickfight
 Skype stickfight
 LinkedIn https://uk.linkedin.com/in/stickfight/
 Mail mark@energywins.co.uk mark@londc.com
Notices and Disclaimers
Copyright © 2015 by International Business Machines Corporation (IBM). No part of this document may be reproduced or transmitted in any form without written permission from IBM.
U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM.
Information in these presentations (including information relating to products that have not yet been announced by IBM) has been reviewed for accuracy as of the date of initial publication and could include
unintentional technical or typographical errors. IBM shall have no responsibility to update this information. THIS DOCUMENT IS DISTRIBUTED "AS IS" WITHOUT ANY WARRANTY, EITHER EXPRESS OR IMPLIED.
IN NO EVENT SHALL IBM BE LIABLE FOR ANY DAMAGE ARISING FROM THE USE OF THIS INFORMATION, INCLUDING BUT NOT LIMITED TO, LOSS OF DATA, BUSINESS INTERRUPTION, LOSS OF
PROFIT OR LOSS OF OPPORTUNITY. IBM products and services are warranted according to the terms and conditions of the agreements under which they are provided.
Any statements regarding IBM's future direction, intent or product plans are subject to change or withdrawal without notice.
Performance data contained herein was generally obtained in a controlled, isolated environments. Customer examples are presented as illustrations of how those customers have used IBM products and the results
they may have achieved. Actual performance, cost, savings or other results in other operating environments may vary.
References in this document to IBM products, programs, or services does not imply that IBM intends to make such products, programs or services available in all countries in which IBM operates or does business.
Workshops, sessions and associated materials may have been prepared by independent session speakers, and do not necessarily reflect the views of IBM. All materials and discussions are provided for informational
purposes only, and are neither intended to, nor shall constitute legal or other guidance or advice to any individual participant or their specific situation.
It is the customer’s responsibility to insure its own compliance with legal requirements and to obtain advice of competent legal counsel as to the identification and interpretation of any relevant laws and regulatory
requirements that may affect the customer’s business and any actions the customer may need to take to comply with such laws. IBM does not provide legal advice or represent or warrant that its services or products
will ensure that the customer is in compliance with any law.
Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products in connection with
this publication and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers
of those products. IBM does not warrant the quality of any third-party products, or the ability of any such third-party products to interoperate with IBM’s products. IBM EXPRESSLY DISCLAIMS ALL WARRANTIES,
EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
The provision of the information contained herein is not intended to, and does not, grant any right or license under any IBM patents, copyrights, trademarks or other intellectual property right.
IBM, the IBM logo, ibm.com, BrassRing®, Connections™, Domino®, Global Business Services®, Global Technology Services®, SmartCloud®, Social Business®, Kenexa®, Notes®, PartnerWorld®, Prove It!®,
PureSystems®, Sametime®, Verse™, Watson™, WebSphere®, Worklight®, are trademarks of International Business Machines Corporation, registered in many jurisdictions worldwide. Other product and service
names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the Web at "Copyright and trademark information" at: www.ibm.com/legal/copytrade.shtml.

Contenu connexe

Tendances

DEV-1430 IBM Connections Integration
DEV-1430 IBM Connections IntegrationDEV-1430 IBM Connections Integration
DEV-1430 IBM Connections IntegrationJesse Gallagher
 
Hnd201 Building Ibm Lotus Domino Applications With Ajax Plugins
Hnd201 Building Ibm Lotus Domino Applications With Ajax PluginsHnd201 Building Ibm Lotus Domino Applications With Ajax Plugins
Hnd201 Building Ibm Lotus Domino Applications With Ajax Pluginsdominion
 
Load Balancing, Failover and Scalability with ColdFusion
Load Balancing, Failover and Scalability with ColdFusionLoad Balancing, Failover and Scalability with ColdFusion
Load Balancing, Failover and Scalability with ColdFusionColdFusionConference
 
XPages101 - Building an XPages app - Lotusphere 2011
XPages101 - Building an XPages app - Lotusphere 2011XPages101 - Building an XPages app - Lotusphere 2011
XPages101 - Building an XPages app - Lotusphere 2011Tim Clark
 
Extension Library - Viagra for XPages
Extension Library - Viagra for XPagesExtension Library - Viagra for XPages
Extension Library - Viagra for XPagesUlrich Krause
 
AD503: XPages Mobile Development in IBM Domino 9.0.1 and Beyond
AD503: XPages Mobile Development in IBM Domino 9.0.1 and BeyondAD503: XPages Mobile Development in IBM Domino 9.0.1 and Beyond
AD503: XPages Mobile Development in IBM Domino 9.0.1 and BeyondTony McGuckin
 
Bp308 Ibm Lotus Domino Web Facelift Using Ajax And Dxl
Bp308 Ibm Lotus Domino Web Facelift Using Ajax And DxlBp308 Ibm Lotus Domino Web Facelift Using Ajax And Dxl
Bp308 Ibm Lotus Domino Web Facelift Using Ajax And Dxldominion
 
Web development with ASP.NET Web API
Web development with ASP.NET Web APIWeb development with ASP.NET Web API
Web development with ASP.NET Web APIDamir Dobric
 
Developing html5 mobile applications using cold fusion 11
Developing html5 mobile applications using cold fusion 11Developing html5 mobile applications using cold fusion 11
Developing html5 mobile applications using cold fusion 11ColdFusionConference
 
Joe Staner Zend Con 2008
Joe Staner Zend Con 2008Joe Staner Zend Con 2008
Joe Staner Zend Con 2008ZendCon
 
IBM Digital Experience Theme Customization
IBM Digital Experience Theme CustomizationIBM Digital Experience Theme Customization
IBM Digital Experience Theme CustomizationVan Staub, MBA
 
Proper Connections Development for Proper Domino Developers
Proper Connections Development for Proper Domino DevelopersProper Connections Development for Proper Domino Developers
Proper Connections Development for Proper Domino DevelopersMark Myers
 
Developing an aspnet web application
Developing an aspnet web applicationDeveloping an aspnet web application
Developing an aspnet web applicationRahul Bansal
 
GeneralMobile Hybrid Development with WordPress
GeneralMobile Hybrid Development with WordPressGeneralMobile Hybrid Development with WordPress
GeneralMobile Hybrid Development with WordPressGGDBologna
 
Training on webwroks1
Training on webwroks1Training on webwroks1
Training on webwroks1sumeettechno
 

Tendances (20)

DEV-1430 IBM Connections Integration
DEV-1430 IBM Connections IntegrationDEV-1430 IBM Connections Integration
DEV-1430 IBM Connections Integration
 
Hnd201 Building Ibm Lotus Domino Applications With Ajax Plugins
Hnd201 Building Ibm Lotus Domino Applications With Ajax PluginsHnd201 Building Ibm Lotus Domino Applications With Ajax Plugins
Hnd201 Building Ibm Lotus Domino Applications With Ajax Plugins
 
Load Balancing, Failover and Scalability with ColdFusion
Load Balancing, Failover and Scalability with ColdFusionLoad Balancing, Failover and Scalability with ColdFusion
Load Balancing, Failover and Scalability with ColdFusion
 
XPages101 - Building an XPages app - Lotusphere 2011
XPages101 - Building an XPages app - Lotusphere 2011XPages101 - Building an XPages app - Lotusphere 2011
XPages101 - Building an XPages app - Lotusphere 2011
 
Extension Library - Viagra for XPages
Extension Library - Viagra for XPagesExtension Library - Viagra for XPages
Extension Library - Viagra for XPages
 
AD503: XPages Mobile Development in IBM Domino 9.0.1 and Beyond
AD503: XPages Mobile Development in IBM Domino 9.0.1 and BeyondAD503: XPages Mobile Development in IBM Domino 9.0.1 and Beyond
AD503: XPages Mobile Development in IBM Domino 9.0.1 and Beyond
 
Bp308 Ibm Lotus Domino Web Facelift Using Ajax And Dxl
Bp308 Ibm Lotus Domino Web Facelift Using Ajax And DxlBp308 Ibm Lotus Domino Web Facelift Using Ajax And Dxl
Bp308 Ibm Lotus Domino Web Facelift Using Ajax And Dxl
 
Restful API's with ColdFusion
Restful API's with ColdFusionRestful API's with ColdFusion
Restful API's with ColdFusion
 
Web development with ASP.NET Web API
Web development with ASP.NET Web APIWeb development with ASP.NET Web API
Web development with ASP.NET Web API
 
Developing html5 mobile applications using cold fusion 11
Developing html5 mobile applications using cold fusion 11Developing html5 mobile applications using cold fusion 11
Developing html5 mobile applications using cold fusion 11
 
Hidden Gems in ColdFusion 2016
Hidden Gems in ColdFusion 2016Hidden Gems in ColdFusion 2016
Hidden Gems in ColdFusion 2016
 
Joe Staner Zend Con 2008
Joe Staner Zend Con 2008Joe Staner Zend Con 2008
Joe Staner Zend Con 2008
 
IBM Digital Experience Theme Customization
IBM Digital Experience Theme CustomizationIBM Digital Experience Theme Customization
IBM Digital Experience Theme Customization
 
Proper Connections Development for Proper Domino Developers
Proper Connections Development for Proper Domino DevelopersProper Connections Development for Proper Domino Developers
Proper Connections Development for Proper Domino Developers
 
Developing an aspnet web application
Developing an aspnet web applicationDeveloping an aspnet web application
Developing an aspnet web application
 
GeneralMobile Hybrid Development with WordPress
GeneralMobile Hybrid Development with WordPressGeneralMobile Hybrid Development with WordPress
GeneralMobile Hybrid Development with WordPress
 
Restful services with ColdFusion
Restful services with ColdFusionRestful services with ColdFusion
Restful services with ColdFusion
 
Locking Down CF Servers
Locking Down CF ServersLocking Down CF Servers
Locking Down CF Servers
 
An Introduction to Lightning Web Components
An Introduction to Lightning Web ComponentsAn Introduction to Lightning Web Components
An Introduction to Lightning Web Components
 
Training on webwroks1
Training on webwroks1Training on webwroks1
Training on webwroks1
 

Similaire à 1 app 2 developers 3 servers

Deployingmuleapplications 160903085602
Deployingmuleapplications 160903085602Deployingmuleapplications 160903085602
Deployingmuleapplications 160903085602ppts123456
 
Part 3 web development
Part 3 web developmentPart 3 web development
Part 3 web developmenttechbed
 
Writing simple web services in java using eclipse editor
Writing simple web services in java using eclipse editorWriting simple web services in java using eclipse editor
Writing simple web services in java using eclipse editorSantosh Kumar Kar
 
Deploying mule applications
Deploying mule applicationsDeploying mule applications
Deploying mule applicationsBhargav Ranjit
 
Django simplified : by weever mbakaya
Django simplified : by weever mbakayaDjango simplified : by weever mbakaya
Django simplified : by weever mbakayaMbakaya Kwatukha
 
Cloud Foundry a Developer's Perspective
Cloud Foundry a Developer's PerspectiveCloud Foundry a Developer's Perspective
Cloud Foundry a Developer's PerspectiveDave McCrory
 
JNUC 2017: Open Distribution Server
JNUC 2017: Open Distribution ServerJNUC 2017: Open Distribution Server
JNUC 2017: Open Distribution ServerBryson Tyrrell
 
Jboss App Server
Jboss App ServerJboss App Server
Jboss App Serveracosdt
 
Using galen framework for automated cross browser layout testing
Using galen framework for automated cross browser layout testingUsing galen framework for automated cross browser layout testing
Using galen framework for automated cross browser layout testingSarah Elson
 
Bluemix and DevOps workshop lab
Bluemix and DevOps workshop labBluemix and DevOps workshop lab
Bluemix and DevOps workshop labbenm4nn
 
Pure Systems Patterns of Expertise - John Kaemmerer and Gerry Kovan, 11th Sep...
Pure Systems Patterns of Expertise - John Kaemmerer and Gerry Kovan, 11th Sep...Pure Systems Patterns of Expertise - John Kaemmerer and Gerry Kovan, 11th Sep...
Pure Systems Patterns of Expertise - John Kaemmerer and Gerry Kovan, 11th Sep...IBM Systems UKI
 
N-Tier Application with Windows Forms - Deployment and Security
N-Tier Application with Windows Forms - Deployment and SecurityN-Tier Application with Windows Forms - Deployment and Security
N-Tier Application with Windows Forms - Deployment and SecurityPeter Gfader
 
Diva23
Diva23Diva23
Diva23diva23
 
Sequence Like a Boss - BriForum 2015 Denver
Sequence Like a Boss - BriForum 2015 DenverSequence Like a Boss - BriForum 2015 Denver
Sequence Like a Boss - BriForum 2015 DenverRyanWillDotcom
 
Setting up the hyperledger composer in ubuntu
Setting up the hyperledger composer in ubuntuSetting up the hyperledger composer in ubuntu
Setting up the hyperledger composer in ubuntukesavan N B
 
How create react app help in creating a new react applications
How create react app help in creating a new react applications How create react app help in creating a new react applications
How create react app help in creating a new react applications Concetto Labs
 
SharePoint 2013 App Provisioning Models
SharePoint 2013 App Provisioning ModelsSharePoint 2013 App Provisioning Models
SharePoint 2013 App Provisioning ModelsShailen Sukul
 
Spring Live Sample Chapter
Spring Live Sample ChapterSpring Live Sample Chapter
Spring Live Sample ChapterSyed Shahul
 

Similaire à 1 app 2 developers 3 servers (20)

Codename one
Codename oneCodename one
Codename one
 
Deployingmuleapplications 160903085602
Deployingmuleapplications 160903085602Deployingmuleapplications 160903085602
Deployingmuleapplications 160903085602
 
Part 3 web development
Part 3 web developmentPart 3 web development
Part 3 web development
 
Writing simple web services in java using eclipse editor
Writing simple web services in java using eclipse editorWriting simple web services in java using eclipse editor
Writing simple web services in java using eclipse editor
 
Deploying mule applications
Deploying mule applicationsDeploying mule applications
Deploying mule applications
 
Django simplified : by weever mbakaya
Django simplified : by weever mbakayaDjango simplified : by weever mbakaya
Django simplified : by weever mbakaya
 
Cloud Foundry a Developer's Perspective
Cloud Foundry a Developer's PerspectiveCloud Foundry a Developer's Perspective
Cloud Foundry a Developer's Perspective
 
JNUC 2017: Open Distribution Server
JNUC 2017: Open Distribution ServerJNUC 2017: Open Distribution Server
JNUC 2017: Open Distribution Server
 
Jboss App Server
Jboss App ServerJboss App Server
Jboss App Server
 
Using galen framework for automated cross browser layout testing
Using galen framework for automated cross browser layout testingUsing galen framework for automated cross browser layout testing
Using galen framework for automated cross browser layout testing
 
Apache cordova
Apache cordovaApache cordova
Apache cordova
 
Bluemix and DevOps workshop lab
Bluemix and DevOps workshop labBluemix and DevOps workshop lab
Bluemix and DevOps workshop lab
 
Pure Systems Patterns of Expertise - John Kaemmerer and Gerry Kovan, 11th Sep...
Pure Systems Patterns of Expertise - John Kaemmerer and Gerry Kovan, 11th Sep...Pure Systems Patterns of Expertise - John Kaemmerer and Gerry Kovan, 11th Sep...
Pure Systems Patterns of Expertise - John Kaemmerer and Gerry Kovan, 11th Sep...
 
N-Tier Application with Windows Forms - Deployment and Security
N-Tier Application with Windows Forms - Deployment and SecurityN-Tier Application with Windows Forms - Deployment and Security
N-Tier Application with Windows Forms - Deployment and Security
 
Diva23
Diva23Diva23
Diva23
 
Sequence Like a Boss - BriForum 2015 Denver
Sequence Like a Boss - BriForum 2015 DenverSequence Like a Boss - BriForum 2015 Denver
Sequence Like a Boss - BriForum 2015 Denver
 
Setting up the hyperledger composer in ubuntu
Setting up the hyperledger composer in ubuntuSetting up the hyperledger composer in ubuntu
Setting up the hyperledger composer in ubuntu
 
How create react app help in creating a new react applications
How create react app help in creating a new react applications How create react app help in creating a new react applications
How create react app help in creating a new react applications
 
SharePoint 2013 App Provisioning Models
SharePoint 2013 App Provisioning ModelsSharePoint 2013 App Provisioning Models
SharePoint 2013 App Provisioning Models
 
Spring Live Sample Chapter
Spring Live Sample ChapterSpring Live Sample Chapter
Spring Live Sample Chapter
 

Plus de Mark Myers

Engage 2017 - Choose your own adventure
Engage 2017 - Choose your own adventureEngage 2017 - Choose your own adventure
Engage 2017 - Choose your own adventureMark Myers
 
LDC Via building a new app
LDC Via  building a new appLDC Via  building a new app
LDC Via building a new appMark Myers
 
Saleforce For Domino Dogs
Saleforce For Domino DogsSaleforce For Domino Dogs
Saleforce For Domino DogsMark Myers
 
Uklug 2014 connections dev faq
Uklug 2014  connections dev faqUklug 2014  connections dev faq
Uklug 2014 connections dev faqMark Myers
 
Vertical vs Horizontal Scaling
Vertical vs Horizontal Scaling Vertical vs Horizontal Scaling
Vertical vs Horizontal Scaling Mark Myers
 
SHOW104: Practical Java
SHOW104: Practical JavaSHOW104: Practical Java
SHOW104: Practical JavaMark Myers
 
The Dev-Admin Chimera: Customising Connections (with Gab Davis)
The Dev-Admin Chimera: Customising Connections (with Gab Davis)The Dev-Admin Chimera: Customising Connections (with Gab Davis)
The Dev-Admin Chimera: Customising Connections (with Gab Davis)Mark Myers
 
Ar*@!+$es to this. getting IBM connections to do what you want
Ar*@!+$es to this. getting IBM connections to do what you want Ar*@!+$es to this. getting IBM connections to do what you want
Ar*@!+$es to this. getting IBM connections to do what you want Mark Myers
 
Blug2013 frameworks
Blug2013 frameworksBlug2013 frameworks
Blug2013 frameworksMark Myers
 
Show104 buried treasure
Show104 buried treasureShow104 buried treasure
Show104 buried treasureMark Myers
 
BP203 limitless languages
BP203 limitless languagesBP203 limitless languages
BP203 limitless languagesMark Myers
 

Plus de Mark Myers (11)

Engage 2017 - Choose your own adventure
Engage 2017 - Choose your own adventureEngage 2017 - Choose your own adventure
Engage 2017 - Choose your own adventure
 
LDC Via building a new app
LDC Via  building a new appLDC Via  building a new app
LDC Via building a new app
 
Saleforce For Domino Dogs
Saleforce For Domino DogsSaleforce For Domino Dogs
Saleforce For Domino Dogs
 
Uklug 2014 connections dev faq
Uklug 2014  connections dev faqUklug 2014  connections dev faq
Uklug 2014 connections dev faq
 
Vertical vs Horizontal Scaling
Vertical vs Horizontal Scaling Vertical vs Horizontal Scaling
Vertical vs Horizontal Scaling
 
SHOW104: Practical Java
SHOW104: Practical JavaSHOW104: Practical Java
SHOW104: Practical Java
 
The Dev-Admin Chimera: Customising Connections (with Gab Davis)
The Dev-Admin Chimera: Customising Connections (with Gab Davis)The Dev-Admin Chimera: Customising Connections (with Gab Davis)
The Dev-Admin Chimera: Customising Connections (with Gab Davis)
 
Ar*@!+$es to this. getting IBM connections to do what you want
Ar*@!+$es to this. getting IBM connections to do what you want Ar*@!+$es to this. getting IBM connections to do what you want
Ar*@!+$es to this. getting IBM connections to do what you want
 
Blug2013 frameworks
Blug2013 frameworksBlug2013 frameworks
Blug2013 frameworks
 
Show104 buried treasure
Show104 buried treasureShow104 buried treasure
Show104 buried treasure
 
BP203 limitless languages
BP203 limitless languagesBP203 limitless languages
BP203 limitless languages
 

Dernier

Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfjimielynbastida
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsHyundai Motor Group
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 

Dernier (20)

Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdf
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 

1 app 2 developers 3 servers

  • 1.
  • 2. 1 App, 2 Developers, 3 Servers: Getting the Same Application to run on different servers Mark Myers, LDC René Winkelmeyer, midpoints GmbH (honorary)
  • 3. Who Am I ? : Mark Myers  Member of the London Developer Co-op http://www.londc.com – A group of freelance developers that band together to build more complex projects. – IBM Connections, Domino, Mobile and Web development – Hire me!  Developer from a support background  13+ years on Domino, 16+ years in IT  Speaker at 5x Lotuspheres/Connects, 5 x UKLUGs, 1 x ILUG, 2 x BLUG/Engage 
  • 4. Honorary second presenter : René Winkelmeyer  Head of Development at midpoints GmbH – IBM Advanced Business Partner from Germany http://www.midpoints.de – Specialized in RCP development – XPages development and building mobile infrastructures – IBM Design Partner for Notes/Domino Next and Mobile  OpenNTF Contributor – File Navigator (http://filenavigator.openntf.org) – Generic NSF View Widget for IBM Connections2 © 2013 IBM Corporation  He is not always this grumpy looking
  • 5. What is this Session about?  Its about being able to write a core app and deploy it on any server with a Java core – It does not even need to be a Java app, this works just as well for pure client side websites using popular client side JavaScript frameworks eg, AngluarJS, backbone. – This also means you can use your preferred IDE, ie sublime text for AngularJS  As IBM develops new apps and brings out new platforms, you want to be able to develop for them without putting all your eggs in one basket (this is good for IBM as it lowers the investment cost for partners to developer for their platforms)  We used to take each new standard and framework and try and glue it to Domino, now we can speed up that process and glue it to any part of the IBM stack. <cough> BlueMix <cough> or even expand our apps to other providers
  • 6. What Software are we using?  IDE: Eclipse™ Luna for EE https://www.eclipse.org/downloads/packages/eclipse-ide-java- ee-developers/lunasr1a – Vaadin Plugin https://vaadin.com/eclipse – Apache® Tomcat® V8 http://tomcat.apache.org/download-80.cgi  IBM® Domino® 9.0.1  IBM® WebSphere® 8.5.5 (Not the Liberty Profile, the full server as used by Connections)
  • 8. Basic Vaadin Application  Why Use Vaadin for this demo? – It is one of the best frameworks in terms of features ( both client side and server side logic) – Easy for Domino People to pick up, as of all the current frameworks it seems to work the nearest of Domino and Xpages. – Uses a single servlet and deploys as a standard WAR application (Web application ARchive) – Complex in terms of infrastructure (not a hello world platform) – Its not a client end framework e.g AngularJS
  • 9. Basic Vaadin Application  Once you have added the Vaadin Plugin  Select “File”  “New” and select “Vaadin 7 Project”
  • 10. Basic Vaadin Application  Give the Project a name and leave the Target runtime as “<None>” and accept defaults on the rest of the options  Accept the default build Directory
  • 11. Basic Vaadin Application  Select “Generate web.xml deployment descriptor”  Accept the other defaults.
  • 12. Basic Vaadin Application  If this is your first time building a Vaadin App it will download a load of backend framework stuff, don’t worry just let it run. (we will come back to why that is important later)  You now have a clean new WAR app, lets deploy it.
  • 14. Apache: Setup  Globally considered the baseline for Java Application Servers  The Most popular Java Application Server on the Internet – https://plumbr.eu/blog/most-popular-application-servers-in-2014  Very easy going and light weight
  • 15. Apache: Setup  Download Tomcat from http://tomcat.apache.org/download- 80.cgi  Upzip the Download and place it somewhere sensible.
  • 16. Apache: Setup  Go Back To Eclipse, Select the “Servers” tab  Click to the Link to Create a New Server Config
  • 17. Apache: Setup  Select Apache / Tomcat v8.0 from the list  Browse to the directory you unzipped Tomcat to and select it.
  • 18. Apache: Setup  To deploy an app in eclipse, right click on the application root  Select “Run As”  “Run on Server”
  • 19. Apache: Setup  The “3ServerDemo” will be listed in the Available column, add it to the “Configured” column.
  • 20. Apache: Setup  Right click on the server in the “Server” tab and select “Start”
  • 21. Apache: Setup  The Application in now running on Apache  Be still my beating heart part 1
  • 23. WebSphere: Setup  The core of the IBM stack  The Liberty profile is a very light weight version of the full WebSphere server. – Perfect for local development. – From the point of view of the type of applications we are discussing here WebSphere and the liberty profile are interchangeable. – We are not using it here just to prove a point as Connections development is one of our primary use cases and Connections uses the full WebSphere server.
  • 24. WebSphere: Setup  We are assuming you have installed WebSphere 8.5.5 locally – A typical install accepting all defaults  After that we will want to install the IBM WebSphere plugin for Eclipse  This is in the “Eclipse Marketplace” rather than under the “Install New Software”
  • 25. Websphere: Setup  Search for IBM and select “install” on “IBM WebSphere Application Server V8.5x Developer Tools”
  • 26. WebSphere: Setup  You only need the “WebSphere Application Server V8.5 Tools” but the other tools are useful.  Select “Confirm”.
  • 27. Websphere: Setup  Once the tools have installed and Eclipse restarted.  On the “Servers” tab right click, and select “New”  Server
  • 28. WebSphere: Setup  Select “WebSphere Application Server V8.5”  Accept All defaults  Select “Finish”
  • 29. WebSphere: Setup  Browse to the servers AppServer directory (it will auto fill the JRE Setting) – Note: This JRE has to be a version equal or higher than the Compile version of the application
  • 30. WebSphere: Setup  You will find that when you try to run the WAR app on WebSphere in the same way as you did for Tomcat that no applications will be Listed  You need to create a EAR wrapper
  • 31. WebSphere: Setup  Select “File”  “New”  Pick “Java EE”  “Enterprise Application Project”
  • 32. WebSphere: Setup  Give the EAR project a suitable name, and select the “Target runtime”  Click “Next”
  • 33. WebSphere: Setup  Now select the actual app that will be inserted into the EAR application  If you want to keep all the Application settings within the core application then do not select “Generate application.xml deployment descriptor”
  • 34. WebSphere: Setup  Now you will find, that when you try to run the application on WebSphere you have a available Application.
  • 35. WebSphere: Setup  The Application in now running on WebSphere  Be still my beating heart part 2
  • 37. Connections: Setup  The connections box can take any of the apps you build (Its just a WebSphere box after all) – Don’t forget that connections is a heavy duty application adding additional apps to the same box has to be done carefully, make sure you work out the maximum load your app is going to add and keep Admins informed. – You should use the Connections API’s for most things but you DO gain access to the Connections DB2 databases (by their well known JDBC names), and they grant you a great deal of power and speed • Do not do this without telling your admin. M
  • 38. Connections: Setup  If you are adding a new app to connections with a new context i.e. the “directory” the site runs in (in this case “3ServerDemo”)  You will find the URL will not work when you first try and open the website.  You will have to use wsadmin to re-sync the application servers LCConfigService.checkInConfig("d:",AdminControl.getCell()) LCConfigService.updateConfig("versionStamp","")
  • 39. Connections: Setup  Integration at the users end is done with widgets, either the “Open Social” widget standard or iwidgets – See the slides for MAS202 to tell the difference.  An Example of a BASIC “Open Social” wrapper, that you can use to point to your own content within your own app <?xml version="1.0" encoding="UTF-8" ?> <Module> <ModulePrefs title=“ServerDemo“ author_email=support@3ServerDemo.com height=“500“ width=“100%"> <Require feature="dynamic-height" /> </ModulePrefs> <Content href="/3ServerDemo" type="url" view="canvas" /></Module>
  • 40. Connections: Setup  And a BASIC iwidget wrapper, that you can use to point to your own content within your own app <?xml version="1.0" encoding="UTF-8" ?> <iw:iwidget name=“3ServerDemo" xmlns:iw="http://www.ibm.com/xmlns/prod/iWidget" iScope="htmlWidget" supportedModes="view" mode="view"> <iw:content mode="view"> <![CDATA[ <iframe src="/3ServerDemo/" scrolling="auto" width="100%" height="3000px" frameborder="0" scrolling="no"></iframe> ]]> </iw:content> </iw:iwidget>
  • 41. Connections: Setup  Put the iwidget xml file in the WEB-INF directory  You can use this to add a widget to Connections with the URL http://servername/3ServerDemo/iwidgetlink.xml
  • 43. Domino: Setup  Take advance of the latest frameworks while still being able to leverage all your existing domino data and features with easy NSF data and security access.  This has been done multiple times before 2 excellent reference presentations are: – https://speakerdeck.com/sbasegmez/bp207-meet-the-java-application-server-you-already-own- ibm-domin – http://www.slideshare.net/fiorep/domino-osgi-development
  • 44. Domino: Getting Existing Web Applications Running on Domino via OSGI  Method 1 – Copy existing App components over then glue the app back into a new Plug in Project – Pros: • Easy to work out what's going out (mixing project dependency's + OSGI is horrible) • If you have resource conflicts caused by dependency injection tools, you might have to do an export as WAR to get the jars matching entries in MANIFEST.MF – Cons • Not very elegant  Method 2 - Migrate your Existing Application to a plug-in project – Pros: • Impressive and fast when it works. – Cons: • Horribly confusing to get right if you don’t know what your OSGI config should look like
  • 45. Domino: Setup  Lets do Method 1  In Eclipse click “New”  “Plug-in Project”
  • 46. Domino: Setup  In Eclipse click “New”  “Plug-in Project”  Select “Equinox” as your framework  Generate an Activator
  • 47. Domino: Setup - Update  Next copy your “src” and “WebContent” from your original project to  This is only because we are using a Java backend framework (worst Case scenario) – If we were using only front end frameworks, you would only have to copy the “WebContent” Directory
  • 48. Domino: Setup - Update  Now Import the Notes.jar – File  Import – Select the file system and get the Notes.jar file from the ext directory
  • 49. Domino: Setup - Update  Your MANIFEST.MF will tend to take a lot of work until you get used to it,  Once you are happy with it, It is recommended you just manually edit it rather than using the GUI The Jar files you copied over from your original project
  • 50. Domino: Setup - Update  Next to ensure you have all required system libs, check the facets view for both projects to ensure they are the same – Right click on the project root  Properties and select Project Facets
  • 51. Domino: Setup - Update  That will give you a valid project that can be used in conjunction with – 1- A eclipse feature site – 2- Then an eclipse update site – 3- Then the Domino update site  Be Still my beating heart part 3 I’m not going to go though it as its been done in a presentation every year for the last 3 years at this conference. Zzzzzz
  • 53. Multi Authentication  With the increased emphasis on security due to recent breaches, your application often has to deal with multiple forms of security.  Despite common standards if you are going to support different servers you have to cater to different authentication mediums.  Once you have made the initial effort to handle different forms of authentication as dictated by the server platforms, then adding multiple ones becomes progressively easier.
  • 54. Multi Authentication  Enterprise applications now often compare poorly against consumer websites which take multiple forms of authentication.
  • 55. Multi Authentication: Example if (isDomino) { Session userSession = DominoResource.INSTANCE.getUserSession(username.getValue(), password.getValue()); if (null == userSession || !userSession.isValid()) { //Report system Error } else { AppSession appSession = SessionUtils.populateFromDominoSession(userSession) } } else { LDAPLogon lDAPLogon = new LDAPLogon(); LdapContext userCTX = lDAPLogon.getUserCtx(username.getValue(), password.getValue()); if (null == userCTX) { //Report system Error } else { LDAPUtils ldap = new LDAPUtils(username.getValue(), LDAPResource.INSTANCE.getCtx()); AppSession appSession = SessionUtils.populateFromLDAP(ldap) }
  • 56. Multi Authentication  Pros – Allows greater integration into a clients system. – If a client is migrating from one system to another your systems will not be a bottleneck in the process. – Can allow you to log on to multiple systems simultaneously.  Cons – Can slow down the login process – A systems wide unique identifier is sometimes hard to achieve • You would not believe how many times email address is not suitable.
  • 58. Data Abstraction  Just about all data storage is actually an abstraction layer (such as http://hibernate.org/ )  If you are considering support for multiple platforms, then providing your own functional abstraction layer can be very useful. – You design how you want the data to be handled in your app and deal with the actual nuts and bold of storage latter, which makes your storage more agnostic.  When doing a data abstraction, it is best to sit down and work out exactly how and what you are wanting to store and read  If you have created an API then its easy to use the same functions as a data abstraction and vs versa, so you may have done all the hard work.
  • 59. Data Abstraction Create Order Internal Order Object  Reference No  Status  Address  Items  Etc.. DB2 Order Table MongoDb Collection NSF Database Create DB2 Order Create MongoDb Order Create NSF Order
  • 60. Data Abstraction: Example public OrderStatus createOrder(Order currentOrder, String requestingUser) { try { if (isDomino) { return dominoStore.createOrder( currentOrder, requestingUser) ; } else(isWebSphere) { return db2Store.createOrder( currentOrder, requestingUser); } else { return mongoStore.createOrder( currentOrder, requestingUser); } } catch (Exception e) { e.printStackTrace(); return OrderStatus.ORDER_CREATE_FAIL; } } There is no mention of database connections or tables or SQL or sessions or anything specific to a single storage medium
  • 61. Data Abstraction  Pros – Grants flexibility to changing backend storage – Makes you think about storage rather than just stuffing data into a database – Once you have done it once, its easy to reuse. – Allows soft rollouts of new platforms. – Easier to work on large teams as it separates workflow and storage.  Cons – Adding an extra field etc takes much longer. – It can get complex and cause performance issues if done badly • Think about the difference between real workflow and storage workflow eg search – Different platforms can have features that another does not have (eg. Blob storage)
  • 63. Summary  Given the speed that both frameworks and platforms change, you need to provide the most flexibility you can without sacrificing functionality, all the while ensuring you can pivot if needed. – This can be seen in the mobile market where companies tying them selves to a single platform limit their long term growth, the same rule applies to any application market.  Gluing frameworks onto frameworks is both slow and clunky, taking a few steps back and building your apps on as clean a system as possible means change is easier, and you can get for more return on investment.
  • 65. René Winkelmeyer Online  Company http://www.midpoints.de – IBM Advanced Business Partner  Blog http://blog.winkelmeyer.com  Twitter @muenzpraeger  Skype muenzpraeger  LinkedIn https://www.linkedin.com/in/muenzpraeger  Mail mail@winkelmeyer.com rene.winkelmeyer@midpoints.de  Slide Share http://www.slideshare.net/muenzpraeger
  • 66. Mark Myers Online  Company http://www.londc.com – Our Latest product http://www.LDCVia.com  Blog http://www.stickfight.co.uk  Twitter @stickfight  Skype stickfight  LinkedIn https://uk.linkedin.com/in/stickfight/  Mail mark@energywins.co.uk mark@londc.com
  • 67. Notices and Disclaimers Copyright © 2015 by International Business Machines Corporation (IBM). No part of this document may be reproduced or transmitted in any form without written permission from IBM. U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM. Information in these presentations (including information relating to products that have not yet been announced by IBM) has been reviewed for accuracy as of the date of initial publication and could include unintentional technical or typographical errors. IBM shall have no responsibility to update this information. THIS DOCUMENT IS DISTRIBUTED "AS IS" WITHOUT ANY WARRANTY, EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL IBM BE LIABLE FOR ANY DAMAGE ARISING FROM THE USE OF THIS INFORMATION, INCLUDING BUT NOT LIMITED TO, LOSS OF DATA, BUSINESS INTERRUPTION, LOSS OF PROFIT OR LOSS OF OPPORTUNITY. IBM products and services are warranted according to the terms and conditions of the agreements under which they are provided. Any statements regarding IBM's future direction, intent or product plans are subject to change or withdrawal without notice. Performance data contained herein was generally obtained in a controlled, isolated environments. Customer examples are presented as illustrations of how those customers have used IBM products and the results they may have achieved. Actual performance, cost, savings or other results in other operating environments may vary. References in this document to IBM products, programs, or services does not imply that IBM intends to make such products, programs or services available in all countries in which IBM operates or does business. Workshops, sessions and associated materials may have been prepared by independent session speakers, and do not necessarily reflect the views of IBM. All materials and discussions are provided for informational purposes only, and are neither intended to, nor shall constitute legal or other guidance or advice to any individual participant or their specific situation. It is the customer’s responsibility to insure its own compliance with legal requirements and to obtain advice of competent legal counsel as to the identification and interpretation of any relevant laws and regulatory requirements that may affect the customer’s business and any actions the customer may need to take to comply with such laws. IBM does not provide legal advice or represent or warrant that its services or products will ensure that the customer is in compliance with any law. Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products in connection with this publication and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products. IBM does not warrant the quality of any third-party products, or the ability of any such third-party products to interoperate with IBM’s products. IBM EXPRESSLY DISCLAIMS ALL WARRANTIES, EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. The provision of the information contained herein is not intended to, and does not, grant any right or license under any IBM patents, copyrights, trademarks or other intellectual property right. IBM, the IBM logo, ibm.com, BrassRing®, Connections™, Domino®, Global Business Services®, Global Technology Services®, SmartCloud®, Social Business®, Kenexa®, Notes®, PartnerWorld®, Prove It!®, PureSystems®, Sametime®, Verse™, Watson™, WebSphere®, Worklight®, are trademarks of International Business Machines Corporation, registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the Web at "Copyright and trademark information" at: www.ibm.com/legal/copytrade.shtml.