SlideShare ist ein Scribd-Unternehmen logo
1 von 44
Downloaden Sie, um offline zu lesen
Building an Integration Platform
              with Grails and Gradle


                                        Brian Saville   18 Oct 2012
                                 Adaptive Computing




1                  © 2012 ADAPTIVE COMPUTING, INC.
Me


    Brian Saville
    bsaville@adaptivecomputing.com
    Twitter: @bksaville
    Plugins:
    ▪ External Config Reload
    ▪ Spring Security OAuth2 Provider
    ▪ New Doc
    ▪ Artefact Messaging
    ▪ Contributor on Others


2                   © 2012 ADAPTIVE COMPUTING, INC.
Adaptive Computing Highlights

▪ Leaders in cloud and HPC software

▪ 10+ years developing Moab® technology

▪ Leadership team w/ $1.5B+ in exits

▪ 15 issued patents, 34 pending

▪ Backed by top-tier investors:

▪ Global Partnerships: HP, IBM, SGI, Cray, Microsoft, etc.

▪ Over 200 customers such as:




3                      © 2012 ADAPTIVE COMPUTING, INC.
Moab Web Services


    ▪ What is it?
      ▪   Grails 2.0.3
      ▪   RESTful Web Services
      ▪   Business Logic
      ▪   Plugin Framework (Beta)
    ▪ What does it do?
      ▪ Wraps C Core Product
      ▪ Integrates “old world” non-standardized API with
        “new world” APIs




4                         © 2012 ADAPTIVE COMPUTING, INC.
Atypical Grails Deployment


    ▪ MWS Deployed on Client Servers
      ▪   WAR file
      ▪   Tomcat 6
      ▪   Oracle/Sun JDK 6
      ▪   MongoDB 2.0+
    ▪ Customization on Client Sites




5                            © 2012 ADAPTIVE COMPUTING, INC.
Integration Platform


    ▪ Reasons
      ▪ Extensibility
         ▪ In-House Developers
         ▪ External Developers
      ▪ Dynamic Updates to Application Behavior
    ▪ Why Create Our Own?
    ▪ Consists of Plugin Framework (Grails)
      and SDK (Gradle)




6                        © 2012 ADAPTIVE COMPUTING, INC.
7   © 2012 ADAPTIVE COMPUTING, INC.
Why Do We Care?


    ▪ Integration Platform Developers
      1) Provides a standard pattern to follow
      2) Identifies required and optional framework
         components
      3) Treads ground for new integration platforms
      4) Identifies hurdles and potential problems
    ▪ Grails/Gradle Users
      1) New advanced application of Grails and Gradle
      2) Grails plugin framework can be evaluated with
         the pattern
      3) Gradle plugin framework can be evaluated with
         the pattern


8                        © 2012 ADAPTIVE COMPUTING, INC.
Integration Platform
                 Pattern




9            © 2012 ADAPTIVE COMPUTING, INC.
The Pattern


     ▪   Plugin Identification
     ▪   Lifecycle and State Management
     ▪   Dependency Management
     ▪   Extend Application
     ▪   Services
     ▪   Configuration Management
     ▪   Lifecycle Hooks
     ▪   Metadata
     ▪   Development (SDK)


10                     © 2012 ADAPTIVE COMPUTING, INC.
Plugin Identification


     ▪ By Convention
       ▪ Class names
       ▪ Packaging (JAR, Java or Groovy file)
     ▪ By Interface(s)
       ▪ IPlugin
       ▪ Activator (OSGI)
     ▪ By Configuration
       ▪ MANIFEST.MF




11                          © 2012 ADAPTIVE COMPUTING, INC.
Lifecycle and State Management


     ▪ Concept of State
       ▪ Stopped and started
       ▪ More states optional
     ▪ Control Over State
       ▪ How to stop, how to start?
       ▪ How to add plugin? (Removal not required)




12                        © 2012 ADAPTIVE COMPUTING, INC.
Dependency Management


     ▪ Internal Dependencies
       ▪ Build process
       ▪ Consider IDE
     ▪ External Dependencies
       ▪ Fat JARs
       ▪ Dependency resolution when adding




13                       © 2012 ADAPTIVE COMPUTING, INC.
Extend Application


     ▪ Different in Each Case
     ▪ Custom Services
       ▪ Web services
       ▪ Internal services
     ▪ Provide Resources
     ▪ Report or Persist Data
     ▪ …




14                           © 2012 ADAPTIVE COMPUTING, INC.
Services


     ▪ Stateless Services
       ▪ Control services
       ▪ Logging
     ▪ Dependent Services
       ▪ Configuration
       ▪ Data persistence




15                          © 2012 ADAPTIVE COMPUTING, INC.
Configuration Management


     ▪ Access Application Configuration
     ▪ (Optional) Access Private
       Configuration
       ▪ Preferences




16                     © 2012 ADAPTIVE COMPUTING, INC.
Lifecycle Hooks


     ▪ State Transition Hooks
       ▪ Starting and stopping
       ▪ Before, after, and/or during transition?
     ▪ Other Hooks
       ▪ Setup and configuration
     ▪ How Are They Defined?
       ▪ Convention
       ▪ Interfaces (Configuration)




17                         © 2012 ADAPTIVE COMPUTING, INC.
Development (SDK)


     ▪ Dependency Management
       ▪ Build with internal dependencies
       ▪ Include external dependencies
     ▪ Testing
       ▪ Unit
       ▪ Integration
     ▪ Deployment
     ▪ (Optional) RAD Tool




18                        © 2012 ADAPTIVE COMPUTING, INC.
Metadata


     ▪ By Convention
     ▪ By Configuration
     ▪ Types of Metadata
       ▪   Project/Plugin information
       ▪   Author information
       ▪   (Optional) Configuration constraints
       ▪   (Optional) Dependency information




