SlideShare a Scribd company logo
1 of 18
Download to read offline
EsiGate
Dev meeting #4
21/11/2013
Servlet filter (1/3)
Goals:
• Process ESI inside a local page
• Process ESI in a remote page to include local pages
Implementation:
• proxy() -> filterChain.filter()
• include() -> request.getRequestDispatcher().include()
Implemented as an extension.
Caching for local resources.
Servlet filter (2/3)
Impact:
• Used instead of proxy in simple projects or in dev
• Automatic switch with ESI capabilities
• Mappings
• More simple
• External
• Taglibs not needed anymore (7 maven modules!) -> Faster builds, easier
maintenance
• JSP
• Wicket
• JSF
• Servlet dependency extracted to a separate module -> possible use outside a
servlet engine
• Jetty
• .NET
Servlet filter (3/3)
Todo:
• Migrate esigate-app-master integration tests
• Improve test coverage
• Support for ESI capabilities
• Cross context includes
• Documentation (migration)
HttpAsyncClient
Goals:
• End to end asynchronous request/response processing.
• Parallel processing
Implementation:
• asynchronous 3.0 servlet-api
• HttpAsyncClient
• 1 thread / CPU

- Note : this leads to Async Esigate
We should be able to release the server worker when a call to a backend
is pending.
ESI now uses Future. With future, we need a running thread to wait for
Future
ESI fixes
- Variable issues
-> Both 4.x and 5.0
- esi:include src alt onerror
- Invalid markup
-> 5.0
SurrogateControl
- Allows proxy capabilities detection
- Used by frameworks (Symphony, …) to switch transparently between local
includes and ESI includes.
- Implemented on 5.0
- New event : CapabilitiesEvent
* Used to collect capabilities (eg. Surrogate/1.0 ESI/1.0 ESIInline/1.0)
* Created the following capabilities : X-ESI-Fragment/1.0, X-ESIReplace/1.0, X-ESI-XSLT/1.0, ESIGATE/4.0
* ESI and Aggregator extensions have been updated to use this event.
-> Use this event in your extensions !

- Can be used to disable Esigate filter if an esigate proxy is used in
front of the application
-> http://sourceforge.net/apps/mantisbt/webassembletool/view.php?id=265
X-Forwarded-*
- Fixed X-Forwarded-* behavior
4.3 and 5.0
- X-Forwarded-For :
fixed syntax, all proxies ip should be appended.
“45.12.34.5, 127.0.0.1”
- X-Forwarded-Proto :
these headers were duplicated in requests.
Now once present, this header is left untouched.

- Grails / spring security ‘s Channel-Security is now working.
Cookie handling
- Esigate is servlet 2.5 : does not support HttpOnly attribute
- Secure attribute + X-Forwarded-Proto : requires connector configuration
(server specific)
-

We should generate cookies ourselves
Tomcat 7 code can be reused (license is ASL 2)
Create a separate project ?
Use cookie generation in mediator ? In core ?
Proxy trust
-

X-Forwarded-For
X-Forwarded-Proto
Surrogate-Capabilities
Others ?

- To process these headers, we have to trust a remote proxy.
- Add a new setting to list trustable proxies.
-> http://sourceforge.net/apps/mantisbt/webassembletool/view.php?id=272
Default settings
- Change default settings, since they are often causing issues :
-

Cookie handling
->
Preserve host
->
Url rewriting
->
Aggregator
->
Http Authentication

Forward ?
On ?
On for html content ?
Removed ?
-> Forward ?

-> http://sourceforge.net/apps/mantisbt/webassembletool/view.php?id=258
- Forward / Discard headers -> Will be removed, if you need it, write an
extension
HttpClient Upgrade
- HttpClient 4.3 is released.
- Some tests are failing (11)
- Integration branch
https://ci.richeton.com/job/Esigate-5.0-HttpClient-4.3-update/

