配置java ee_Java EE中的配置管理

配置java ee

当我尝试配置管理与云计算有很多相关性时, 争论 较早。 实际上,我大胆地宣称配置管理是任何认真尝试从软件中节省几美元的基石。

那么什么是配置管理及其主要目标? 在不使事情变得过于复杂的情况下,我认为接下来的两个目标与事实相差不远。

  1. 以可预测的方式建立配置,以确保系统行为正确。
  2. 随着时间的变化,保持配置的一致性。

换句话说,能够在整个软件生命周期中以可靠和安全的方式管理行为的变化。

但是什么是配置? 它是源代码吗? 是否静态加载到当前的类加载器中? 可以在运行时更改它吗? 它是持久性数据吗? VCS是否跟踪? 实际上,它存储在哪里? 群集中的每台计算机都可以访问吗? 更改配置后会怎样? 我们是否关心更改是否经过验证? 用户更改配置是否被授权这样做? 更改如何传播到集群成员? 是否会通知应用程序有关配置更改?

在此之前,我想回顾一下有关维护的知识。

维护通常消耗大约40%至80%(平均60%)的软件成本。 因此,这可能是最重要的生命周期阶段。

关于软件工程的经常被遗忘的基本事实

简而言之(无需争论数字),OAM既困难又成本高昂,显然在动态和弹性的云计算环境中更是如此。 从生产率的角度来看,如果我们可以设计软件,从而避免反弹VCS,从部署管道一直到生产一直迭代产品发布,并且仍然能够管理行为更改,那么我们也许应该考虑对吗? 显然,这也将使软件更适合于不同的环境,即Java的精神和灵魂。

我要指出的是,我们使用配置来延迟决策 ,不仅是关于环境及其资源的决策,而且是针对应用程序业务特定决策的决策。 企业必须能够快速配置与应用程序服务器资源/基础架构无关的产品/规则。

因此,我认为发布后不得更改的部分(行为完整性)是程序的一部分,而配置是运行时行为不变的,严格由程序策略控制,以便可以保证可预测的系统行为,并根据不同的速率在不同级别上强制实施变革–以有效,非侵入性和可靠的方式(但此为基调)。 我想到了开放/封闭原则。

在Java EE的上下文中,此定义仍然不够清楚。 Java EE 6发布了DataSourceDefinition批注,该批注假定配置是代码。 组装者/部署者角色赋予了更多的配置灵活性。 简而言之,目的是可以在部署之前就可以修改应用程序(特别是其xml描述符),可能会覆盖硬编码值。

这种方法一直使我感到困惑,但是也许这取决于不同的人如何看待哪种类型的数据被认为是配置? 但是,我在职业生涯中从来没有听说过,没有听说过或未见过任何实际使用过预期目的的人。 这样做可能有充分的理由。

在Maven中,反馈循环的编译和打包实际上是并行的-几乎每个Maven项目都旨在以存档的形式生成工件。 描述符由Maven生成或由VCS静态跟踪。 无论哪种方式,此过程都会密封应用程序以进行进一步修改,除非解压缩了存档并对其进行了修改。

但是我无法想象这样一种情况:打开JAR文件,修改文本文件,重新打包和重新部署(使用您专有的工具– asadmin,wlst等)是个好主意。 为什么? 考虑发布新版本的* authentic *存档时会发生什么。 汇编程序/部署程序所做的更改将被覆盖或需要重新配置。 因此,如果对版本控制的文件进行临时更改,而这些更改从未被VCS跟踪,则可以说不是一个好主意。 即使他们这样做了,我们也会失去灵活性。

值得一提的是,许多开放源代码项目都使用数字签名来签署发布,以便安全意识强的用户可以找到压缩包的数字信任路径。 如何在不破坏签名的情况下更改此类存档的配置?

考虑对开发的影响,其中每个开发人员可能都有一个单独的数据库表空间来进行集成测试。 聪明的开发人员可能会构建一些对配置文件敏感的Maven插件,以在部署描述符中搜索/替换其私有数据。 但是,为什么在每次更改配置值(例如在两个JUnit测试之间)时,他都应该为此承担负担并遭受周转打击 (我不敢认为这些测试会是什么样子)? 仅Xml文件本身无法验证更改,我们需要一个程序来为我们完成更改。 等待1-2分钟以便应用程序部署只会发现您的值无效,然后再做一遍,这对开发人员的生产力来说是一场灾难。

如果我们进一步研究如何使用阶段然后切换的方法来为集群系统部署软件,则部署描述符将变得更加成问题,因为将需要两个版本的相同档案。 以及为什么生产系统由于静默的价值需要改变而被打扰( 升级 )并停顿 ? 考虑何时拒绝某个值–您是否将值改回(重新打包应用程序等)并在群集上回滚,更正该值并重试? 我不知道……但是现在开始在整个群集中维护SLA可靠性和配置一致性感到不安。