19                           © 2012 ADAPTIVE COMPUTING, INC.
Non-Essential Pattern Elements


     ▪ Security
     ▪ Deployment System/Central
       Repository
     ▪ Inversion of Control (IoC) Container
     ▪ Data Persistence
       ▪ Individual to Plugin
       ▪ Application Aware
     ▪ Common Clients and Parsers
       ▪ XML/JSON




20                         © 2012 ADAPTIVE COMPUTING, INC.
Non-Essential Pattern Elements Cont.


     ▪   Events – Built-In and Custom
     ▪   Decomposition of Logic
     ▪   Messaging (i18n)
     ▪   Startup/Shutdown Concerns
     ▪   Scheduled Jobs
     ▪   Inter-Project Dependencies
     ▪   Environment Handling




21                      © 2012 ADAPTIVE COMPUTING, INC.
Grails Plugins


     ▪ What is Missing?
       ▪ Standardized configuration management
       ▪ Platform core is addressing this
     ▪ Framework is Mature




22                       © 2012 ADAPTIVE COMPUTING, INC.
MWS Integration
            Platform




23        © 2012 ADAPTIVE COMPUTING, INC.
Introduction


     ▪ Plugin Type – Plugin Definition Class
       ▪ One per Class
       ▪ Stored as Groovy or JAR files
       ▪ Internally is a Grails artefact
     ▪ Plugin Instance
       ▪ Multiple instances for a single plugin type
         possible
       ▪ Internally is DB entry and Spring Bean
     ▪ Dynamic (Running Application)




24                          © 2012 ADAPTIVE COMPUTING, INC.
Plugin Identification


     ▪ “Ends With” Class Names
       ▪ Plugin Types
       ▪ Translators
     ▪ Autowired Classes
     ▪ Spring Annotated Classes
       ▪   @Component
       ▪   @Autowired
       ▪   @Resource
       ▪   @Scope




25                      © 2012 ADAPTIVE COMPUTING, INC.
Lifecycle and State Management


     ▪ States
       ▪ Started, Stopped, Paused
     ▪ Plugin Control Service
       ▪ Start, stop, pause, resume
     ▪ Adding Plugins
       ▪ User Interface
       ▪ REST API




26                        © 2012 ADAPTIVE COMPUTING, INC.
Dependency Management


     ▪ SDK for Build Dependencies
       ▪ Grails JARs
       ▪ Spring JARs
     ▪ Support Fat JARs
     ▪ Dependencies Resolved Before Adding




27                     © 2012 ADAPTIVE COMPUTING, INC.
Extend Application


     ▪ Reporting – Application Aware Data
       Persistence
     ▪ Expose Custom Web Services
       ▪   Methods by convention
       ▪   Almost full REST API
       ▪   Unsecured annotation
       ▪   Routed by URL mappings
     ▪ Built-In Events by Convention




28                        © 2012 ADAPTIVE COMPUTING, INC.
Services


     ▪   Logging (Similar to Grails)
     ▪   Data Persistence Services
     ▪   Control Service
     ▪   Individual Datastore Service
     ▪   SSL Service - SSLSocketFactory
         ▪ not-yet-commons-ssl with PEM files
         ▪ In memory keystore
     ▪ Internal REST Service
         ▪ Request and response with optional attributes
         ▪ Returns object with response, easy access
           properties, parsed data

29                          © 2012 ADAPTIVE COMPUTING, INC.
Configuration Management


     ▪ Application Configuration
       ▪ Grails application bean
     ▪ Plugin Private Configuration
       ▪ Metaclass injected “config” property




30                         © 2012 ADAPTIVE COMPUTING, INC.
Lifecycle Hooks


     ▪ Implemented as Methods on Plugin
       Types
       ▪ beforeStart, afterStart, beforeStop, afterStop
       ▪ configure
     ▪ If Not Implemented, Inject Empty
       Methods
     ▪ Called from Control Service




31                         © 2012 ADAPTIVE COMPUTING, INC.
Metadata


     ▪ Convention
       ▪ Plugin project compiled class included in JAR
       ▪ Ends with “Project”
     ▪ Configuration
       ▪ Properties on plugin project class
     ▪ =~ Grails Plugin Class




32                         © 2012 ADAPTIVE COMPUTING, INC.
Metadata – Dynamic Configuration
 Constraints

     ▪ Configuration is Dynamic Map
     ▪ Utilize Grails Constraints and
       Conventions
       ▪ Redo min/max to remove value checking
       ▪ Add custom plugin constrained property (CP)
       ▪ Add custom plugin CP builder
     ▪ Add Custom Constraints
       ▪   Type (Class) – Infer if not specified
       ▪   Default value
       ▪   Required (nullable)
       ▪   Scriptable URL (exec, file, http)
       ▪   Customized validator with additional methods

33                          © 2012 ADAPTIVE COMPUTING, INC.
i18n Messaging


     ▪ Message Property Files
       ▪ Included in JAR
       ▪ Loaded with individual message source per
         project
     ▪ Message Method Injected on Plugins
     ▪ Used to Resolve Constraint Errors
     ▪ Not quite multi-lingual




34                        © 2012 ADAPTIVE COMPUTING, INC.
Development (SDK)


     ▪ Commons JAR
       ▪ Interfaces, classes, constants, annotations
     ▪ Testing JAR – TestFor
     ▪ Gradle Project
       ▪ Dependencies
            ▪ Testing and Commons
            ▪ Creates fat JARs (lib and resolved deps)
       ▪   Additional build tasks
       ▪   Handles i18n property files
       ▪   Cobertura code coverage reports
       ▪   Unit testing with Spock