- Errors are probably caused by better request handling by HttpClient
- MISS -> VALIDATED
- We need this to release Esigate 5.0
Performances
- New ideas :
* In esigate-server : remove servlet dependency, use esigate code
directly in a jetty handler. Create a Jetty Mediator
-> This will remove most of the servlet logic (war, web.xml, servlet
context creation)
-> will also solve dependencies issues between jetty bootstrap
libraries and war libraries
* Correctly set inital size of all buffers.
-> StringBuilder default capacity is 16
-> Should be at least 1k, 10k ? in our case.
* StringWriter is synchronized.
-> Need a performance environnement to mesure improvements
Code style
- Checkstyle enabled on CI
- Rules are enforced for NEW errors
-> Do not leave the build broken by checkstyle rules
-> Improve the classes when you touch them
-> Document public methods (yes, this is useful)

Next step is PMD and sonar
Leaderboard
- There are a lot of things to work on.
- Need pointers ? :-)
Q/A ...
What about dynamic configuration load and hot reload ?
It will be possible to reload esigate.properties at runtime by doing : kill HUP ESIGATE_PID
Available in 5.0-SNAPSHOT only ; cf javadoc into ConfigReloadOnHup
Migration to Github (at least get out of sourceforge) : it will ease developer
contribution, it will also avoid sourceforge weird behavior on their
package. A maven plugin is available to deploy site on gh-pages.
There are some issues with keeping track of SVN history. A new BT has been
created : http://sourceforge.net/apps/mantisbt/webassembletool/view.
php?id=277
Q/A ...
It would be great to have the server.jar working with an external esigate.
properties (for now proxy are hard coded in the web.xml). useMapping
should be activated for the server feature.
Available in 5.0-SNAPSHOT only.
How are we supposed to code authentification feature with ESIgate ? What
are the good practices ? (How can we work with X-USER-LOGIN ; bypass
remote authentification with a bridge for X_USER-LOGIN ?)
Code demo
Here are some great example of unit test :
• SurrogateTest.testSurrogateControlWithSurrogate
• SurrogateTest.testSurrogateCapabilitiese
• UriResponse

More Related Content

What's hot

Drupal 8 DevOps . Profile and SQL flows.
Drupal 8 DevOps . Profile and SQL flows.Drupal 8 DevOps . Profile and SQL flows.
Drupal 8 DevOps . Profile and SQL flows.Andrii Podanenko
 
Local development environment evolution
Local development environment evolutionLocal development environment evolution
Local development environment evolutionWise Engineering
 
Selenium grid workshop london 2016
Selenium grid workshop london 2016Selenium grid workshop london 2016
Selenium grid workshop london 2016Marcus Merrell
 
점진적인 레거시 웹 애플리케이션 개선 과정
점진적인 레거시 웹 애플리케이션 개선 과정점진적인 레거시 웹 애플리케이션 개선 과정
점진적인 레거시 웹 애플리케이션 개선 과정Arawn Park
 
DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...
DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...
DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...Aman Kohli
 
Puppet Camp Berlin 2015: Andrea Giardini | Configuration Management @ CERN: G...
Puppet Camp Berlin 2015: Andrea Giardini | Configuration Management @ CERN: G...Puppet Camp Berlin 2015: Andrea Giardini | Configuration Management @ CERN: G...
Puppet Camp Berlin 2015: Andrea Giardini | Configuration Management @ CERN: G...NETWAYS
 
What Prometheus means for monitoring vendors
What Prometheus means for monitoring vendorsWhat Prometheus means for monitoring vendors
What Prometheus means for monitoring vendorsSysdig
 
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다Arawn Park
 
Experiences from Running Masterless Puppet - PuppetConf 2014
Experiences from Running Masterless Puppet - PuppetConf 2014Experiences from Running Masterless Puppet - PuppetConf 2014
Experiences from Running Masterless Puppet - PuppetConf 2014Puppet
 
