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

Managing large and distributed Eclipse server applications

Embed Size (px)

Citation preview

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