Java理论与实践: 让J2EE脱离容器 - 编程入门网
期就必须做出选择--选择一 个商业消息产品,或者构建自己的更便宜的、更轻量级的解决方案。Somnifugi JMS 包结合了这两种方式--一个基于高性能的 util.concurrent 库的非持久内 存中消息队列服务,和一个符合 JMS API 的接口。与传统 JMS 提供者相比较, Somnifugi 是相当轻量级的,不管是功能上还是性能上。它只限于在一个 JVM 中使用(尽管可以取消这种限制),并缺少持久性、事务和验证功能。另一方面 ,它特别快--它比传统 JMS 实现快得多,以至于可以在因性能原因可能无法使 用消息的地方使用它。为了表明 Somnifugi 到底有多轻量级,在它的分发中包 含了几个用 JMS 主题取代 Swing/JavaBean 事件框架的例子。
增加的灵活性 Somnifugi 还提供了另一项重要的优点:现在可以开发使用 JMS 接口的组件 ,然后在部署应用程序时决定是使用更快的、内存中的 Somnifugi 提供者还是 更重量级的、但是更可靠的提供者,如 WebSphere MQ。可以将这种选择推迟到 部署时的好处非常巨大--特别是因为需求可能会在项目的开发过程中变化时--并 提供了代码重用的机会,对于自已开发的消息层来说这是不太可能做到的。 Java理论与实践: 让J2EE脱离容器(2)时间:2010-12-20 IBM Brian Goetz在 J2SE 中使用 JNDI 像 JDBC 和 JMS 一样,JNDI 是一种中间件。像 JMS 一样,在 J2SE 应用程 序中使用 JNDI 不像使用 JDBC 那么容易。JDBC 提供者无处不在--有数十种兼 容 JDBC 的商业和开放源代码数据库服务器。虽然所有 J2EE 容器都必须包括一 个 JNDI 提供者,但是对于不属于 J2EE 容器的 JNDI,数量相对就少了。这不 仅使在 J2SE 应用程序中使用 JNDI 更困难了,而且还意味着 J2SE 开发人员不 太可能接触到 JNDI 并认识它的优势。 根据所使用的 JNDI 提供者和应用程序配置,JNDI 可能在 JNDI 名称空间中 存储任意的 Java 对象(有一些限制:有些 JNDI 提供者限制存储的对象是可序 列化的)。一般用 JNDI 存储静态配置数据(整型和字符串型)、JDBC DataSource 对象、JMS Connection 和 Topic 对象,以及无状态的对象(包括 工厂对象)。完整地存储已配置对象,比如 JDBC DataSource 对象,而不只是 配置数据,比如 JDBC URL,还可以增强应用程序的安全性,因为像授权凭证这 样的敏感信息不能被应用程序直接使用。 J2EE 应用程序使用 JNDI 作为连接松散耦合组件之间的“开关板”--J2EE 组件使用 JNDI 寻找其他想要使用的组件,如 EJB 组件,并寻找 JDBC 和 JMS 连接这样的资源。J2EE 组件之间的互连是在组件的部署描述符中声明式地定义 的,容器自动将对象绑定到名称空间中的特定位置,并保证在部署组件之前组件 之间的所有资源依赖关系都得到满足。 J2SE 应用程序可以以类似于 J2EE 应用程序的方式使用 JNDI,只是它们必 须多做一些填充名称空间的工作。但是好处是相同的--应用程序可以更松散地耦 合,组件在运行时彼此发现。 免费 JNDI 提供者 虽然 JNDI 参考实现不包括一般性的 JDNI 提供者,但是可以下载 Sun 网站 提供的 File System (FSContext)。这是一个示例 JNDI 提供者,它是以源代 码的方式提供的,它访问并存储文件中的可序列化对象,还使名称空间的内容可 以保证跨程序调用的一致性。虽然 FSContext JNDI 提供者主要是做为编写 JNDI 提供者的一个示例,但是简单的应用程序也可以使用它作为序列化对象的 持久性数据存储,或者是作为“存根” JNDI 提供者,对从 JNDI 获得其配置的 组件进行单元测试。 JBoss 开放源代码 J2EE 容器还包括一个更一般性的 JNDI 提供者 JNPServer,它可以容易地作为单独的 JNDI 提供者运行,不需要 JBoss 容器。 可以通过 RMI 从远程 JVM 访问 JNP,而在本地 JVM 中不会产 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |