java正在获取WebSphere app Server的实例名称
我的Web服务将在Jboss应用程序服务器或Websphere应用程序服务器上运行。对于它们,我都需要知道实例名,对于Jboss,我可以使用System.getProperty("jboss.server.name"),
,但是对于WebSphere,我可以使用什么呢?我不能使用特定于WebSphere的方法,我需要调用系统。性质
谢谢
你可以在下面搜索框中键入要查询的问题!
我的Web服务将在Jboss应用程序服务器或Websphere应用程序服务器上运行。对于它们,我都需要知道实例名,对于Jboss,我可以使用System.getProperty("jboss.server.name"),
,但是对于WebSphere,我可以使用什么呢?我不能使用特定于WebSphere的方法,我需要调用系统。性质
谢谢
# 1 楼答案
我同意将服务器名指定为环境变量(Manglu的touch也不错)。为了让讨论更加完整,下面是如何通过运行时获取实例名(该API在最近的版本中已被弃用,但仍在使用)
示例输出如下
# 2 楼答案
至少对于WebSphere来说,另一种选择是在JNDI树中查找它。 这就是我使用的:
这样我就不必配置任何东西,因为WebSphere为我绑定了这些信息
还可以使用“thisNode/Cell/cellname”和“thisNode/nodename”检索单元格和节点名称。集群中有用的东西
# 3 楼答案
为了保持它与平台无关,可以将一个变量设置为Websphere服务器的JVM参数(如果其集群化,则每个节点一个)。对于Websphere 7,您将在管理控制台中找到以下内容
再加上一个这样的变量
然后您可以访问代码中的值作为
只要您有权向JVM添加参数,这种技术就可以用于所有应用程序服务器。我确信必须有特定于Websphere的API来查询节点名称,但是您要向服务器输入代码,这使得单元测试很困难,而且不可移植。我更喜欢这种方法
# 4 楼答案
布拉德建议的方法很好,但我会做得稍微不同
在服务器JVM的自定义属性中,我将添加一个属性服务器名称,并将其值指定为WAS_Server_Name
这是面包屑:
服务器->->;流程定义->;Java虚拟机>;自定义属性
添加一个值为${WAS_SERVER_NAME}的新服务器名
每个WAS服务器实例都将此WebSphere变量设置为服务器实例的名称。您不必担心输入错误(或类似错误),这种方法适用于所有WAS服务器
您可以使用设置为模板的值创建服务器,当您创建新服务器时,这些值始终存在
嗯
# 5 楼答案
kurtcebe解决方案运行良好。对于那些使用maven的人,您将无法轻松地将jar放入您的项目中。因此,使用类。因为名字