在多租户的情况下,平面名称=值类型的配置也受到限制。 层次结构或类似图形的配置规范更适合于对租户进行建模以启用配置组合等。也许是这样的:

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;@Configuration
public class MysqlXADataSource {@Property(desc = "User name to use for connection authentication.")@Size(min = 6, max = 255)private String user = ""; // default value - hence optional property@Property(desc = "Password to use for connection authentication.")@Size(min = 6, max = 255)private String password = ""; // default value - hence optional property@Property(desc = "A JDBC URL.")@Pattern(regexp = "([a-zA-Z]{3,})://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?")private URL url; // required property@Property(desc = "Port number where a server is listening for requests.")@Min(0)@Max(65535)private Integer portNumber = 1521; // default value - hence optional property@Resourceprivate List<ConfigurableItem> items; // configuration childs
}@Stateless
public class SessionBean {@Resource(name = "jdbc/mysql-ds")private DataSource ds;
}

这将是应用程序视图,并请注意,不假设在何处以及如何实例化配置,并且我们可以通过使用注释处理器在编译时强制类型安全来快速失败。

这是我的自发反映,也许太过分了。 但是我仍然认为,大型和小型应用程序都将从运行时进行配置,不进行软件安装并与配置源(文件,db,ldap,mib等)分离以及如何对其进行管理中受益。

我什至认为Java SE也将从Configuration Management中受益。

有关配置管理,还有很多其他方面需要讨论,例如安全性,管理,通知,架构注册/发现等。但是我将在这里停下来进行评论/反映/意见–部署描述符是管理配置的好方法还是我们需要更复杂的东西吗?

