gpt4 book ai didi

java - 在 weblogic 上运行时检索当前服务器的提供程序 URL(不推荐使用的方式)

转载 作者:行者123 更新时间:2023-12-02 04:25:43 24 4
gpt4 key购买 nike

我有一个Singleton Service部署到Weblogic集群时,我想从单例本身(服务器端,而不是日志)知道部署单例服务的服务器的提供者url(监听地址和端口)。

我找到了this (old) article from Oracle ,并编写了此方法来构造提供者 url。

private static String getCurrentServerUrl() throws NamingException {
weblogic.management.MBeanHome home =
(weblogic.management.MBeanHome) new Environment().getInitialContext().lookup(weblogic.management.MBeanHome.LOCAL_JNDI_NAME);

Set mbeanSet = home.getMBeansByType("ServerRuntime");
Iterator mbeanIterator = mbeanSet.iterator();

while (mbeanIterator.hasNext()) {
ServerRuntimeMBean serverRuntime = (ServerRuntimeMBean) mbeanIterator.next();
if (serverRuntime.getState().equals(ServerStates.RUNNING)) {
return serverRuntime.getURL("t3");
}
}

return null;
}

问题是此代码已被弃用(请参阅 MBeanHomeMBeanHome#getMBeansByType(String)MBeanHome#LOCAL_JNDI_NAME )。

执行此操作的未弃用方法是什么?

PS:我不想输入任何地址(无论是服务器的地址还是 JMX 服务的地址,因为应用程序设计为可从服务器迁移到服务器,而无需重新编译或重新配置应用程序)自己)。

感谢您的帮助。

最佳答案

您可以查找所有应用程序都相同的运行时 JMX。无需输入地址、用户或密码。

1) 查找 MBeanServer

InitialContext ctx = new InitialContext();
MBeanServer mBeanServer = (MBeanServer) ctx.lookup("java:comp/env/jmx/runtime");

2) 然后您需要检索运行该应用程序的服务器的名称。这里有两种方法(也许更多)。

最简单的

String serverName = System.getProperty("weblogic.Name");

但我不知道这是否是一个可靠的方法。

获取服务器名称的另一种方法是在运行时服务属性中查找它。

ObjectName serviceObjectName = new ObjectName("com.bea:Name=RuntimeService,Type=weblogic.management.mbeanservers.runtime.RuntimeServiceMBean");
String serverName = (String) mBeanServer.getAttribute(serviceObjectName, "ServerName");

3)现在我们可以创建运行时服务器ObjectName ...

ObjectName serverRuntime = new ObjectName("com.bea:Name="+serverName+",Type=ServerRuntime");

4) ...并获取我们需要的属性

String listenAddress = mBeanServer.getAttribute(serverRuntime, "ListenAddress");
Integer listenPort = mBeanServer.getAttribute(serverRuntime, "ListenPort");

rem:listenAddress 的格式为主机名/IP,您必须对其进行操作以仅获取IP 或主机

从那里您可以访问很多信息;比如管理运行时服务器、运行时集群的管理服务器的地址......

这是我从 WLST 控制台 (WL12.2.1) 获得的列表,未测试我们是否有权访问所有属性/MBean。

dr--   ApplicationRuntimes
dr-- AsyncReplicationRuntime
dr-- BatchJobRepositoryRuntime
dr-- ClassLoaderRuntime
dr-- ClusterRuntime
dr-- ConcurrentManagedObjectsRuntime
dr-- ConnectorServiceRuntime
dr-- DefaultExecuteQueueRuntime
dr-- EntityCacheCumulativeRuntime
dr-- EntityCacheCurrentStateRuntime
dr-- EntityCacheHistoricalRuntime
dr-- ExecuteQueueRuntimes
dr-- JDBCServiceRuntime
dr-- JMSRuntime
dr-- JTARuntime
dr-- JVMRuntime
dr-- JoltRuntime
dr-- LibraryRuntimes
dr-- LogBroadcasterRuntime
dr-- LogRuntime
dr-- MANAsyncReplicationRuntime
dr-- MANReplicationRuntime
dr-- MailSessionRuntimes
dr-- MaxThreadsConstraintRuntimes
dr-- MessagingBridgeRuntime
dr-- MessagingBridgeRuntimes
dr-- MinThreadsConstraintRuntimes
dr-- PartitionRuntimes
dr-- PathServiceRuntime
dr-- PathServiceRuntimes
dr-- PersistentStoreRuntimes
dr-- RequestClassRuntimes
dr-- SAFRuntime
dr-- SNMPAgentRuntime
dr-- ServerChannelRuntimes
dr-- ServerLogRuntime
dr-- ServerSecurityRuntime
dr-- ServerServices
dr-- SingleSignOnServicesRuntime
dr-- ThreadPoolRuntime
dr-- TimerRuntime
dr-- WANReplicationRuntime
dr-- WLDFRuntime
dr-- WTCRuntime
dr-- WebServerRuntimes
dr-- WorkManagerRuntimes
dr-- WseeClusterFrontEndRuntime
dr-- WseeWsrmRuntime

-r-- ActivationTime
-r-- AdminServer
-r-- AdminServerHost
-r-- AdminServerListenPort
-r-- AdminServerListenPortSecure
-r-- AdministrationPort
-r-- AdministrationPortEnabled
-r-- AdministrationURL
-r-- AsyncReplicationRuntime
-r-- ClusterRuntime
-r-- CurrentDirectory
-rw- CurrentMachine
-r-- DefaultExecuteQueueRuntime
-r-- DefaultURL
-r-- EntityCacheCumulativeRuntime
-r-- EntityCacheCurrentStateRuntime
-r-- EntityCacheHistoricalRuntime
-r-- HealthState
-r-- HealthStateJMX
-r-- JoltRuntime
-r-- ListenAddress
-r-- ListenPort
-r-- ListenPortEnabled
-r-- MANAsyncReplicationRuntime
-r-- MANReplicationRuntime
-r-- MessagingBridgeRuntime
-r-- MiddlewareHome
-r-- Name
-r-- OpenSocketsCurrentCount
-r-- OracleHome
-r-- OverallHealthState
-r-- OverallHealthStateJMX
-rw- Parent
-r-- PathServiceRuntime
-r-- RestartRequired
-r-- RestartsTotalCount
-r-- SSLListenAddress
-r-- SSLListenPort
-r-- SSLListenPortEnabled
-r-- ServerClasspath
-r-- SocketsOpenedTotalCount
-r-- State
-r-- StateVal
-r-- Type
-r-- WANReplicationRuntime
-r-- WeblogicHome
-r-- WeblogicVersion
-r-- WseeClusterFrontEndRuntime

关于java - 在 weblogic 上运行时检索当前服务器的提供程序 URL(不推荐使用的方式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32220760/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com