SaltConf14 - Ben Cane - Using SaltStack in High Availability Environments
SaltConf14 - Ben Cane - Using SaltStack in High Availability EnvironmentsSaltConf14 - Ben Cane - Using SaltStack in High Availability Environments
SaltConf14 - Ben Cane - Using SaltStack in High Availability EnvironmentsSaltStack
 
Selenium Grid
Selenium GridSelenium Grid
Selenium Gridnirvdrum
 
Introduction to selenium_grid_workshop
Introduction to selenium_grid_workshopIntroduction to selenium_grid_workshop
Introduction to selenium_grid_workshopseleniumconf
 
Configuration Management - Finding the tool to fit your needs
Configuration Management - Finding the tool to fit your needsConfiguration Management - Finding the tool to fit your needs
Configuration Management - Finding the tool to fit your needsSaltStack
 
Web Applications with Eclipse RT and Docker in the Cloud
Web Applications with Eclipse RT and Docker in the CloudWeb Applications with Eclipse RT and Docker in the Cloud
Web Applications with Eclipse RT and Docker in the CloudMarkus Knauer
 
Testing the Enterprise layers, with Arquillian
Testing the Enterprise layers, with ArquillianTesting the Enterprise layers, with Arquillian
Testing the Enterprise layers, with ArquillianVirtual JBoss User Group
 
SaltConf14 - Ryan Lane, Wikimedia - Immediate consistency with Trebuchet Depl...
SaltConf14 - Ryan Lane, Wikimedia - Immediate consistency with Trebuchet Depl...SaltConf14 - Ryan Lane, Wikimedia - Immediate consistency with Trebuchet Depl...
SaltConf14 - Ryan Lane, Wikimedia - Immediate consistency with Trebuchet Depl...SaltStack
 
How to successfully migrate to bazel from maven or gradle
How to successfully migrate to bazel from maven or gradleHow to successfully migrate to bazel from maven or gradle
How to successfully migrate to bazel from maven or gradleNatan Silnitsky
 
JAMstack your Angular Applications with Scully
JAMstack your Angular Applications with ScullyJAMstack your Angular Applications with Scully
JAMstack your Angular Applications with ScullySteffi Keran Rani J
 

What's hot (20)

Drupal 8 DevOps . Profile and SQL flows.
Drupal 8 DevOps . Profile and SQL flows.Drupal 8 DevOps . Profile and SQL flows.
Drupal 8 DevOps . Profile and SQL flows.
 
Lviv 2013 d7 vs d8
Lviv 2013   d7 vs d8Lviv 2013   d7 vs d8
Lviv 2013 d7 vs d8
 
Local development environment evolution
Local development environment evolutionLocal development environment evolution
Local development environment evolution
 
Selenium grid workshop london 2016
Selenium grid workshop london 2016Selenium grid workshop london 2016
Selenium grid workshop london 2016
 
점진적인 레거시 웹 애플리케이션 개선 과정
점진적인 레거시 웹 애플리케이션 개선 과정점진적인 레거시 웹 애플리케이션 개선 과정
점진적인 레거시 웹 애플리케이션 개선 과정
 
DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...
DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...
DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...
 
Puppet Camp Berlin 2015: Andrea Giardini | Configuration Management @ CERN: G...
Puppet Camp Berlin 2015: Andrea Giardini | Configuration Management @ CERN: G...Puppet Camp Berlin 2015: Andrea Giardini | Configuration Management @ CERN: G...
Puppet Camp Berlin 2015: Andrea Giardini | Configuration Management @ CERN: G...
 
What Prometheus means for monitoring vendors
What Prometheus means for monitoring vendorsWhat Prometheus means for monitoring vendors
What Prometheus means for monitoring vendors
 
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
 
Experiences from Running Masterless Puppet - PuppetConf 2014
Experiences from Running Masterless Puppet - PuppetConf 2014Experiences from Running Masterless Puppet - PuppetConf 2014
Experiences from Running Masterless Puppet - PuppetConf 2014
 
