【问题标题】:Java web app and properties fileJava Web 应用程序和属性文件
【发布时间】:2015-10-23 08:13:19
【问题描述】:

我正在尝试使用 Java Jersey 创建一个 Web 应用程序。该项目(动态 Web 项目)应具有可由客户端/服务器管理员在运行时更改的参数。管理员无权访问数据库。 在将我们的应用程序转换为 Web 服务之前,我们在主 jar 旁边的文件夹中定义了属性文件。有没有办法让动态网络应用程序拥有类似的东西? 我的想法是有一个包含属性文件的文件夹,服务器管理员可以访问和更改(以便 Web 服务可以在运行时更改它的工作参数)。将属性存储在数据库而不是文件中是不行的。它必须是一个配置文件:) 您是否知道我应该如何将我的属性文件放在相对路径中,以便服务器管理员使用该文件可以在 WS 已经部署和工作时更改某些 Web 服务参数?

【问题讨论】:

  • 也许你会从this得到一些想法
  • 如果您使用 CDI,您可以考虑使用 Apache DeltaSpike 配置机制。看看here

标签: java web-services properties jersey


【解决方案1】:

根据您的要求,您可以使用属性文件,但问题是 WS 仅在启动时才加载属性文件。因此,您必须在程序代码中加载该属性文件。并且您需要在一段时间后重新加载文件。 请参考以下代码供您参考:

公共类 ResourceHandler {

/** The service end points. Creates properties file object. */
Properties serviceEndPoints = new Properties();


/** The resource handler. */
private static ResourceHandler resourceHandler = new ResourceHandler();

/**
 * Instantiates a new resource handler.
 */
ResourceHandler() {
    try {
           /* Load the properties file from class path, you can use reguler file path instead of this. */
        serviceEndPoints.load(this.getClass().getResourceAsStream(
                "serviceEndPoints.properties"));

    } catch (IOException e) {
    }
}

/**
 * Instance.
 * 
 * @return the resource handler
 */
public static synchronized ResourceHandler instance() {
    if (resourceHandler == null)
        resourceHandler = new ResourceHandler();
    return resourceHandler;
}

/**
 * Gets the service end points.
 * 
 * @param key
 *            the key
 * @return the service end points
 * Use this method to get values of parameters from properties file.
 */
public String getServiceEndPoints(String key) {
    return ((String) serviceEndPoints.get(key));
}

}

以上代码用于一次加载文件。当您想获取那些立即更改的参数时,您必须在一段时间后加载该文件。但肯定是有可能的!

【讨论】:

    猜你喜欢
    • 2010-10-04
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-20
    • 2012-12-06
    相关资源
    最近更新 更多