Jakarta ee Java EE应用程序的环境设置使用属性文件的替代方法
我正在开发胖客户机java应用程序,该应用程序在属性文件中存储了与环境相关的数据(如邮件详细信息、数据库连接密码) 如果应用程序尝试加载时缺少属性文件,则需要发送致命邮件。但为了发送邮件,它需要属性文件。因为它包含所有邮件的详细信息。由于属性文件丢失,导致了一个大问题 因此,请建议我除java代码外的其他属性文件方法Jakarta ee Java EE应用程序的环境设置使用属性文件的替代方法,jakarta-ee,properties,configuration,websphere,jndi,Jakarta Ee,Properties,Configuration,Websphere,Jndi,我正在开发胖客户机java应用程序,该应用程序在属性文件中存储了与环境相关的数据(如邮件详细信息、数据库连接密码) 如果应用程序尝试加载时缺少属性文件,则需要发送致命邮件。但为了发送邮件,它需要属性文件。因为它包含所有邮件的详细信息。由于属性文件丢失,导致了一个大问题 因此,请建议我除java代码外的其他属性文件方法 是否可以在websphere中存储属性文件?您的应用程序属性始终可以有默认值,因此这可能是邮件配置的解决方案,前提是存在固定的默认值 另一种方法是使用存储在数据库中的应用程序属性。
是否可以在websphere中存储属性文件?您的应用程序属性始终可以有默认值,因此这可能是邮件配置的解决方案,前提是存在固定的默认值 另一种方法是使用存储在数据库中的应用程序属性。当然,这需要有一个数据库连接(但这在应用程序或容器的持久性配置中很常见) 如中所述,我们在所有web应用程序中使用此技术,主要有两个原因:
为了实现它,您将创建一个应用程序范围的组件,该组件访问应用程序其余部分的数据库属性。您可以通过控制台(环境>命名>名称空间装箱)将字符串属性存储在JNDI树中,然后通过InitialContext访问它们
但对于数据库或邮件服务器等资源,您应该创建数据源、J2C身份验证别名或MailSession条目,然后在应用程序安装期间将其映射到应用程序资源。在WebSphere application server中,这是通过使用
资源环境条目来实现的。您需要执行以下操作:
创建从JNDI读取属性的javax.naming.spi.ObjectFactory的实现。
基本代码可能如下所示:
public Object getObjectInstance(Object object, Name name, Context nameCtx, Hashtable<?, ?> environment) throws Exception {
Properties properties = new Properties();
Reference ref = (Reference) object;
Enumeration addrs = ref.getAll();
while (addrs.hasMoreElements()) {
RefAddr addr = (RefAddr) addrs.nextElement();
String entryName = addr.getType();
String value = (String) addr.getContent();
properties.setProperty(entryName, value);
}
return properties;
}
public对象getObjectInstance(对象对象、名称、上下文名称、哈希表环境)引发异常{
属性=新属性();
Reference ref=(Reference)对象;
枚举地址=ref.getAll();
while(addrs.hasMoreElements()){
RefAddr addr=(RefAddr)addrs.nextElement();
String entryName=addr.getType();
字符串值=(字符串)addr.getContent();
setProperty(entryName,value);
}
归还财产;
}
在服务器中将实现类注册为资源环境提供程序
。按照中描述的步骤操作
定义资源环境条目
并将其绑定到新注册的提供商——
在条目中,创建所需的自定义特性
将资源环境条目
绑定到应用程序中的Java EE模块–这可以通过不同的方式完成,具体取决于模块的类型
如果您需要更多详细信息,这里有一个全面的指南-。如果您使用的是WAS 7.0或更高版本,则无需将提供程序放在共享库中–它可以直接驻留在应用程序中
至于存储凭证,有一个专门的功能–J2C身份验证别名
,如所述。您可以在管理控制台上设置系统属性。