how ion uses virgo - eclipse · broker gateway process builder* ... dispatcher pi? pi! ci! ci? ......

16
How ION uses Virgo Charles Vuijst

Upload: buidien

Post on 31-Aug-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

Template V.17, July 29, 2011

How ION uses Virgo Charles Vuijst

Template V.5, June 13, 2011

Disclaimer

This document reflects the direction Infor may take with regard to the specific product(s) described in this document, all of which is subject to change by Infor in its sole discretion, with or without notice to you. This document is not a commitment to you in any way and you should not rely on this document or any of its content in making any decision. Infor is not committing to develop or deliver anything described herein.

Copyright © 2011 Infor. All rights reserved.

Template V.17, July 29, 2011

Overview

 Virgo 2.1.0.RELEASE Adoption

 ION Runtime Development – The Numbers

 ION Runtime Development Cycle

 Stack Comparison Virgo 2.1.0.RELEASE vs. ION Runtime

 How we use OSGi

 How we use Eclipse

 The Infor ION Case

 Architecture

 Future Thoughts, Feedback, Wishes Copyright © 2011 Infor. All rights reserved. 3

Template V.17, July 29, 2011

Virgo 2.1.0.RELEASE Adoption

 From Equinox 3.5 to Virgo 2.1.0.RELEASE using Kernel only

 Added a Lightweight (Secured) Web Server

 Added Windows Service / Linux Daemon for startup

 Added Spring Integration  Limited, due to inherent “static” context model

 Modified Virgo Kernel Stack  Replaced Spring 3.0.0 with 3.0.5 for Spring Integration

 Added a Watched Repository Folder  for Dynamic Database Vendor plugins with plan files

  Integrations with JDBC, Web Services (SOAP, REST), JMS, JCA, XMPP, File system

Copyright © 2011 Infor. All rights reserved. 4

Template V.17, July 29, 2011

ION Runtime Development Cycle

Copyright © 2011 Infor. All rights reserved. 5

deploys successful builds Bundles Features

Bundles Features

check out Bundles Features

Target Platform & Container Definition

Assemblies successful builds

check in/out

Bundles Features

downloads

Target Platform & Container Definition

Runtime Container

kernel

Template V.17, July 29, 2011

Stack Comparison Virgo 2.1.0.RELEASE vs. ION Runtime

Copyright © 2011 Infor. All rights reserved. 6

ION Runtime 10.0

"Virgo 2.1"

Spring 3.0.5 Spring DM 1.2.1 Equinox 3.6

LogBack 0.9.24

ION Broker

Service Factory

ION Connect Engines

Adapters 2.1 Confirm BOD Management 2.1

Process 2.1

Infor OSGi Core

Hibernate 3.3

Lightweight HTTP(S) Server

Spring Integration 2.0.3

Virgo Management

Micro Services Factory

Content Based Router Transformer

Broker Process

ActiveMQ 5.3

Configuration

Template V.17, July 29, 2011

OSGi

 Spring DM bundles preference  "Let Spring do the repeating work for you"

 Whiteboard Pattern  "Everyting is a service"

 Micro Services  "Static vs. Dynamic Spring Contexts: Singletons vs Prototypes"  Extracted Configuration object (also prototype)  Prototypes currently require container restart  Note on OSGi bundle replacement...

 Maven vs. Bundles & Features  Hybrid development model: Bundles & Features are Maven projects

 Compile & generate "OSGi-ish" artifacts using transitive dependencies  Build on central build server/slaves and local development systems  Using Maven plugin extension model to generate Bundles & Features

Copyright © 2011 Infor. All rights reserved. 7

Template V.17, July 29, 2011

The Infor ION Case Broker Process Model

Copyright © 2011 Infor. All rights reserved. 8

T1  

RL  

CBR1  Queue  Channel  CBR1  

Queue  Channel  T1  

Outbound  Adapter  A1  

Inbound  Adapter  

2  

Queue  Channel  A1  

Queue  Channel  T2  

Queue  Channel  A2  

Outbound  Adapter  A2  “A  processes  always    

starts  with  a  queue”  

“An  Outbound  Adapter  transacAon  always  begins  from  a  

queue  channel”  

“A  Content  Based  Router  always  ends  in  a  transacAon  over  (one  or  more)  queue  

channel(s)”  

T2  

“A  Transformer  always    ends  in  a  transacAon  over  

(one  or  more)  queue  channel(s)”  

“The  Recipient  List  always  ends  in  a  

transacAon  over  (one  or  more)  queue  channel(s)”  

“Each  Element  has  a  queue  channel  

upfront  with  its  name  (from-­‐right-­‐to-­‐leJ)”  

