是否有首选方法来更新使用 EJB 的应用程序?
Posted
技术标签:
【中文标题】是否有首选方法来更新使用 EJB 的应用程序?【英文标题】:Is there a perferred method to update apps that use an EJB? 【发布时间】:2008-10-29 19:26:57 【问题描述】:我有一个使用 EJB 的 Java 应用程序,但是如果:
-
EJB 已更新,应用程序已损坏。
应用服务器已更新,应用已损坏。
在没有人工参与的情况下,是否有首选方法来更新应用服务器和 bean 的客户端 jar?
如果首选方法取决于应用服务器,则假设为 jboss。
【问题讨论】:
【参考方案1】:这就是人们迁移到 Web 服务的原因之一 :) 或者也使用 JMS。
真的,如果您的应用服务器升级或供应商发生变化,您的旧/外来存根将无法在服务器端使用新代码。 :-(
还记得 EJB 声明应该有一个应用程序部署者角色吗?由他为客户端应用程序准备 client.jar 并分发它(或者可能是应用程序打包器?没关系;重点是:这不是自动操作)。
一些技巧可能是可行的(比如要求将 client.jar 放在服务器上的特定位置以先由客户端下载,然后使用类加载器使用),但这些技巧比既定做法更多。
至于 JBoss 的具体情况,我没有任何信息。
【讨论】:
【参考方案2】:您的基本问题是,如果一个组件之间的接口合同发生更改,它会破坏另一个组件。这不是仅限于应用程序和 EJB 的问题,它只是编译器不安全。
我所知道的唯一自动化方法是设置您的项目,以使 App 项目依赖于 EJB 项目(在 IDE 和构建文件中),从而为您提供编译器检查。并将它们一起部署为 EAR。
如果这不是一个选项,并且它们必须单独部署,那么您的 EJB 开发人员需要在他的游戏中保持向后兼容接口的完整性。
【讨论】:
对于接口我们有两个。一种使用我们的序列化对象,一种仅使用 java 对象。以上是关于是否有首选方法来更新使用 EJB 的应用程序?的主要内容,如果未能解决你的问题,请参考以下文章
结合 JPA、EJB 和 JSF 托管 bean 的首选设计模式是啥?
我是不是还需要在 CDI bean 上使用 EJB @Clustered 来进行分布式应用程序