SaltConf14 - Ben Cane - Using SaltStack in High Availability Environments
SaltConf14 - Ben Cane - Using SaltStack in High Availability EnvironmentsSaltConf14 - Ben Cane - Using SaltStack in High Availability Environments
SaltConf14 - Ben Cane - Using SaltStack in High Availability Environments
 
Selenium Grid
Selenium GridSelenium Grid
Selenium Grid
 
Introduction to selenium_grid_workshop
Introduction to selenium_grid_workshopIntroduction to selenium_grid_workshop
Introduction to selenium_grid_workshop
 
Configuration Management - Finding the tool to fit your needs
Configuration Management - Finding the tool to fit your needsConfiguration Management - Finding the tool to fit your needs
Configuration Management - Finding the tool to fit your needs
 
Tales from the OSGi trenches
Tales from the OSGi trenchesTales from the OSGi trenches
Tales from the OSGi trenches
 
Web Applications with Eclipse RT and Docker in the Cloud
Web Applications with Eclipse RT and Docker in the CloudWeb Applications with Eclipse RT and Docker in the Cloud
Web Applications with Eclipse RT and Docker in the Cloud
 
Testing the Enterprise layers, with Arquillian
Testing the Enterprise layers, with ArquillianTesting the Enterprise layers, with Arquillian
Testing the Enterprise layers, with Arquillian
 
SaltConf14 - Ryan Lane, Wikimedia - Immediate consistency with Trebuchet Depl...
SaltConf14 - Ryan Lane, Wikimedia - Immediate consistency with Trebuchet Depl...SaltConf14 - Ryan Lane, Wikimedia - Immediate consistency with Trebuchet Depl...
SaltConf14 - Ryan Lane, Wikimedia - Immediate consistency with Trebuchet Depl...
 
How to successfully migrate to bazel from maven or gradle
How to successfully migrate to bazel from maven or gradleHow to successfully migrate to bazel from maven or gradle
How to successfully migrate to bazel from maven or gradle
 
JAMstack your Angular Applications with Scully
JAMstack your Angular Applications with ScullyJAMstack your Angular Applications with Scully
JAMstack your Angular Applications with Scully
 

Viewers also liked

Thompson artemis brand_identity_assignment
Thompson artemis brand_identity_assignmentThompson artemis brand_identity_assignment
Thompson artemis brand_identity_assignmentArdamus
 
Thompson artemis devin_the_dude_420_showcase_slides_only
Thompson artemis devin_the_dude_420_showcase_slides_onlyThompson artemis devin_the_dude_420_showcase_slides_only
Thompson artemis devin_the_dude_420_showcase_slides_onlyArdamus
 
Theories of learning
Theories of learningTheories of learning
Theories of learningLedor Nalecne
 
Copy of CA20 Powerpoint
Copy of CA20 PowerpointCopy of CA20 Powerpoint
Copy of CA20 PowerpointKeri Bray
 
Concrete cravings flyer PDF
Concrete cravings flyer PDFConcrete cravings flyer PDF
Concrete cravings flyer PDFOlga Kostrova
 
Esigate dev meeting 25 03_2013
Esigate dev meeting 25 03_2013Esigate dev meeting 25 03_2013
Esigate dev meeting 25 03_2013nricheton
 

Viewers also liked (8)

Thompson artemis brand_identity_assignment
Thompson artemis brand_identity_assignmentThompson artemis brand_identity_assignment
Thompson artemis brand_identity_assignment
 
Thompson artemis devin_the_dude_420_showcase_slides_only
Thompson artemis devin_the_dude_420_showcase_slides_onlyThompson artemis devin_the_dude_420_showcase_slides_only
Thompson artemis devin_the_dude_420_showcase_slides_only
 
Theories of learning
Theories of learningTheories of learning
Theories of learning
 
Copy of CA20 Powerpoint
Copy of CA20 PowerpointCopy of CA20 Powerpoint
Copy of CA20 Powerpoint
 
Concrete cravings flyer PDF
Concrete cravings flyer PDFConcrete cravings flyer PDF
Concrete cravings flyer PDF
 
