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

WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 

Recently uploaded (20)

WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 

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