{"id":464,"date":"2013-02-06T03:05:00","date_gmt":"2013-02-06T03:05:00","guid":{"rendered":"https:\/\/opstree.com\/blog\/\/2013\/02\/06\/initial-thoughts-for-a-patch-framework-for-a-java-based-web-project\/"},"modified":"2019-09-18T15:53:38","modified_gmt":"2019-09-18T10:23:38","slug":"initial-thoughts-for-a-patch-framework-for-a-java-based-web-project","status":"publish","type":"post","link":"https:\/\/opstree.com\/blog\/2013\/02\/06\/initial-thoughts-for-a-patch-framework-for-a-java-based-web-project\/","title":{"rendered":"Initial thoughts for a patch framework for a java based web project"},"content":{"rendered":"<div dir=\"ltr\" style=\"text-align:left;\">Although this blog was not in the pipeline of feb month but I got a requirement to build a patch framework for a java based web project, so along with building this framework I thought of writing this blog as well so that I&#8217;ll get idea from other people as well.<\/p>\n<p>First of all I will talk about what can be patched using this patch framework, majorly it will be three resources\/things that can be patched<\/p>\n<ul style=\"text-align:left;\">\n<li>Class Files<\/li>\n<li>JSP&#8217;s<\/li>\n<li>Static Resources such as images, css, js &#8230;<\/li>\n<\/ul>\n<p>I&#8217;m thinking of adding few other features in this patch framework as well<\/p>\n<ul style=\"text-align:left;\">\n<li>Sequence of patches should be maintained : Since we have a big team around 80 developers working on same code-base, their may be a scenario that we can have two or more patches which needs to be applied to a target system. Their may be a fair chance that those patches have to be executed in a sequence or you can say their could be dependency among patches.<\/li>\n<li>Validation while applying patches : One of the validation that I can think of is that the resources that have to be patched will be either new or existing one &amp; in case of existing resources the system should verify the location at which resources are patched should already have those resources<\/li>\n<li>Rollback : The patch framework should have rollback capability<\/li>\n<\/ul>\n<p>I&#8217;m planning to build this patch framework using<\/p>\n<ul style=\"text-align:left;\">\n<li>Shell scripting : For programming aspect<\/li>\n<li>Git : As a version control system for storing patches<\/li>\n<li>Jenkins : Provide a front-end to user for applying patches<\/li>\n<li>Mysql : Not so sure about it yet but I&#8217;ve to store few information such as what all patches are applied, sequence of patches&#8230;. I can use file systems as well for storing this information<\/li>\n<\/ul>\n<p>Let me know your thought about&nbsp; this framework or any other feature that you can think of<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Although this blog was not in the pipeline of feb month but I got a requirement to build a patch framework for a java based web project, so along with building this framework I thought of writing this blog as well so that I&#8217;ll get idea from other people as well. First of all I &hellip; <a href=\"https:\/\/opstree.com\/blog\/2013\/02\/06\/initial-thoughts-for-a-patch-framework-for-a-java-based-web-project\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Initial thoughts for a patch framework for a java based web project&#8221;<\/span><\/a><\/p>\n","protected":false},"author":171775670,"featured_media":29900,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[28070474],"tags":[30871489,162596790,768739299,3490198,290243],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/11\/DevSecOps-1.jpg","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pfDBOm-7u","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/464"}],"collection":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/users\/171775670"}],"replies":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/comments?post=464"}],"version-history":[{"count":3,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/464\/revisions"}],"predecessor-version":[{"id":1118,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/464\/revisions\/1118"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media\/29900"}],"wp:attachment":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media?parent=464"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/categories?post=464"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/tags?post=464"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}