在 WebSphere Application Server 中使用资源环境提供程序
2013-05-16 00:00
423 查看
通常来说,部署典型的 Web 应用程序通常包括先在集成测试环境中、然后在测试环境中、最后在生产环境中部署单个 .ear(或 .war)文件。特定于环境的变量对于在部署过程中的每个阶段正确执行应用程序非常重要,这些变量可以作为键值对存储在属性文件中,作为环境项存储在 web.xml 文件中,或者作为查询值存储在关系数据库中。将这些应用程序变量存储在关系数据库中是否可取还有待于进一步论证。不过,将应用程序变量存储在属性文件中(或部署描述符中)需要在部署后修改属性文件(或属性描述符),以便为每个特定的环境修剪这些变量,或者编写脚本,以便在应用程序包装时使用不同的文件设置。无一例外,这些文件在不同的环境中是互不相同的。
在部署后修改部署的文件(属性文件或 web.xml)可能容易出错(在多节点集群系统中进行修改更容易出错),是否接受这一过程取决于组织的指导原则。不管怎样,作为这个通常不太常见情形的替代方法,您可以使用 resource environment provider 避免和消除上面提及的问题:通过将这种依赖于应用程序的变量配置为资源环境项,您可以使用 Websphere Application Server 管理控制台对它们进行管理,而无需再去修改部署的文件。
本文阐释如何创建资源环境提供程序、可引用的对象和自定义属性,如何在 Websphere Application Server 管理控制台中管理自定义属性,以及如何在应用程序中访问这些属性。
本文假设您非常熟悉 Java™ 编程、Websphere Application Server V6 管理和 J2EE™ 技术。
资源环境提供程序
Websphere Application Server Versions 5.x 和 6.x 支持对资源环境引用的引用,这类似于引用其他已经支持的资源引用,如 DataSource 和 QueueConnection 工厂等,并且可以通过 JNDI 查询来访问。尽管在 Websphere Application Server 中为 DataSource、QueueConnection 工厂和其他项目预定义了类,但您必须自己创建引用资源环境提供程序所需的类。
至少需要以下两个类才能在应用程序中使用资源环境提供程序:工厂类和提供自定义属性的类。工厂类必须实现接口 javax.naming.spi.ObjectFactory。方法 getObjectInstance(...) 返回保存自定义属性的类。借助这两个类和 Websphere Application Server 提供的管理支持,我们可以将在属性文件(或部署描述符文件)中定义的属性转换为托管变量,并通过 Websphere Application Server 管理控制台管理它们。通过管理控制台管理这些托管变量后,任何特定于环境的变量都可以通过控制台进行管理,这样就无需更改部署的属性文件或创建特定于环境的属性文件。使用此方法,每个环境都将使用相同的部署文件。
示例实现
使用示例有助于解释这些概念。我们将看到的示例使用以下两个类:
ConfigFactory
Config
清单 1 和清单 2 显示了这两个类的代码。
清单 1. ConfigFactory.java
清单 2. Config.java
在 ConfigFactory.java(清单 1)中阐明了自定义属性的缓存。根据应用程序要求,可以将属性设置为动态的,从而避免在上面的代码中进行缓存。
在部署后修改部署的文件(属性文件或 web.xml)可能容易出错(在多节点集群系统中进行修改更容易出错),是否接受这一过程取决于组织的指导原则。不管怎样,作为这个通常不太常见情形的替代方法,您可以使用 resource environment provider 避免和消除上面提及的问题:通过将这种依赖于应用程序的变量配置为资源环境项,您可以使用 Websphere Application Server 管理控制台对它们进行管理,而无需再去修改部署的文件。
本文阐释如何创建资源环境提供程序、可引用的对象和自定义属性,如何在 Websphere Application Server 管理控制台中管理自定义属性,以及如何在应用程序中访问这些属性。
本文假设您非常熟悉 Java™ 编程、Websphere Application Server V6 管理和 J2EE™ 技术。
资源环境提供程序
Websphere Application Server Versions 5.x 和 6.x 支持对资源环境引用的引用,这类似于引用其他已经支持的资源引用,如 DataSource 和 QueueConnection 工厂等,并且可以通过 JNDI 查询来访问。尽管在 Websphere Application Server 中为 DataSource、QueueConnection 工厂和其他项目预定义了类,但您必须自己创建引用资源环境提供程序所需的类。
至少需要以下两个类才能在应用程序中使用资源环境提供程序:工厂类和提供自定义属性的类。工厂类必须实现接口 javax.naming.spi.ObjectFactory。方法 getObjectInstance(...) 返回保存自定义属性的类。借助这两个类和 Websphere Application Server 提供的管理支持,我们可以将在属性文件(或部署描述符文件)中定义的属性转换为托管变量,并通过 Websphere Application Server 管理控制台管理它们。通过管理控制台管理这些托管变量后,任何特定于环境的变量都可以通过控制台进行管理,这样就无需更改部署的属性文件或创建特定于环境的属性文件。使用此方法,每个环境都将使用相同的部署文件。
示例实现
使用示例有助于解释这些概念。我们将看到的示例使用以下两个类:
ConfigFactory
Config
清单 1 和清单 2 显示了这两个类的代码。
清单 1. ConfigFactory.java
package com.ibm.acme.ree.lib; import java.util.Enumeration; import java.util.Hashtable; import javax.naming.Context; import javax.naming.Name; import javax.naming.NamingException; import javax.naming.RefAddr; import javax.naming.Reference; import javax.naming.spi.ObjectFactory; public class ConfigFactory implements ObjectFactory { private static Config config = null; public Object getObjectInstance( Object object, Name name, Context nameCtx, Hashtable environment) throws NamingException { if(config == null) { config = new Config(); Reference ref = (Reference) object; Enumeration addrs = ref.getAll(); RefAddr addr = null; String entryName = null; String value = null; while (addrs.hasMoreElements()) { addr = (RefAddr) addrs.nextElement(); entryName = addr.getType(); value = (String) addr.getContent(); config.setAttribute(entryName, value); } } return config; } } |
package com.ibm.acme.ree.lib; import java.util.HashMap; import java.util.Map; public class Config { private Map attributes = null; public Config() { attributes = new HashMap(10); } protected void setAttribute(String attributeName, String attributeValue) { attributes.put(attributeName, attributeValue); } public Object getAttribute(String attributeName) { return attributes.get(attributeName); } } |
相关文章推荐
- 在 WebSphere Application Server 中使用资源环境提供程序2
- 在 WebSphere Application Server 中使用资源环境提供程序
- 使用 WebSphere Application Server V8.5 的动态集群功能提高资源利用率并改善性能
- 使用 Rational Application Developer 6.0 和 WebSphere Portal Server 5.1开发 JSF portlet
- 使用 Java Management Extension API 连接 Rational Application Developer V7.0 和 WebSphere Application Server V6.1
- linux环境下安装WebSphere Application Server
- 使用 WebSphere Studio Application Developer 开发 Java 程序: 与 VisualAge for Java 进行比较
- 结合使用最新的 Jython 与 WebSphere Application Server wsadmin 瘦客户端
- 将 Spring 和 Hibernate 与 WebSphere Application Server 一起使用
- net控件中数据导到Excel的格式 首先,我们了解一下excel从web页面上导出的原理。当我们把这些数据发送到客户端时,我们想让客户端程序(浏览器)以excel的格式读取它,所以把mime类型设为:application/vnd.ms-excel,当excel读取文件时会以每个cell的格式呈现数据,如果cell没有规定的格式,则excel会以默认的格式去呈现该cell的数据。这样就给我们提供了自定义数据格式的空间,当然我们必须使用excel支持的格式。下面就列出常用的一些格式: 1) 文本
- IBM WebSphere Application Server下使用URL Rewrting进行Session Tracking的实现
- 使用 WebSphere Application Server V6.1 中的联合存储库扩展用户注册表选项
- IBM WebSphere 开发者技术期刊: 将 Spring 和 Hibernate 与 WebSphere Application Server 一起使用
- 在 WebSphere Process Server 中使用 Oracle Real Application Cluster (RAC)
- 使用 WebSphere Application Server V6.1 中的联合存储库扩展用户注册表选项
- WebSphere Application Server 环境配置与应用部署最佳实践
- 在 WebSphere Application Server 中使用 Oracle RAC 处理两阶段提交
- 使用概要文件简化 WebSphere Application Server 管理
- LXC linux容器简介——在操作系统层次上为进程提供的虚拟的执行环境,限制其使用的CPU和mem等资源,底层是linux内核资源管理的cgroups子系统
- WebSphere Application Server 更新web.xml的问题以解决有些应用在tomcat环境下可以跑,更新到was上失效的问题