Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在tomcat中管理rest web应用程序主机名URL_Java_Rest_Tomcat - Fatal编程技术网

Java 在tomcat中管理rest web应用程序主机名URL

Java 在tomcat中管理rest web应用程序主机名URL,java,rest,tomcat,Java,Rest,Tomcat,这个问题以前可能会被问到,因为这是一个相当常见的练习,但我不确定用什么搜索 我在一个Tomcat实例上托管了一个rest客户端应用程序,在另一个主机名上的另一个Tomcat实例上托管了一个rest服务器。这很好,但目前我在java类中硬编码了主机名。如何在rest客户机内部参数化主机名,以便在不重新启动托管rest客户机的tomcat的情况下允许将来的更改 您可以采用多种解决方案,包括(但不限于): 在客户机服务器上的属性或xml文件中查找服务器主机名(每次要进行REST调用时) 在客户端应用程

这个问题以前可能会被问到,因为这是一个相当常见的练习,但我不确定用什么搜索


我在一个Tomcat实例上托管了一个rest客户端应用程序,在另一个主机名上的另一个Tomcat实例上托管了一个rest服务器。这很好,但目前我在java类中硬编码了主机名。如何在rest客户机内部参数化主机名,以便在不重新启动托管rest客户机的tomcat的情况下允许将来的更改

您可以采用多种解决方案,包括(但不限于):

  • 在客户机服务器上的属性或xml文件中查找服务器主机名(每次要进行REST调用时)
  • 在客户端应用程序中提供一种机制来配置服务器主机名并将其存储在内存中
  • 在LDAP或AD等目录或数据库中查找服务器主机名(每次要进行REST调用时)

  • 如果您不想每次都查找该值,可以使用缓存机制—可能一旦读取该值,它只会在数秒/分钟后过期,或者在多次调用之后。

    传递环境变量甚至主机名的一种非常常见的技术是定义一个系统变量,您可以使用java.lang.System.getenv()或java.lang.System.getProperty()读取该系统变量如果在应用程序启动后使用Maven,请在静态常量类中读取该变量,以便在应用程序开始时设置该值,并将其保留到应用程序结束时,还有其他技术涉及web.xml,但为了保持简单,这将起作用。只需将var添加到环境中并读取即可。

    在客户机进程启动期间,始终可以在参数中传递主机名,然后使用System.getProperty(“主机名”)读取这些参数

    但是OP希望能够在不重新启动Tomcat的情况下更改服务器主机名。是的,这是可以的,因为对系统的调用可以在任何部分完成,或者代码是动态的,如果您使用这种方法,但是您的回答说它将在应用程序开始时读取,并一直保留到应用程序结束。OP不希望这样-他们希望在应用程序结束前更改变量。如果您愿意,我的意思是,如果您不重新读取,它将保持相同的值,但您应该在每次要检查是否有更改时重新读取,这取决于逻辑和目的,但这是一个动态合理的问题——我真的希望有一个更好的答案——所以我不明白为什么我的答案是-1,+1,但我会继续寻找