Speechpwrpnt
SpeechpwrpntSpeechpwrpnt
Speechpwrpnt
 
Esigate dev meeting 25 03_2013
Esigate dev meeting 25 03_2013Esigate dev meeting 25 03_2013
Esigate dev meeting 25 03_2013
 
Doc5
Doc5Doc5
Doc5
 

Similar to ESIGate dev meeting #4 21-11-2013

Servletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postServletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postvamsitricks
 
Servletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postServletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postvamsi krishna
 
Spring_Boot_Microservices-5_Day_Session.pptx
Spring_Boot_Microservices-5_Day_Session.pptxSpring_Boot_Microservices-5_Day_Session.pptx
Spring_Boot_Microservices-5_Day_Session.pptxPrabhakaran Ravichandran
 
Станислав Сидоренко «DeviceHive Java Server – миграция на Spring Boot»
Станислав Сидоренко «DeviceHive Java Server – миграция на Spring Boot»Станислав Сидоренко «DeviceHive Java Server – миграция на Spring Boot»
Станислав Сидоренко «DeviceHive Java Server – миграция на Spring Boot»DataArt
 
Servletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postServletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postvamsitricks
 
introduction to node.js
introduction to node.jsintroduction to node.js
introduction to node.jsorkaplan
 
node.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang Yoonnode.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang YoonJesang Yoon
 
Load Balancing Applications with NGINX in a CoreOS Cluster
Load Balancing Applications with NGINX in a CoreOS ClusterLoad Balancing Applications with NGINX in a CoreOS Cluster
Load Balancing Applications with NGINX in a CoreOS ClusterKevin Jones
 
High Performance Web Sites
High Performance Web SitesHigh Performance Web Sites
High Performance Web SitesRavi Raj
 
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Mack Hardy
 
Continuous integration / continuous delivery
Continuous integration / continuous deliveryContinuous integration / continuous delivery
Continuous integration / continuous deliveryEatDog
 
Introduction to node js - From "hello world" to deploying on azure
Introduction to node js - From "hello world" to deploying on azureIntroduction to node js - From "hello world" to deploying on azure
Introduction to node js - From "hello world" to deploying on azureColin Mackay
 
Testing with Codeception
Testing with CodeceptionTesting with Codeception
Testing with CodeceptionJeremy Coates
 
KubeCon 2017: Kubernetes from Dev to Prod
KubeCon 2017: Kubernetes from Dev to ProdKubeCon 2017: Kubernetes from Dev to Prod
KubeCon 2017: Kubernetes from Dev to ProdSubhas Dandapani
 
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...Jesse Gallagher
 
SCM Puppet: from an intro to the scaling
SCM Puppet: from an intro to the scalingSCM Puppet: from an intro to the scaling
SCM Puppet: from an intro to the scalingStanislav Osipov
 
Easy way to learn Core java full material
Easy way to learn Core java full materialEasy way to learn Core java full material
Easy way to learn Core java full materialSivannarayana Chimata
 
Introduction to Apache Tomcat 7 Presentation
Introduction to Apache Tomcat 7 PresentationIntroduction to Apache Tomcat 7 Presentation
Introduction to Apache Tomcat 7 PresentationTomcat Expert
 

Similar to ESIGate dev meeting #4 21-11-2013 (20)

Kash Kubernetified
Kash KubernetifiedKash Kubernetified
Kash Kubernetified
 
Servletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postServletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,post
 
Servletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postServletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,post
 
Spring_Boot_Microservices-5_Day_Session.pptx
Spring_Boot_Microservices-5_Day_Session.pptxSpring_Boot_Microservices-5_Day_Session.pptx
Spring_Boot_Microservices-5_Day_Session.pptx
 
Станислав Сидоренко «DeviceHive Java Server – миграция на Spring Boot»
Станислав Сидоренко «DeviceHive Java Server – миграция на Spring Boot»Станислав Сидоренко «DeviceHive Java Server – миграция на Spring Boot»
Станислав Сидоренко «DeviceHive Java Server – миграция на Spring Boot»
 
Servletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postServletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,post
 
introduction to node.js
introduction to node.jsintroduction to node.js
introduction to node.js
 
node.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang Yoonnode.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang Yoon
 
Load Balancing Applications with NGINX in a CoreOS Cluster
Load Balancing Applications with NGINX in a CoreOS ClusterLoad Balancing Applications with NGINX in a CoreOS Cluster
Load Balancing Applications with NGINX in a CoreOS Cluster
 
High Performance Web Sites
High Performance Web SitesHigh Performance Web Sites
High Performance Web Sites
 
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
 
Continuous integration / continuous delivery
Continuous integration / continuous deliveryContinuous integration / continuous delivery
Continuous integration / continuous delivery
 
Introduction to node js - From "hello world" to deploying on azure
Introduction to node js - From "hello world" to deploying on azureIntroduction to node js - From "hello world" to deploying on azure
Introduction to node js - From "hello world" to deploying on azure
 
Testing with Codeception
Testing with CodeceptionTesting with Codeception
Testing with Codeception
 
KubeCon 2017: Kubernetes from Dev to Prod
KubeCon 2017: Kubernetes from Dev to ProdKubeCon 2017: Kubernetes from Dev to Prod
KubeCon 2017: Kubernetes from Dev to Prod
 
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
 
SCM Puppet: from an intro to the scaling
SCM Puppet: from an intro to the scalingSCM Puppet: from an intro to the scaling
SCM Puppet: from an intro to the scaling
 
Easy way to learn Core java full material
Easy way to learn Core java full materialEasy way to learn Core java full material
Easy way to learn Core java full material
 
Corejava ratan
Corejava ratanCorejava ratan
Corejava ratan
 
Introduction to Apache Tomcat 7 Presentation
Introduction to Apache Tomcat 7 PresentationIntroduction to Apache Tomcat 7 Presentation
Introduction to Apache Tomcat 7 Presentation
 

Recently uploaded

Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 

Recently uploaded (20)

Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 