"From Singletons to Prototypes with Transactions"

Queue  Channel  E1  Inbound  

Adapter  1  

Engine  Adapter  E1   Engine  Endpoint  

Template V.17, July 29, 2011

Micro Service Factory

Micro Service Factory

Copyright © 2011 Infor. All rights reserved. 9

Bundle Definitions

Broker Gateway

Broker Process Builder

WHITEBOARD

Configuration Builder

request for instanceID

service reference to instanceID

service reference to instanceID

requests for instanceID

exists?

return service refs

yes

no

return service refs

BundleA service(s)

BundleB service(s)

BundleA1 service(s)

Bundle service(s)

Bundle service(s)

BundleB1 service(s)

request for instanceID

instantiate

delegate configuration builds

broker process model

"Prototypes as Services"

Template V.17, July 29, 2011

Configura)on  Builder  Feature  

Gateway  Feature  

Broker Gateway

Process  Builder  Feature  

Features Design  Element  Base  Feature  

Adapter  Element  Features  

Process  Element  Feature  

Process/Adapter Element(s)

WHITEBOARD  

Micro  Service  Feature  

service event

listener

IConfigListener

ecx

Configuration Builder

configuration-i process/adapter element-i

Desk

Web Service

IProcessBuilder

Broker Object Model

Service Base

“WF, EM, CBM”-Features

Container  Common  Feature  (Virgo  Etc.)  

Recipient List

Element Base

IProcessBuilder

IConfig{Filter-i} Configuration

Service Factory

Model Builder

IMessageSubscription

IAdapter  IAdapterMonitor  IAdapterTypePropertyProvider  IAdapterTypeConnecAonValidator  IMessageSubscripAon  IReceiver{Filter-­‐i}  IConfig{Filter-­‐i}  IConfigListener  

Interfaces-{*}

Adapter Elements (e.g. JDBC, LN, etc.)

Queue Channel Transformer

CBR

IRecipientListBuilder.build

IAdapterMonitor{*} IAdapterTypePropertyProvider{*} IAdapterTypeConnectionValidator{*} IAdapter{*}

transitiveness

10

Dispatcher

Pi? Pi! Ci? Ci!

IRecipientListBuilder

IConfigurationBuilder

Process Builder

IConfigurationBuilder.build

Template V.17, July 29, 2011

Remainder of ION Runtime Features

Copyright © 2011 Infor. All rights reserved. 11

Base  Element  Feature   (Hibernate)  Persistency,  Spring  IntegraAon,  Spring  3.0.5,  JMS,  AcAveMQ,  XML  tooling,  etc.  

enhanced  logging  

ION  Monitoring,  Lightweight  webserver  

Template V.17, July 29, 2011

Lightweight (Secured) Web Server

 Web server that doesn’t involve application descriptors, servlet container, etc.

 Based on JRE’s internal HTTP(S) Server

 Wrapped as Spring DM Bundle

 Exposing JAX-WS based web services through WSDL

 Using self signed SSL certificates: only pipe security

 Seamless integration with .NET WCF

 Using Mutual Authentication based on SSL certificates

 Silent securing .NET 2 OSGi container

 Independent of platform (Windows/Linux) for Virgo Copyright © 2011 Infor. All rights reserved. 12

Template V.17, July 29, 2011

Eclipse

 Using Spring Source Toolsuite (STS) latest version  Run/Test/Debug Virgo Server internally in Eclipse environment

 Using "External Launcher" with Maven  All builds require to run & test headlessly on Jenkins as well

 Maven Builds  Features  Spring DM (OSGi) Bundles  Custom Maven plugins generates feature.xml,  Custom Maven plugin generates Manifest (using BND tool)  Target Platform, fully feature based (update site ready)  Container Assembly, merging Virgo essentials with Target Platform

 No M2Eclipse  Need to run on Jenkins

Copyright © 2011 Infor. All rights reserved. 13

Template V.17, July 29, 2011

Feedback

 Steep learning curve

 Headless Integration Test framework required

 Automatic detection of deadlocks rocks!

 Using modified User Region: Virgo Plan Pipeline Resolver is too slow  "Any hints"?

Copyright © 2011 Infor. All rights reserved. 14

Template V.17, July 29, 2011

Whishes

 User Regions like Plan Files: Version ranges configured

 Plan file Loading sequence instead of alphabetically

 Plan files still required: "Import Bundle" statement

 Dependency tooling would be great to generate overview pictures

 Eclipse + Maven3.0/Tycho + Jenkins to work with Artifactory/Nexus

Copyright © 2011 Infor. All rights reserved. 15

Template V.17, July 29, 2011

How ION use Virgo