Jakarta ee Java EE应用程序的环境设置使用属性文件的替代方法

Jakarta ee Java EE应用程序的环境设置使用属性文件的替代方法,jakarta-ee,properties,configuration,websphere,jndi,Jakarta Ee,Properties,Configuration,Websphere,Jndi,我正在开发胖客户机java应用程序,该应用程序在属性文件中存储了与环境相关的数据(如邮件详细信息、数据库连接密码) 如果应用程序尝试加载时缺少属性文件,则需要发送致命邮件。但为了发送邮件,它需要属性文件。因为它包含所有邮件的详细信息。由于属性文件丢失,导致了一个大问题 因此,请建议我除java代码外的其他属性文件方法 是否可以在websphere中存储属性文件?您的应用程序属性始终可以有默认值,因此这可能是邮件配置的解决方案,前提是存在固定的默认值 另一种方法是使用存储在数据库中的应用程序属性。

我正在开发胖客户机java应用程序,该应用程序在属性文件中存储了与环境相关的数据(如邮件详细信息、数据库连接密码)

如果应用程序尝试加载时缺少属性文件,则需要发送致命邮件。但为了发送邮件,它需要属性文件。因为它包含所有邮件的详细信息。由于属性文件丢失,导致了一个大问题

因此,请建议我除java代码外的其他属性文件方法


是否可以在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身份验证别名
    ,如所述。

    您可以在管理控制台上设置系统属性。