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

#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetEnjoy Anytime
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Hyundai Motor Group
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 

Recently uploaded (20)

#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 

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