Today your customers want to tailor applications to their specific needs, in terms of both business logic and user interface. In short, they want to inject custom code to transform a mainstream system into a platform as a service (PaaS). To support this vision, Amadeus built an extensibility framework relying on the JVM and JSR 223 to turn its business-critical solutions into a PaaS. Attend this session to hear how it dealt with JSR 223 limitations, why it picked Groovy as its favorite language, and the challenges it faced with sandboxing and hot swap on multitenant systems. The presentation also shares what Amadeus expects from invokedynamic and the coming support of JavaScript on the JVM.
Amadeus provides transaction processing power and technology solutions to both travel providers (airlines, hotels, rail operators, cruise and ferry operators, car rental, tour operators) and travel agencies (online and offline). A worldwide network connecting travel providers and travel agencies through a highly effective processing platform for the distribution of travel products and services, and as a provider of a comprehensive portfolio of IT solutions which automate mission-critical business processes.
We are concerned with two last
Struggle to address differentiation and local requirementsWe are concerned with two last[A corporate booking tool deploy in Chile -> Chilean railway]No time, always more pressing demands, leads to adoption issues or misfit with some markets
Typical e-Commerce setup, web-server, app-server, database, EIS. Running on iPlanet, Weblogic, Windows, blue part: Linux, in-house
We want to have option to change direction.
Allows safe timed executions of scripts by adding elapsed time checks on loops (for, while, do), the first statement of closures, and the first statement of methods. This is especially useful when executing foreign scripts that you do not have control over. Inject this transformation into a script that you want to timeout after a specified amount of time. Allows "interrupt-safe" executions of scripts by adding Thread.currentThread().isInterrupted() checks on loops (for, while, do) and first statement of closures. By default, also adds an interrupt check statement on the beginning of method calls.
Used annotations coming with groovy 1 to specify at compile time methods maximum execution time transformation add a statement checking the condition as the first statement of for/while/do loops (so one check at the beginning of each iteration) closure/method calls (so one check when entering a user defined method/closure) nothing stops a script doing long I/Os in a procedural script But we can inject this annotation automatically in compiler configuration so it applies to all scripts We even used the transformation // (we could maybe use transformations directly but annotations provide a nicer API than manipulating AST nodes)
Simple Json over HTTP, no particular std
Distributed CVSDevelop, test and debug locallyDeploy and activateIntegrate automatic provisioning in the deployment processReport on usage in a multi-tenant environmentMain candidate Javascript
Distributed CVSDevelop, test and debug locallyDeploy and activateIntegrate automatic provisioning in the deployment processReport on usage in a multi-tenant environmentMain candidate Javascript
Distributed CVSDevelop, test and debug locallyDeploy and activateIntegrate automatic provisioning in the deployment processReport on usage in a multi-tenant environmentMain candidate Javascript