managing large and distributed eclipse server applications

45
Managing large and distributed Eclipse Server Applications Gunnar Wagenknecht, AGETO

Upload: gunnar-wagenknecht

Post on 17-Jul-2015

771 views

Category:

Technology


1 download

TRANSCRIPT

Managing large and distributed Eclipse Server Applications

Gunnar Wagenknecht, AGETO

Topics

Application

Stack

Glue

Giving Back

• E-Commerce

• Web Interface

• Batch Processing

Application

ApplicationUK

DECA

Eclipse Server Application

Equinox

Operating System

Jetty

Servlet JSP

Jasper

Bundles

commons-logging, ...

...

3rdParty p2

...

Laun

cher Jetty Jasper slf4j, ... 3rdParty

ZooKeeper, Solr, Logback,Cassandra, Memcached

Stack

Equinox

Jetty

p2

RAP

Bringing it all together!

Glue

Jetty & OSGi

Logging

Clustering

Provisioning

RAP

Jetty & OSGi

• How do I …o make Servlets availableo for multiple tenantso in different versionso in different configurationso without getting lost

Jetty & OSGi

• What we had …

Jetty & OSGi

• What we created …

OSGi Web App

Servlets, Resources & FiltersSession Isolation

OSGi Web App

Servlets, Resources & FiltersSession Isolation

OSGi Web App

Servlets, Resources & FiltersSession Isolation

https://www.myshop.com/api

https://www.myshop.com/api/v2

http://demo.na.mysystem.secret/

https://my.ssldomain.com:8443/

https://my.ssldomain.com:8444/

https://my.ssldomain.com:8445/

OSGi BundleOSGi BundleOSGi Bundle

Jetty & OSGi

• What we created …public class MyWebApp extends Application {

@Overrideprotected void doInit() throws CoreException {getApplicationContext().registerServlet(…);getApplicationContext().registerResources(…);getApplicationContext().registerFilter(…);

}

}

Jetty & OSGi

• What we created …osgi> http <cmd> [args]

ls … lists registered applications or providers

defineApp … defines an applicationremoveApp … removes an application definitionsetAppProperty … sets/removes an application property

mount … mounts an application at the specified URLunmount … unmounts the specified URL

start … starts an applicationstop … stops an application

Jetty & OSGi

• What we created …osgi> jetty <cmd> [args]

ls … list all connectors or certificates

addConnector … adds a connectorremoveConnector … removes a connector

importCertificate … imports a certificateremoveCertificate … removes a certificate

Logging

Logging

SLF4JJCLJULlog4j.log

Logging

• What we had…

Logging

• Kind of what we wanted…

Logging

• What we ended up with…

Cassandra

Syslog

JCL, JUL, log4j, .log & Co.

Clustering

• What Equinox offers out-of-the-box…

Clustering

• Oh, may be Jetty…

Clustering

• What we wanted…o group/membershipo configurationo distributed

coordinationo don‘t write it, use it

Membership

Grouping

Configuration

Coordination

Clustering

• What we got… (finally!)

osgi> zk ls /mycloudlocksprefsqueuesnodes

Provisioning

We got p2!

Easy. Next slide!

p2

IUProfile

AgentDirector

Publisher

Provisioning

RAP

• What we wanted...

Looooong history in RAP

GivingBack

PDE

RAP

Jetty

Gyrex

Bug Reports & Patches

• PDE• RAP• Jetty• Equinox

Sometimes it works

Sometimes it doesn‘t

Sometimes it doesn‘t

Never give up!

Additional Pieces

• Distributed Processingo Scheduler & Workerso Quartz & Eclipse Jobs API

• Contextual Runtimeo Per tenant customization/configurationo DI (provisional)

Playground…

• Running Orion• EclipseLink JPA• Caching Backends• Dynamic Scaling

Q&A

[email protected]/in/eclipsegurutwitter.com/eclipseguru