浦江网站建设公司,开服表网站开发,现货交易平台合法吗,工商企业注册网入口官网配置java ee当我尝试配置管理与云计算有很多相关性时#xff0c; 争论 较早。 实际上#xff0c;我大胆地宣称配置管理是任何认真尝试从软件中节省几美元的基石。 那么什么是配置管理及其主要目标#xff1f; 在不使事情变得过于复杂的情况下#xff0c;我认为接下来的两个… 配置java ee 当我尝试配置管理与云计算有很多相关性时 争论 较早。 实际上我大胆地宣称配置管理是任何认真尝试从软件中节省几美元的基石。 那么什么是配置管理及其主要目标 在不使事情变得过于复杂的情况下我认为接下来的两个目标与事实相差不远。 以可预测的方式建立配置以确保系统行为正确。 随着时间的变化保持配置的一致性。 换句话说能够在整个软件生命周期中以可靠和安全的方式管理行为的变化。 但是什么是配置 它是源代码吗 是否静态加载到当前的类加载器中 可以在运行时更改它吗 它是持久性数据吗 VCS是否跟踪 实际上它存储在哪里 群集中的每台计算机都可以访问吗 更改配置后会怎样 我们是否关心更改是否经过验证 用户更改配置是否被授权这样做 更改如何传播到集群成员 是否会通知应用程序有关配置更改 在此之前我想回顾一下有关维护的知识。 维护通常消耗大约40至80平均60的软件成本。 因此这可能是最重要的生命周期阶段。 关于软件工程的经常被遗忘的基本事实 简而言之无需争论数字OAM既困难又成本高昂显然在动态和弹性的云计算环境中更是如此。 从生产率的角度来看如果我们可以设计软件从而避免反弹VCS从部署管道一直到生产一直迭代产品发布并且仍然能够管理行为更改那么我们也许应该考虑对吗 显然这也将使软件更适合于不同的环境即Java的精神和灵魂。 我要指出的是我们使用配置来延迟决策 不仅是关于环境及其资源的决策而且是针对应用程序业务特定决策的决策。 企业必须能够快速配置与应用程序服务器资源/基础架构无关的产品/规则。 因此我认为发布后不得更改的部分行为完整性是程序的一部分而配置是运行时行为不变的严格由程序策略控制以便可以保证可预测的系统行为并根据不同的速率在不同级别上强制实施变革–以有效非侵入性和可靠的方式但此为基调。 我想到了开放/封闭原则。 在Java EE的上下文中此定义仍然不够清楚。 Java EE 6发布了DataSourceDefinition批注该批注假定配置是代码。 组装者/部署者角色赋予了更多的配置灵活性。 简而言之目的是可以在部署之前就可以修改应用程序特别是其xml描述符可能会覆盖硬编码值。 这种方法一直使我感到困惑但是也许这取决于不同的人如何看待哪种类型的数据被认为是配置 但是我在职业生涯中从来没有听说过没有听说过或未见过任何实际使用过预期目的的人。 这样做可能有充分的理由。 在Maven中反馈循环的编译和打包实际上是并行的-几乎每个Maven项目都旨在以存档的形式生成工件。 描述符由Maven生成或由VCS静态跟踪。 无论哪种方式此过程都会密封应用程序以进行进一步修改除非解压缩了存档并对其进行了修改。 但是我无法想象这样一种情况打开JAR文件修改文本文件重新打包和重新部署使用您专有的工具– asadminwlst等是个好主意。 为什么 考虑发布新版本的* 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 propertyProperty(desc Password to use for connection authentication.)Size(min 6, max 255)private String password ; // default value - hence optional propertyProperty(desc A JDBC URL.)Pattern(regexp ([a-zA-Z]{3,})://([\w-]\.)[\w-](/[\w- ./?%]*)?)private URL url; // required propertyProperty(desc Port number where a server is listening for requests.)Min(0)Max(65535)private Integer portNumber 1521; // default value - hence optional propertyResourceprivate ListConfigurableItem items; // configuration childs
}Stateless
public class SessionBean {Resource(name jdbc/mysql-ds)private DataSource ds;
} 这将是应用程序视图并请注意不假设在何处以及如何实例化配置并且我们可以通过使用注释处理器在编译时强制类型安全来快速失败。 这是我的自发反映也许太过分了。 但是我仍然认为大型和小型应用程序都将从运行时进行配置不进行软件安装并与配置源文件dbldapmib等分离以及如何对其进行管理中受益。 我什至认为Java SE也将从Configuration Management中受益。 有关配置管理还有很多其他方面需要讨论例如安全性管理通知架构注册/发现等。但是我将在这里停下来进行评论/反映/意见–部署描述符是管理配置的好方法还是我们需要更复杂的东西吗 这是与Java EE 7专家组邮件列表上的“ [jsr342-experts] Re配置”和“ [[jsr342-experts] Re资源配置””主题相关的帖子。 请随时在这里或邮件列表中发表评论。 参考 Deep Hacks博客上的JCG合作伙伴 KristofferSjögren的 Java EE配置管理 。 相关文章 晴间多云 在云中开发和测试 故障隔离和恢复从大规模和超大规模计算中学习 使用Netbeans开发App Engine Java 每个程序员都应该知道的事情 翻译自: https://www.javacodegeeks.com/2011/09/configuration-management-in-java-ee.html配置java ee