35                            © 2012 ADAPTIVE COMPUTING, INC.
Development (SDK) - Commands


     ▪ Gradle
       ▪   create-project -Pproject-name=MyProject
       ▪   create-plugin -Pplugin-name=sample.MyPlugin
       ▪   test
       ▪   upload-test -Pmws.url=http://localhost/mws
     ▪ (Eventually) Python CLI Wrapper
       ▪   mplugin   create-project MyProject
       ▪   mplugin   create-plugin sample.MyPlugin
       ▪   mplugin   test
       ▪   mplugin   upload --url=http://localhost:8080/mws




36                           © 2012 ADAPTIVE COMPUTING, INC.
Non-Essential Pattern Elements Status


     ▪ Security - Yes
     ▪ Central Repository – No
     ▪ IoC Container – Spring
     ▪ Data Persistence – Individual
       Datastore and Application Aware
     ▪ Common Clients and Parsers – Client
       Decided and Groovy
     ▪ Events – Built-In Only
     ▪ Decomposition – IoC with Conventions
       and Annotations


37                   © 2012 ADAPTIVE COMPUTING, INC.
Non-Essential Pattern Elements Status
 Cont.

     ▪ Startup/Shutdown Concerns – Initial
       Plugins
     ▪ Scheduled Jobs – Quartz
     ▪ Inter-Project Dependencies – No
     ▪ Environment Handling – Application
       Configuration Parameter




38                   © 2012 ADAPTIVE COMPUTING, INC.
Comparison to Grails Plugins

         Concept         MWS Plugins                         Grails Plugins
         RAD Tool             Partial                              X
      Configuration                X                          No Standard
     Integration Tests                                             X
         Multiple                  X
        Instances
       Custom REST            Partial                              X
        Metadata              Partial                              X
        Languages            Groovy                          Groovy & Java
         Dynamic                   X

         Lifecycle                 X                               X
           i18n               Partial                              X


39                         © 2012 ADAPTIVE COMPUTING, INC.
Demo




40      © 2012 ADAPTIVE COMPUTING, INC.
Problems
     Encountered




41    © 2012 ADAPTIVE COMPUTING, INC.
JVM ClassLoaders


     ▪ Separating ClassLoaders
     ▪ Locking JARs
     ▪ Fat JARs

     ▪ Unresolved: Reloading Typed
       References




42                   © 2012 ADAPTIVE COMPUTING, INC.
Language Support


     ▪ Groovy – Works Great
     ▪ Java – Interfaces and Metaclass Issues




43                    © 2012 ADAPTIVE COMPUTING, INC.
Questions?




44   © 2012 ADAPTIVE COMPUTING, INC.

Weitere ähnliche Inhalte

Was ist angesagt?

C2B2 WebLogic Administration Training
C2B2 WebLogic Administration TrainingC2B2 WebLogic Administration Training
C2B2 WebLogic Administration TrainingC2B2 Consulting
 
Overzicht van de GlassFish technologie, Eugene Bogaart
Overzicht van de GlassFish technologie, Eugene BogaartOverzicht van de GlassFish technologie, Eugene Bogaart
Overzicht van de GlassFish technologie, Eugene BogaartJaco Haans
 
SAP Integration with Red Hat JBoss Technologies
SAP Integration with Red Hat JBoss TechnologiesSAP Integration with Red Hat JBoss Technologies
SAP Integration with Red Hat JBoss Technologieshwilming
 
uPortal 4 in Action
uPortal 4 in ActionuPortal 4 in Action
uPortal 4 in ActionJim Helwig
 
Ebs idm con9020_pdf_9020_0001
Ebs idm con9020_pdf_9020_0001Ebs idm con9020_pdf_9020_0001
Ebs idm con9020_pdf_9020_0001jucaab
 
Sun welcome middleware_overview 0324101_bosnia(2)
Sun welcome middleware_overview 0324101_bosnia(2)Sun welcome middleware_overview 0324101_bosnia(2)
Sun welcome middleware_overview 0324101_bosnia(2)Oracle BH
 
Jakarta EE and MicroProfile Tech Talk
Jakarta EE and MicroProfile Tech TalkJakarta EE and MicroProfile Tech Talk
Jakarta EE and MicroProfile Tech TalkJosh Juneau
 
Weblogic 12c experiences - migrations from iAS-platform
Weblogic 12c experiences - migrations from iAS-platformWeblogic 12c experiences - migrations from iAS-platform
Weblogic 12c experiences - migrations from iAS-platformJon Petter Hjulstad
 
Case Study: ABS OAM
Case Study: ABS OAMCase Study: ABS OAM
Case Study: ABS OAMjayallen77
 
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012WebLogic 12c Developer Deep Dive at Oracle Develop India 2012
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012Arun Gupta
 
Gregor Hohpe Track Intro The Cloud As Middle Ware
Gregor Hohpe Track Intro The Cloud As Middle WareGregor Hohpe Track Intro The Cloud As Middle Ware
Gregor Hohpe Track Intro The Cloud As Middle Waredeimos
 
JSF 2.2 Input Output JavaLand 2015
JSF 2.2 Input Output JavaLand 2015JSF 2.2 Input Output JavaLand 2015
JSF 2.2 Input Output JavaLand 2015Edward Burns
 
Virtual dev-day-java7-keynote-1641807
Virtual dev-day-java7-keynote-1641807Virtual dev-day-java7-keynote-1641807
Virtual dev-day-java7-keynote-1641807Vinay H G
 
Introduce yourself to java 17
Introduce yourself to java 17Introduce yourself to java 17
Introduce yourself to java 17ankitbhandari32
 
Java EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
Java EE 7: Developing for the Cloud at Geecon, JEEConf, JohannesburgJava EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
Java EE 7: Developing for the Cloud at Geecon, JEEConf, JohannesburgArun Gupta
 
