Web应用在Weblogic集群中如何获取当前节点
发布网友
发布时间:2022-06-24 17:29
我来回答
共1个回答
热心网友
时间:2023-10-11 13:33
最近给大连项目调优,其中有个点需要在Web应用中获得当前所在WebLogic集群节点的名称,几个人上网查了半天没找到合适的方法,甚至连通过执行系统命令的方法都想用了。
折腾了半天,最后发现,其实很简单。
System.getProperty("weblogic.Name")
这样就能搞定。
获取当前节点IP地址和端口的方法是通过WebLogic的函数,这个可能跟WebLogic的版本有关,我这个是在WebLogic 8.16下测试通过的。当然你也可以通过JVM -D参数自己传。
<%@ page import="javax.naming.Context,
javax.naming.InitialContext,
weblogic.management.MBeanHome,
weblogic.management.configuration.ServerMBean"
%>
<%!
String serverName, serverAddress;
int serverPort;
private void getServerInfo() throws Exception {
Context myCtx = new InitialContext();
MBeanHome home = (MBeanHome)myCtx.lookup(MBeanHome.LOCAL_JNDI_NAME);
serverName=home.getMBeanServer().getServerName();
ServerMBean sc =(ServerMBean)home.getConfigurationMBean(serverName,"ServerConfig"); serverAddress = sc.getListenAddress();
serverPort = sc.getListenPort();
}
%>
<%
try { getServerInfo();
} catch (Exception e) {
}
%>
Server Name: <%=serverName %>
Server Address: <%=serverAddress %>
Server Port: <%=serverPort %>
注意:调用MBeanHome需要一定的权限,如果想跟上面的代码一样可以匿名访问的话,需要在Weblogic中配置一个参数。