【问题标题】:Where to keep url which is utlised in Java web services?将 Java Web 服务中使用的 url 保存在哪里?
【发布时间】:2017-12-25 18:07:54
【问题描述】:

我正在编写使用其他 Web 服务(来自其他平台)的 Java Web 服务,所以我必须在我的 Java Web 服务中调用这些 API,并且它有 url(静态 ip)。我正在考虑在属性文件中保留包含 IP 的通用 url 部分。但是有什么方法可以将这些属性或 URL 部分保留在 tomcat 中?哪种方式存储 url 更好?

【问题讨论】:

  • 你可以把它们放到 ServletContext 中。这样就可以使用 Web 应用程序容器的管理工具对其进行配置。但这些事情通常很麻烦。就个人而言,我会使用 Typesafe Config,将所有默认值放入类路径(在 WAR 文件中),并允许通过主机文件系统上知名位置的文件覆盖它们(如果需要在 WAR 之后更改它)已建成)。

标签: java web-services tomcat8


【解决方案1】:

我总是将这样的常量定义放入 JNDI 变量中。对于 Tomcat,这意味着在 context.xml 中声明它们 通常这些常量在生产、测试​​和开发环境之间是不同的,因此它们应该与服务器实例相关联,而不是与您的代码相关联。此外,配置信息可能很敏感(用户名和密码等),因此如果暴露给任何可以访问代码库的人,就会出现安全问题。

不幸的是,对于 J2EE 容器如何设置和维护 JNDI 变量没有标准。对于 Tomcat,它们在 context.xml 中声明。对于 IBM Websphere,它们是一个管理控制台设置。对于 Oracle Weblogic,它们位于需要编译到您的 .war 文件中的 weblogic.xml 文件中。

如果您有幸不必在 Weblogic 上进行部署,那么 JNDI 就很棒。您的 .war 可以部署到任何环境,并会为该服务器实例选择正确的设置。

如果您确实需要部署到 Weblogic,您有以下选择:

  • 按照@Thilo 的建议,在文件系统上“众所周知”的位置使用属性文件
  • 让您的部署脚本打开 .war 文件并将 xml 定义文件替换为适合目标环境的文件。

请注意,数据库连接等资源更加标准化。所有 J2EE 容器都允许您从管理控制台或在 Tomcat 的情况下通过编辑 context.xml 来设置数据源。您的代码只需要知道 JNDI 名称,而不需要知道数据库连接的详细信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-25
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    • 2017-06-23
    • 1970-01-01
    相关资源
    最近更新 更多