Integrating Alfresco with Liferay Portal for Document-Centric Use Cases
Integrating Alfresco with Liferay Portal for Document-Centric Use CasesIntegrating Alfresco with Liferay Portal for Document-Centric Use Cases
Integrating Alfresco with Liferay Portal for Document-Centric Use Casesrivetlogic
 

Was ist angesagt? (19)

C2B2 WebLogic Administration Training
C2B2 WebLogic Administration TrainingC2B2 WebLogic Administration Training
C2B2 WebLogic Administration Training
 
Overzicht van de GlassFish technologie, Eugene Bogaart
Overzicht van de GlassFish technologie, Eugene BogaartOverzicht van de GlassFish technologie, Eugene Bogaart
Overzicht van de GlassFish technologie, Eugene Bogaart
 
Enterprise GlassFish
Enterprise GlassFishEnterprise GlassFish
Enterprise GlassFish
 
SAP Integration with Red Hat JBoss Technologies
SAP Integration with Red Hat JBoss TechnologiesSAP Integration with Red Hat JBoss Technologies
SAP Integration with Red Hat JBoss Technologies
 
uPortal 4 in Action
uPortal 4 in ActionuPortal 4 in Action
uPortal 4 in Action
 
Ebs idm con9020_pdf_9020_0001
Ebs idm con9020_pdf_9020_0001Ebs idm con9020_pdf_9020_0001
Ebs idm con9020_pdf_9020_0001
 
Sun welcome middleware_overview 0324101_bosnia(2)
Sun welcome middleware_overview 0324101_bosnia(2)Sun welcome middleware_overview 0324101_bosnia(2)
Sun welcome middleware_overview 0324101_bosnia(2)
 
Fuji Overview
Fuji OverviewFuji Overview
Fuji Overview
 
Osgi platform
Osgi platformOsgi platform
Osgi platform
 
Jakarta EE and MicroProfile Tech Talk
Jakarta EE and MicroProfile Tech TalkJakarta EE and MicroProfile Tech Talk
Jakarta EE and MicroProfile Tech Talk
 
Weblogic 12c experiences - migrations from iAS-platform
Weblogic 12c experiences - migrations from iAS-platformWeblogic 12c experiences - migrations from iAS-platform
Weblogic 12c experiences - migrations from iAS-platform
 
Case Study: ABS OAM
Case Study: ABS OAMCase Study: ABS OAM
Case Study: ABS OAM
 
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012WebLogic 12c Developer Deep Dive at Oracle Develop India 2012
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012
 
Gregor Hohpe Track Intro The Cloud As Middle Ware
Gregor Hohpe Track Intro The Cloud As Middle WareGregor Hohpe Track Intro The Cloud As Middle Ware
Gregor Hohpe Track Intro The Cloud As Middle Ware
 
JSF 2.2 Input Output JavaLand 2015
JSF 2.2 Input Output JavaLand 2015JSF 2.2 Input Output JavaLand 2015
JSF 2.2 Input Output JavaLand 2015
 
Virtual dev-day-java7-keynote-1641807
Virtual dev-day-java7-keynote-1641807Virtual dev-day-java7-keynote-1641807
Virtual dev-day-java7-keynote-1641807
 
Introduce yourself to java 17
Introduce yourself to java 17Introduce yourself to java 17
Introduce yourself to java 17
 
Java EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
Java EE 7: Developing for the Cloud at Geecon, JEEConf, JohannesburgJava EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
Java EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
 
Integrating Alfresco with Liferay Portal for Document-Centric Use Cases
Integrating Alfresco with Liferay Portal for Document-Centric Use CasesIntegrating Alfresco with Liferay Portal for Document-Centric Use Cases
Integrating Alfresco with Liferay Portal for Document-Centric Use Cases
 

Andere mochten auch

Cut your Grails application to pieces - build feature plugins
Cut your Grails application to pieces - build feature pluginsCut your Grails application to pieces - build feature plugins
Cut your Grails application to pieces - build feature pluginsGR8Conf
 