ESIGate dev meeting #4 21-11-2013

  • 2. Servlet filter (1/3) Goals: • Process ESI inside a local page • Process ESI in a remote page to include local pages Implementation: • proxy() -> filterChain.filter() • include() -> request.getRequestDispatcher().include() Implemented as an extension. Caching for local resources.
  • 3. Servlet filter (2/3) Impact: • Used instead of proxy in simple projects or in dev • Automatic switch with ESI capabilities • Mappings • More simple • External • Taglibs not needed anymore (7 maven modules!) -> Faster builds, easier maintenance • JSP • Wicket • JSF • Servlet dependency extracted to a separate module -> possible use outside a servlet engine • Jetty • .NET
  • 4. Servlet filter (3/3) Todo: • Migrate esigate-app-master integration tests • Improve test coverage • Support for ESI capabilities • Cross context includes • Documentation (migration)
  • 5. HttpAsyncClient Goals: • End to end asynchronous request/response processing. • Parallel processing Implementation: • asynchronous 3.0 servlet-api • HttpAsyncClient • 1 thread / CPU - Note : this leads to Async Esigate We should be able to release the server worker when a call to a backend is pending. ESI now uses Future. With future, we need a running thread to wait for Future
  • 6. ESI fixes - Variable issues -> Both 4.x and 5.0 - esi:include src alt onerror - Invalid markup -> 5.0
  • 7. SurrogateControl - Allows proxy capabilities detection - Used by frameworks (Symphony, …) to switch transparently between local includes and ESI includes. - Implemented on 5.0 - New event : CapabilitiesEvent * Used to collect capabilities (eg. Surrogate/1.0 ESI/1.0 ESIInline/1.0) * Created the following capabilities : X-ESI-Fragment/1.0, X-ESIReplace/1.0, X-ESI-XSLT/1.0, ESIGATE/4.0 * ESI and Aggregator extensions have been updated to use this event. -> Use this event in your extensions ! - Can be used to disable Esigate filter if an esigate proxy is used in front of the application -> http://sourceforge.net/apps/mantisbt/webassembletool/view.php?id=265
  • 8. X-Forwarded-* - Fixed X-Forwarded-* behavior 4.3 and 5.0 - X-Forwarded-For : fixed syntax, all proxies ip should be appended. “45.12.34.5, 127.0.0.1” - X-Forwarded-Proto : these headers were duplicated in requests. Now once present, this header is left untouched. - Grails / spring security ‘s Channel-Security is now working.
  • 9. Cookie handling - Esigate is servlet 2.5 : does not support HttpOnly attribute - Secure attribute + X-Forwarded-Proto : requires connector configuration (server specific) - We should generate cookies ourselves Tomcat 7 code can be reused (license is ASL 2) Create a separate project ? Use cookie generation in mediator ? In core ?
  • 10. Proxy trust - X-Forwarded-For X-Forwarded-Proto Surrogate-Capabilities Others ? - To process these headers, we have to trust a remote proxy. - Add a new setting to list trustable proxies. -> http://sourceforge.net/apps/mantisbt/webassembletool/view.php?id=272
  • 11. Default settings - Change default settings, since they are often causing issues : - Cookie handling -> Preserve host -> Url rewriting -> Aggregator -> Http Authentication Forward ? On ? On for html content ? Removed ? -> Forward ? -> http://sourceforge.net/apps/mantisbt/webassembletool/view.php?id=258 - Forward / Discard headers -> Will be removed, if you need it, write an extension
  • 12. HttpClient Upgrade - HttpClient 4.3 is released. - Some tests are failing (11) - Integration branch https://ci.richeton.com/job/Esigate-5.0-HttpClient-4.3-update/ - Errors are probably caused by better request handling by HttpClient - MISS -> VALIDATED - We need this to release Esigate 5.0
  • 13. Performances - New ideas : * In esigate-server : remove servlet dependency, use esigate code directly in a jetty handler. Create a Jetty Mediator -> This will remove most of the servlet logic (war, web.xml, servlet context creation) -> will also solve dependencies issues between jetty bootstrap libraries and war libraries * Correctly set inital size of all buffers. -> StringBuilder default capacity is 16 -> Should be at least 1k, 10k ? in our case. * StringWriter is synchronized. -> Need a performance environnement to mesure improvements
  • 14. Code style - Checkstyle enabled on CI - Rules are enforced for NEW errors -> Do not leave the build broken by checkstyle rules -> Improve the classes when you touch them -> Document public methods (yes, this is useful) Next step is PMD and sonar
  • 15. Leaderboard - There are a lot of things to work on. - Need pointers ? :-)
  • 16. Q/A ... What about dynamic configuration load and hot reload ? It will be possible to reload esigate.properties at runtime by doing : kill HUP ESIGATE_PID Available in 5.0-SNAPSHOT only ; cf javadoc into ConfigReloadOnHup Migration to Github (at least get out of sourceforge) : it will ease developer contribution, it will also avoid sourceforge weird behavior on their package. A maven plugin is available to deploy site on gh-pages. There are some issues with keeping track of SVN history. A new BT has been created : http://sourceforge.net/apps/mantisbt/webassembletool/view. php?id=277
  • 17. Q/A ... It would be great to have the server.jar working with an external esigate. properties (for now proxy are hard coded in the web.xml). useMapping should be activated for the server feature. Available in 5.0-SNAPSHOT only. How are we supposed to code authentification feature with ESIgate ? What are the good practices ? (How can we work with X-USER-LOGIN ; bypass remote authentification with a bridge for X_USER-LOGIN ?)
  • 18. Code demo Here are some great example of unit test : • SurrogateTest.testSurrogateControlWithSurrogate • SurrogateTest.testSurrogateCapabilitiese • UriResponse