这是与Java EE 7专家组邮件列表上的“ [jsr342-experts] Re:配置”和“ [[jsr342-experts] Re:资源配置””主题相关的帖子。 请随时在这里或邮件列表中发表评论。

参考: Deep Hacks博客上的JCG合作伙伴 Java EE配置管理 。

相关文章 :

  • 晴间多云
  • 在云中开发和测试
  • 故障隔离和恢复:从大规模和超大规模计算中学习
  • 使用Netbeans开发App Engine Java
  • 每个程序员都应该知道的事情

翻译自: https://www.javacodegeeks.com/2011/09/configuration-management-in-java-ee.html

配置java ee

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/358470.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我的世界中国版服务器地图文件在哪,我的世界中国版手机版联机的地图保存在哪 | 手游网游页游攻略大全...

发布时间&#xff1a;2017-05-12我的世界战舰设计图 手机版战舰怎么做.那下面给大家分享的是玩家自己在手机版中手撸的一个战舰建筑哦~那感兴趣的玩家不妨进来看看他是怎么建造战舰的哦~希望大家喜欢. 游戏园我的世界官方群:325049520 二群:25607 ...标签&#xff1a;我的世界 …

kali NETCAT NC的使用

文章目录 nc的常用选项NC具有的常用功能telnet / 获取banner信息传输文本信息传输文件/目录加密传文件端口扫描远程克隆硬盘远程控制NCAT TCPDUMP简单用法 nc的常用选项 -l 开启监听模式&#xff0c;用于入站链接 -p 开放本地端口 -n 远程连接&#xff0c;后面要跟上端口 -v …

如何循序渐进的学习javaScript呢,请听我慢慢道来!

大家可以参考知乎上的这篇文章&#xff0c;我觉得还不错&#xff0c;分享给你们 https://www.zhihu.com/question/19713563

记录链接:与杜克一起玩

最近&#xff0c;我在记录链接方面变得非常有趣&#xff0c;并遇到了Duke项目&#xff0c;该项目提供了一些工具来帮助解决此问题。 我以为可以尝试一下。 进行记录链接时的典型问题是&#xff0c;我们有两个来自不同数据集的记录&#xff0c;它们代表同一实体&#xff0c;但是…

win10修改服务器地址,win10 修改服务器地址

win10 修改服务器地址 内容精选换一换通过华为云创建的ECS服务器默认使用华为云提供的内网DNS进行解析。内网DNS不影响ECS服务器对公网域名的访问。同时&#xff0c;还可以不经Internet&#xff0c;直接通过内网DNS访问其他云上服务内部地址&#xff0c;如OBS、SMN等&#xff0…

enmo_day_06

RAC Data Guard (DG) EMC NAS SAN 双活 数据完整性 约束 &#xff1a; 主键 &#xff1a; 非空 且 唯一 非空 &#xff1a; 唯一 &#xff1a; 外键 &#xff1a; 检查 &#xff1a; DISABLE, ENABLE VALIDATE, NOVALIDATE 约束条件检查 执行语句时 &#xff08;对于非延迟约束…

centos8如何安装yum源(详细步骤)

进入目录 cd /etc/yum.repos.d //进入/etc/yum.repos.d目录查看并删除/etc/yum.repos.d目录下所有的配置文件 ll //查看当前目录的所有文件 rm -rf ./* //删除当前的所有文件下载centos8的镜像源 wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors…

前端开发常见的浏览器兼容性问题?

参考帖子1&#xff1a;https://www.cnblogs.com/angel648/p/11392262.html 参考帖子2&#xff1a;https://www.cnblogs.com/wxf-h/p/10513342.html

2048游戏详解

由于最近在百度IFE看到有2048任务&#xff0c;所以昨天兴趣一来自己也做了一个。大概花了五个小时完成&#xff0c;不过不足之处是操作时没有滑动效果。昨晚新增了手机版本&#xff0c;流畅度还可以&#xff0c;不过由于没有滑动&#xff0c;游戏过程显得很突兀啊&#xff0c;且…

百度搜索引擎服务器性能,百度搜索引擎的特点

1. 基于字词结合的信息处理方式。巧妙解决了中文信息的理解问题&#xff0c;极大地提高了搜索的准确性和查全率。2. 支持主流的中文编码标准。包括GBK(汉字内码扩展规范)、GB2312(简体)、BIG5(繁体)&#xff0c;并且能够在不同的编码之间转换。3. 智能相关度算法。采用了基于内…

vulhub安装教程

0x00 vulhub介绍 Vulhub是一个基于docker和docker-compose的漏洞环境集合&#xff0c;进入对应目录并执行一条语句即可启动一个全新的漏洞环境&#xff0c;让漏洞复现变得更加简单&#xff0c;让安全研究者更加专注于漏洞原理本身。 大哥你等会&#xff0c;你刚才讲的docker我听…

前后端分离如何解决跨域的问题?

参考帖子&#xff1a;https://blog.csdn.net/cuixiaogang110/article/details/81948173?utm_mediumdistribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_sourcedistribute.pc_relevant.none-task-blog-BlogCommendFromMa…

java 并发锁_Java并发教程–重入锁

java 并发锁Java的synced关键字是一个很棒的工具–它使我们可以通过一种简单可靠的方式来同步对关键部分的访问&#xff0c;而且也不难理解。 但是有时我们需要对同步进行更多控制。 我们要么需要分别控制访问类型&#xff08;读取和写入&#xff09;&#xff0c;要么使用起来很…

sublime主题安装

网上发现与之前最相近的两款皮肤分别是Theme – Soda与Flatland。这里就记录一下安装与使用方法。 方法一&#xff1a;手动下载安装&#xff1a; 1.下载安装SublimeText2&#xff0c;这个我就不说了。网上的版本有多个&#xff0c;可以自行选择。也可下载使用最新的SublimeText…

WebCrack:网站后台弱口令批量检测工具

经过这么长时间的测试终于算是可以上线了&#xff0c;写篇文章跟大家分享一下自己的开发思路吧 >注&#xff1a;本工具借鉴吸收了TideSec的web_pwd_common_crack很多优秀的思路&#xff0c;在此基础上增加了很多拓展功能使其更加强大&#xff0c;在这里给TideSec的大佬点个赞…

前端渲染与后端渲染之间的区别?

前端没兴起之前,网页的展示大都是后端渲染,也就是服务器渲染。 随着前端行业的发展,前端的工作越来越精细。前后端开始分离,前端只关注ui渲染。后端只提供数据和进行逻辑处理。 简单的解释,前端写好html模板,让后端直接填数据,这就是后端渲染。 前端渲染是,通过ajax请求…

比较中的Commons VFS,SSHJ和JSch

几周前&#xff0c;我评估了一些用于Java的SSH库。 对它们的主要要求是在远程计算机上进行文件传输和文件操作。 因此&#xff0c;它存在一个基于SSH&#xff0c;SSH文件传输协议&#xff08;或SFTP&#xff09;的网络协议。 因此&#xff0c;我需要一个支持SFTP的SSH库。 一项…

Android自定义xml解析

<?xml version"1.0" encoding"utf-8"?> <resources><Users><User name"jason" age"12" location"Beijing"/><User name"peter" age"18" location"Shanghai"/&g…

前端常见的安全性问题有哪些?

安全性 前端安全问题有哪些? XSS 跨站请求攻击XSRF 跨站请求伪造上边这两个问题,前端也只是辅助,主要还是靠后端XSS原理 在博客里可以写文章,同时偷偷插入一段<script>代码。发布博客,有人查看博客内容打开博客时,就会执行插入的js攻击代码在攻击代码中,获取cook…

(fofa信息收集骚操作)windows查看文件的md5值

1、winr 输入cmd进入控制界面 2、certutil -hashfile XXXX md5(XXXX为绝对路径) Linux下查看文件md5值&#xff1a; 进入文件目录&#xff0c;使用md5sum加文件名&#xff0c;例如md5sum test.txt 像fofa的语法里有可以查找js的md5值&#xff0c;这样就可以收集到更多信息了&…