The impact of innovation on travel and tourism industries (World Travel Marke...
The impact of innovation on travel and tourism industries (World Travel Marke...The impact of innovation on travel and tourism industries (World Travel Marke...
The impact of innovation on travel and tourism industries (World Travel Marke...Brian Solis
 
Open Source Creativity
Open Source CreativityOpen Source Creativity
Open Source CreativitySara Cannon
 
Reuters: Pictures of the Year 2016 (Part 2)
Reuters: Pictures of the Year 2016 (Part 2)Reuters: Pictures of the Year 2016 (Part 2)
Reuters: Pictures of the Year 2016 (Part 2)maditabalnco
 
The Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post FormatsThe Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post FormatsBarry Feldman
 
The Outcome Economy
The Outcome EconomyThe Outcome Economy
The Outcome EconomyHelge Tennø
 

Andere mochten auch (6)

Cut your Grails application to pieces - build feature plugins
Cut your Grails application to pieces - build feature pluginsCut your Grails application to pieces - build feature plugins
Cut your Grails application to pieces - build feature plugins
 
The impact of innovation on travel and tourism industries (World Travel Marke...
The impact of innovation on travel and tourism industries (World Travel Marke...The impact of innovation on travel and tourism industries (World Travel Marke...
The impact of innovation on travel and tourism industries (World Travel Marke...
 
Open Source Creativity
Open Source CreativityOpen Source Creativity
Open Source Creativity
 
Reuters: Pictures of the Year 2016 (Part 2)
Reuters: Pictures of the Year 2016 (Part 2)Reuters: Pictures of the Year 2016 (Part 2)
Reuters: Pictures of the Year 2016 (Part 2)
 
The Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post FormatsThe Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post Formats
 
The Outcome Economy
The Outcome EconomyThe Outcome Economy
The Outcome Economy
 

Ähnlich wie Building an Integration Platform with Gradle/Grails - Spring 2GX 2012

IBM Domino 9.0 Social Edition OpenSocial Component Deployment
IBM Domino 9.0 Social Edition OpenSocial Component DeploymentIBM Domino 9.0 Social Edition OpenSocial Component Deployment
IBM Domino 9.0 Social Edition OpenSocial Component DeploymentRahul A. Garg
 
Grails At Linked
Grails At LinkedGrails At Linked
Grails At LinkedLinkedIn
 
Developing Applications with MySQL and Java
Developing Applications with MySQL and JavaDeveloping Applications with MySQL and Java
Developing Applications with MySQL and JavaMark Matthews
 
Show110 - Make your business Open and Social using IBM Notes Social Edition 9.0
Show110 - Make your business Open and Social using IBM Notes Social Edition 9.0Show110 - Make your business Open and Social using IBM Notes Social Edition 9.0
Show110 - Make your business Open and Social using IBM Notes Social Edition 9.0sieverssj
 
CIS13: Bootcamp: PingOne as a Simple Identity Service
CIS13: Bootcamp: PingOne as a Simple Identity ServiceCIS13: Bootcamp: PingOne as a Simple Identity Service
CIS13: Bootcamp: PingOne as a Simple Identity ServiceCloudIDSummit
 
Framework for Web Automation Testing
Framework for Web Automation TestingFramework for Web Automation Testing
Framework for Web Automation TestingTaras Lytvyn
 
Fusion Applications Bare Metal Provisioning - Lessons Learned
Fusion Applications Bare Metal Provisioning - Lessons LearnedFusion Applications Bare Metal Provisioning - Lessons Learned
Fusion Applications Bare Metal Provisioning - Lessons LearnedAndrejs Karpovs
 
From Requirements Management to Release with Git for Android System
From Requirements Management to Release with Git for Android System From Requirements Management to Release with Git for Android System
From Requirements Management to Release with Git for Android System Intland Software GmbH
 
OOW 2012: Integrate Cloud Applications with Oracle SOA Suite
OOW 2012: Integrate Cloud Applications with Oracle SOA SuiteOOW 2012: Integrate Cloud Applications with Oracle SOA Suite
OOW 2012: Integrate Cloud Applications with Oracle SOA SuiteRajesh Raheja
 
01 Ronald Vargas 18c cloud service el siguiente paso en la nueva generacion
01 Ronald Vargas 18c cloud service el siguiente paso en la nueva generacion01 Ronald Vargas 18c cloud service el siguiente paso en la nueva generacion
01 Ronald Vargas 18c cloud service el siguiente paso en la nueva generacionRonald Francisco Vargas Quesada
 
Jee design patterns- Marek Strejczek - Rule Financial
Jee design patterns- Marek Strejczek - Rule FinancialJee design patterns- Marek Strejczek - Rule Financial
Jee design patterns- Marek Strejczek - Rule FinancialRule_Financial
 
Ronald Vargas 18c cloud service el siguiente paso en la nueva generacion
Ronald Vargas 18c cloud service el siguiente paso en la nueva generacionRonald Vargas 18c cloud service el siguiente paso en la nueva generacion
Ronald Vargas 18c cloud service el siguiente paso en la nueva generacionRonald Francisco Vargas Quesada
 
Delivering Mobile Apps to the Field with Oracle JET
Delivering Mobile Apps to the Field with Oracle JETDelivering Mobile Apps to the Field with Oracle JET
Delivering Mobile Apps to the Field with Oracle JETSimon Haslam
 
Presentation cisco cloupia orchestratie for unified data center
Presentation   cisco cloupia orchestratie for unified data centerPresentation   cisco cloupia orchestratie for unified data center
Presentation cisco cloupia orchestratie for unified data centerxKinAnx
 
Standard Issue: Preparing for the Future of Data Management
Standard Issue: Preparing for the Future of Data ManagementStandard Issue: Preparing for the Future of Data Management
Standard Issue: Preparing for the Future of Data ManagementInside Analysis
 
3983 cics java real life projects
3983   cics java real life projects3983   cics java real life projects
3983 cics java real life projectsnick_garrod
 
Software Engineering in the Age of SaaS and Cloud Computing - SERA 2013 - MFF...
Software Engineering in the Age of SaaS and Cloud Computing - SERA 2013 - MFF...Software Engineering in the Age of SaaS and Cloud Computing - SERA 2013 - MFF...
Software Engineering in the Age of SaaS and Cloud Computing - SERA 2013 - MFF...Jaroslav Gergic
 
The Many Faces of PaaS
The Many Faces of PaaSThe Many Faces of PaaS
The Many Faces of PaaSMike Kavis
 

Ähnlich wie Building an Integration Platform with Gradle/Grails - Spring 2GX 2012 (20)

IBM Domino 9.0 Social Edition OpenSocial Component Deployment
IBM Domino 9.0 Social Edition OpenSocial Component DeploymentIBM Domino 9.0 Social Edition OpenSocial Component Deployment
IBM Domino 9.0 Social Edition OpenSocial Component Deployment
 
Grails at Linkedin
Grails at LinkedinGrails at Linkedin
Grails at Linkedin
 
Grails At Linked
Grails At LinkedGrails At Linked
Grails At Linked
 
Developing Applications with MySQL and Java
Developing Applications with MySQL and JavaDeveloping Applications with MySQL and Java
Developing Applications with MySQL and Java
 
Show110 - Make your business Open and Social using IBM Notes Social Edition 9.0
Show110 - Make your business Open and Social using IBM Notes Social Edition 9.0Show110 - Make your business Open and Social using IBM Notes Social Edition 9.0
Show110 - Make your business Open and Social using IBM Notes Social Edition 9.0
 
CIS13: Bootcamp: PingOne as a Simple Identity Service
CIS13: Bootcamp: PingOne as a Simple Identity ServiceCIS13: Bootcamp: PingOne as a Simple Identity Service
CIS13: Bootcamp: PingOne as a Simple Identity Service
 
Framework for Web Automation Testing
Framework for Web Automation TestingFramework for Web Automation Testing
Framework for Web Automation Testing
 
Fusion Applications Bare Metal Provisioning - Lessons Learned
Fusion Applications Bare Metal Provisioning - Lessons LearnedFusion Applications Bare Metal Provisioning - Lessons Learned
Fusion Applications Bare Metal Provisioning - Lessons Learned
 
From Requirements Management to Release with Git for Android System
From Requirements Management to Release with Git for Android System From Requirements Management to Release with Git for Android System
From Requirements Management to Release with Git for Android System
 
OOW 2012: Integrate Cloud Applications with Oracle SOA Suite
OOW 2012: Integrate Cloud Applications with Oracle SOA SuiteOOW 2012: Integrate Cloud Applications with Oracle SOA Suite
OOW 2012: Integrate Cloud Applications with Oracle SOA Suite
 
01 Ronald Vargas 18c cloud service el siguiente paso en la nueva generacion
01 Ronald Vargas 18c cloud service el siguiente paso en la nueva generacion01 Ronald Vargas 18c cloud service el siguiente paso en la nueva generacion
01 Ronald Vargas 18c cloud service el siguiente paso en la nueva generacion
 
Jee design patterns- Marek Strejczek - Rule Financial
Jee design patterns- Marek Strejczek - Rule FinancialJee design patterns- Marek Strejczek - Rule Financial
Jee design patterns- Marek Strejczek - Rule Financial
 
Ronald Vargas 18c cloud service el siguiente paso en la nueva generacion
Ronald Vargas 18c cloud service el siguiente paso en la nueva generacionRonald Vargas 18c cloud service el siguiente paso en la nueva generacion
Ronald Vargas 18c cloud service el siguiente paso en la nueva generacion
 
Delivering Mobile Apps to the Field with Oracle JET
Delivering Mobile Apps to the Field with Oracle JETDelivering Mobile Apps to the Field with Oracle JET
Delivering Mobile Apps to the Field with Oracle JET
 
Presentation cisco cloupia orchestratie for unified data center
Presentation   cisco cloupia orchestratie for unified data centerPresentation   cisco cloupia orchestratie for unified data center
Presentation cisco cloupia orchestratie for unified data center
 
Standard Issue: Preparing for the Future of Data Management
Standard Issue: Preparing for the Future of Data ManagementStandard Issue: Preparing for the Future of Data Management
Standard Issue: Preparing for the Future of Data Management
 
Developer want change Ops want control - devops
Developer want change Ops want control - devopsDeveloper want change Ops want control - devops
Developer want change Ops want control - devops
 
3983 cics java real life projects
3983   cics java real life projects3983   cics java real life projects
3983 cics java real life projects
 
Software Engineering in the Age of SaaS and Cloud Computing - SERA 2013 - MFF...
Software Engineering in the Age of SaaS and Cloud Computing - SERA 2013 - MFF...Software Engineering in the Age of SaaS and Cloud Computing - SERA 2013 - MFF...
Software Engineering in the Age of SaaS and Cloud Computing - SERA 2013 - MFF...
 
The Many Faces of PaaS
The Many Faces of PaaSThe Many Faces of PaaS
The Many Faces of PaaS
 

Kürzlich hochgeladen

AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesMd Hossain Ali
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationIES VE
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1DianaGray10
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Commit University
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAshyamraj55
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfJamie (Taka) Wang
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaborationbruanjhuli
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UbiTrack UK
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024D Cloud Solutions
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-pyJamie (Taka) Wang
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Adtran
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8DianaGray10
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1DianaGray10
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6DianaGray10
 
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024SkyPlanner
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Brian Pichman
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URLRuncy Oommen
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfAijun Zhang
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IES VE
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxMatsuo Lab
 

Kürzlich hochgeladen (20)

AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-py
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6
 
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URL
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdf
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptx
 

Building an Integration Platform with Gradle/Grails - Spring 2GX 2012

  • 1. Building an Integration Platform with Grails and Gradle Brian Saville 18 Oct 2012 Adaptive Computing 1 © 2012 ADAPTIVE COMPUTING, INC.
  • 2. Me Brian Saville bsaville@adaptivecomputing.com Twitter: @bksaville Plugins: ▪ External Config Reload ▪ Spring Security OAuth2 Provider ▪ New Doc ▪ Artefact Messaging ▪ Contributor on Others 2 © 2012 ADAPTIVE COMPUTING, INC.
  • 3. Adaptive Computing Highlights ▪ Leaders in cloud and HPC software ▪ 10+ years developing Moab® technology ▪ Leadership team w/ $1.5B+ in exits ▪ 15 issued patents, 34 pending ▪ Backed by top-tier investors: ▪ Global Partnerships: HP, IBM, SGI, Cray, Microsoft, etc. ▪ Over 200 customers such as: 3 © 2012 ADAPTIVE COMPUTING, INC.
  • 4. Moab Web Services ▪ What is it? ▪ Grails 2.0.3 ▪ RESTful Web Services ▪ Business Logic ▪ Plugin Framework (Beta) ▪ What does it do? ▪ Wraps C Core Product ▪ Integrates “old world” non-standardized API with “new world” APIs 4 © 2012 ADAPTIVE COMPUTING, INC.
  • 5. Atypical Grails Deployment ▪ MWS Deployed on Client Servers ▪ WAR file ▪ Tomcat 6 ▪ Oracle/Sun JDK 6 ▪ MongoDB 2.0+ ▪ Customization on Client Sites 5 © 2012 ADAPTIVE COMPUTING, INC.
  • 6. Integration Platform ▪ Reasons ▪ Extensibility ▪ In-House Developers ▪ External Developers ▪ Dynamic Updates to Application Behavior ▪ Why Create Our Own? ▪ Consists of Plugin Framework (Grails) and SDK (Gradle) 6 © 2012 ADAPTIVE COMPUTING, INC.
  • 7. 7 © 2012 ADAPTIVE COMPUTING, INC.
  • 8. Why Do We Care? ▪ Integration Platform Developers 1) Provides a standard pattern to follow 2) Identifies required and optional framework components 3) Treads ground for new integration platforms 4) Identifies hurdles and potential problems ▪ Grails/Gradle Users 1) New advanced application of Grails and Gradle 2) Grails plugin framework can be evaluated with the pattern 3) Gradle plugin framework can be evaluated with the pattern 8 © 2012 ADAPTIVE COMPUTING, INC.
  • 9. Integration Platform Pattern 9 © 2012 ADAPTIVE COMPUTING, INC.
  • 10. The Pattern ▪ Plugin Identification ▪ Lifecycle and State Management ▪ Dependency Management ▪ Extend Application ▪ Services ▪ Configuration Management ▪ Lifecycle Hooks ▪ Metadata ▪ Development (SDK) 10 © 2012 ADAPTIVE COMPUTING, INC.
  • 11. Plugin Identification ▪ By Convention ▪ Class names ▪ Packaging (JAR, Java or Groovy file) ▪ By Interface(s) ▪ IPlugin ▪ Activator (OSGI) ▪ By Configuration ▪ MANIFEST.MF 11 © 2012 ADAPTIVE COMPUTING, INC.
  • 12. Lifecycle and State Management ▪ Concept of State ▪ Stopped and started ▪ More states optional ▪ Control Over State ▪ How to stop, how to start? ▪ How to add plugin? (Removal not required) 12 © 2012 ADAPTIVE COMPUTING, INC.
  • 13. Dependency Management ▪ Internal Dependencies ▪ Build process ▪ Consider IDE ▪ External Dependencies ▪ Fat JARs ▪ Dependency resolution when adding 13 © 2012 ADAPTIVE COMPUTING, INC.
  • 14. Extend Application ▪ Different in Each Case ▪ Custom Services ▪ Web services ▪ Internal services ▪ Provide Resources ▪ Report or Persist Data ▪ … 14 © 2012 ADAPTIVE COMPUTING, INC.
  • 15. Services ▪ Stateless Services ▪ Control services ▪ Logging ▪ Dependent Services ▪ Configuration ▪ Data persistence 15 © 2012 ADAPTIVE COMPUTING, INC.
  • 16. Configuration Management ▪ Access Application Configuration ▪ (Optional) Access Private Configuration ▪ Preferences 16 © 2012 ADAPTIVE COMPUTING, INC.
  • 17. Lifecycle Hooks ▪ State Transition Hooks ▪ Starting and stopping ▪ Before, after, and/or during transition? ▪ Other Hooks ▪ Setup and configuration ▪ How Are They Defined? ▪ Convention ▪ Interfaces (Configuration) 17 © 2012 ADAPTIVE COMPUTING, INC.
  • 18. Development (SDK) ▪ Dependency Management ▪ Build with internal dependencies ▪ Include external dependencies ▪ Testing ▪ Unit ▪ Integration ▪ Deployment ▪ (Optional) RAD Tool 18 © 2012 ADAPTIVE COMPUTING, INC.
  • 19. Metadata ▪ By Convention ▪ By Configuration ▪ Types of Metadata ▪ Project/Plugin information ▪ Author information ▪ (Optional) Configuration constraints ▪ (Optional) Dependency information 19 © 2012 ADAPTIVE COMPUTING, INC.
  • 20. Non-Essential Pattern Elements ▪ Security ▪ Deployment System/Central Repository ▪ Inversion of Control (IoC) Container ▪ Data Persistence ▪ Individual to Plugin ▪ Application Aware ▪ Common Clients and Parsers ▪ XML/JSON 20 © 2012 ADAPTIVE COMPUTING, INC.
  • 21. Non-Essential Pattern Elements Cont. ▪ Events – Built-In and Custom ▪ Decomposition of Logic ▪ Messaging (i18n) ▪ Startup/Shutdown Concerns ▪ Scheduled Jobs ▪ Inter-Project Dependencies ▪ Environment Handling 21 © 2012 ADAPTIVE COMPUTING, INC.
  • 22. Grails Plugins ▪ What is Missing? ▪ Standardized configuration management ▪ Platform core is addressing this ▪ Framework is Mature 22 © 2012 ADAPTIVE COMPUTING, INC.
  • 23. MWS Integration Platform 23 © 2012 ADAPTIVE COMPUTING, INC.
  • 24. Introduction ▪ Plugin Type – Plugin Definition Class ▪ One per Class ▪ Stored as Groovy or JAR files ▪ Internally is a Grails artefact ▪ Plugin Instance ▪ Multiple instances for a single plugin type possible ▪ Internally is DB entry and Spring Bean ▪ Dynamic (Running Application) 24 © 2012 ADAPTIVE COMPUTING, INC.
  • 25. Plugin Identification ▪ “Ends With” Class Names ▪ Plugin Types ▪ Translators ▪ Autowired Classes ▪ Spring Annotated Classes ▪ @Component ▪ @Autowired ▪ @Resource ▪ @Scope 25 © 2012 ADAPTIVE COMPUTING, INC.
  • 26. Lifecycle and State Management ▪ States ▪ Started, Stopped, Paused ▪ Plugin Control Service ▪ Start, stop, pause, resume ▪ Adding Plugins ▪ User Interface ▪ REST API 26 © 2012 ADAPTIVE COMPUTING, INC.
  • 27. Dependency Management ▪ SDK for Build Dependencies ▪ Grails JARs ▪ Spring JARs ▪ Support Fat JARs ▪ Dependencies Resolved Before Adding 27 © 2012 ADAPTIVE COMPUTING, INC.
  • 28. Extend Application ▪ Reporting – Application Aware Data Persistence ▪ Expose Custom Web Services ▪ Methods by convention ▪ Almost full REST API ▪ Unsecured annotation ▪ Routed by URL mappings ▪ Built-In Events by Convention 28 © 2012 ADAPTIVE COMPUTING, INC.
  • 29. Services ▪ Logging (Similar to Grails) ▪ Data Persistence Services ▪ Control Service ▪ Individual Datastore Service ▪ SSL Service - SSLSocketFactory ▪ not-yet-commons-ssl with PEM files ▪ In memory keystore ▪ Internal REST Service ▪ Request and response with optional attributes ▪ Returns object with response, easy access properties, parsed data 29 © 2012 ADAPTIVE COMPUTING, INC.
  • 30. Configuration Management ▪ Application Configuration ▪ Grails application bean ▪ Plugin Private Configuration ▪ Metaclass injected “config” property 30 © 2012 ADAPTIVE COMPUTING, INC.
  • 31. Lifecycle Hooks ▪ Implemented as Methods on Plugin Types ▪ beforeStart, afterStart, beforeStop, afterStop ▪ configure ▪ If Not Implemented, Inject Empty Methods ▪ Called from Control Service 31 © 2012 ADAPTIVE COMPUTING, INC.
  • 32. Metadata ▪ Convention ▪ Plugin project compiled class included in JAR ▪ Ends with “Project” ▪ Configuration ▪ Properties on plugin project class ▪ =~ Grails Plugin Class 32 © 2012 ADAPTIVE COMPUTING, INC.
  • 33. Metadata – Dynamic Configuration Constraints ▪ Configuration is Dynamic Map ▪ Utilize Grails Constraints and Conventions ▪ Redo min/max to remove value checking ▪ Add custom plugin constrained property (CP) ▪ Add custom plugin CP builder ▪ Add Custom Constraints ▪ Type (Class) – Infer if not specified ▪ Default value ▪ Required (nullable) ▪ Scriptable URL (exec, file, http) ▪ Customized validator with additional methods 33 © 2012 ADAPTIVE COMPUTING, INC.
  • 34. i18n Messaging ▪ Message Property Files ▪ Included in JAR ▪ Loaded with individual message source per project ▪ Message Method Injected on Plugins ▪ Used to Resolve Constraint Errors ▪ Not quite multi-lingual 34 © 2012 ADAPTIVE COMPUTING, INC.
  • 35. Development (SDK) ▪ Commons JAR ▪ Interfaces, classes, constants, annotations ▪ Testing JAR – TestFor ▪ Gradle Project ▪ Dependencies ▪ Testing and Commons ▪ Creates fat JARs (lib and resolved deps) ▪ Additional build tasks ▪ Handles i18n property files ▪ Cobertura code coverage reports ▪ Unit testing with Spock 35 © 2012 ADAPTIVE COMPUTING, INC.
  • 36. Development (SDK) - Commands ▪ Gradle ▪ create-project -Pproject-name=MyProject ▪ create-plugin -Pplugin-name=sample.MyPlugin ▪ test ▪ upload-test -Pmws.url=http://localhost/mws ▪ (Eventually) Python CLI Wrapper ▪ mplugin create-project MyProject ▪ mplugin create-plugin sample.MyPlugin ▪ mplugin test ▪ mplugin upload --url=http://localhost:8080/mws 36 © 2012 ADAPTIVE COMPUTING, INC.
  • 37. Non-Essential Pattern Elements Status ▪ Security - Yes ▪ Central Repository – No ▪ IoC Container – Spring ▪ Data Persistence – Individual Datastore and Application Aware ▪ Common Clients and Parsers – Client Decided and Groovy ▪ Events – Built-In Only ▪ Decomposition – IoC with Conventions and Annotations 37 © 2012 ADAPTIVE COMPUTING, INC.
  • 38. Non-Essential Pattern Elements Status Cont. ▪ Startup/Shutdown Concerns – Initial Plugins ▪ Scheduled Jobs – Quartz ▪ Inter-Project Dependencies – No ▪ Environment Handling – Application Configuration Parameter 38 © 2012 ADAPTIVE COMPUTING, INC.
  • 39. Comparison to Grails Plugins Concept MWS Plugins Grails Plugins RAD Tool Partial X Configuration X No Standard Integration Tests X Multiple X Instances Custom REST Partial X Metadata Partial X Languages Groovy Groovy & Java Dynamic X Lifecycle X X i18n Partial X 39 © 2012 ADAPTIVE COMPUTING, INC.
  • 40. Demo 40 © 2012 ADAPTIVE COMPUTING, INC.
  • 41. Problems Encountered 41 © 2012 ADAPTIVE COMPUTING, INC.
  • 42. JVM ClassLoaders ▪ Separating ClassLoaders ▪ Locking JARs ▪ Fat JARs ▪ Unresolved: Reloading Typed References 42 © 2012 ADAPTIVE COMPUTING, INC.
  • 43. Language Support ▪ Groovy – Works Great ▪ Java – Interfaces and Metaclass Issues 43 © 2012 ADAPTIVE COMPUTING, INC.
  • 44. Questions? 44 © 2012 ADAPTIVE COMPUTING, INC.