在哪里保存Java web服务中使用的url?
我正在编写java web服务,这些服务正在利用其他web服务(某些其他平台的),因此我必须在java web服务中调用这些API,它有url(静态ip)。我想在属性文件中保留包含IP的公共url部分。但有没有办法在tomcat中保留这些属性或URL部分?存储url的更好方法是什么?我总是将这样的常量定义放入JNDI变量中。对于Tomcat来说,这意味着在context.xml中声明它们通常这些常量在生产、测试和开发环境中是不同的,因此它们应该绑定到服务器实例,而不是您的代码。此外,配置信息可能是敏感的(用户名和密码等),因此,如果暴露给任何可以访问代码库的人,这将是一个安全问题 不幸的是,没有关于J2EE容器如何设置和维护JNDI变量的标准。对于Tomcat,它们在context.xml中声明。对于IBMWebSphere,它们是一个管理控制台设置。对于Oracle Weblogic,它们位于需要编译到.war文件中的Weblogic.xml文件中 如果您足够幸运,不必在Weblogic上部署,那么JNDI非常棒。您的.war可以部署到任何环境,并将为该服务器实例选择正确的设置 如果确实需要部署到Weblogic,则有以下选项:在哪里保存Java web服务中使用的url?,java,web-services,tomcat8,Java,Web Services,Tomcat8,我正在编写java web服务,这些服务正在利用其他web服务(某些其他平台的),因此我必须在java web服务中调用这些API,它有url(静态ip)。我想在属性文件中保留包含IP的公共url部分。但有没有办法在tomcat中保留这些属性或URL部分?存储url的更好方法是什么?我总是将这样的常量定义放入JNDI变量中。对于Tomcat来说,这意味着在context.xml中声明它们通常这些常量在生产、测试和开发环境中是不同的,因此它们应该绑定到服务器实例,而不是您的代码。此外,配置信息可能
- 按照@Thilo的建议,在文件系统的“已知”位置使用属性文件
- 让您的部署脚本打开.war文件,并将xml定义文件替换为适合目标环境的文件
请注意,数据库连接等资源在某种程度上更加标准化。所有J2EE容器都允许您从管理控制台或在Tomcat的情况下通过编辑context.xml来设置数据源。您的代码只需要知道JNDI名称,而不需要知道数据库连接的详细信息。您可以将它们放到ServletContext中。这样,就可以使用web应用程序容器的管理工具对其进行配置。但这些事情通常都很麻烦。就我个人而言,我会使用Typesafe配置,将所有默认值放入类路径(在WAR文件中),并允许通过主机文件系统上一个已知位置的文件(如果在WAR构建后需要更改)覆盖它们。