来自 运行 servlet 的 WebLogic Introspection/Query 域信息
WebLogic Introspection/Query domain information from a running servlet
有没有办法在 运行 网络应用程序中从域中查询有关应用程序的元信息——具体来说,我希望能够检测到 WebLogic 管理员的端口和主机名动态服务器,因为它因环境而异。
我使用的是 WebLogic 12c,但更多版本的信息也很有用。谢谢!
您可以从传入请求中查询此信息,在 Servlet 中它会像这样工作:
@Override
public void service(final HttpServletRequest req, final HttpServletResponse res)
throws ServletException, IOException {
System.out.println("Server name " + req.getServerName());
System.out.println("Server port " + req.getServerPort());
}
或者您可以通过 JMX 直接从域中获取它(无需请求。另请参阅 http://docs.oracle.com/middleware/1212/wls/JMXCU/accesswls.htm#JMXCU144):
private void printHostAndPort() throws Exception {
final InitialContext ctx = new InitialContext();
final MBeanServerConnection server = (MBeanServerConnection) ctx.lookup("java:comp/env/jmx/domainRuntime");
final ObjectName runtimeservicebean = new ObjectName(
"com.bea:Name=DomainRuntimeService,Type=weblogic.management.mbeanservers.domainruntime.DomainRuntimeServiceMBean");
// Here can be several
final ObjectName[] serverRuntimeMBeans = (ObjectName[]) server.getAttribute(runtimeservicebean,
"ServerRuntimes");
final String name = (String) server.getAttribute(serverRuntimeMBeans[0], "Name");
System.out.println(name);
final String address = (String) server.getAttribute(serverRuntimeMBeans[0], "ListenAddress");
System.out.println(address);
final Integer port = (Integer) server.getAttribute(serverRuntimeMBeans[0], "ListenPort");
System.out.println(port);
}
有没有办法在 运行 网络应用程序中从域中查询有关应用程序的元信息——具体来说,我希望能够检测到 WebLogic 管理员的端口和主机名动态服务器,因为它因环境而异。
我使用的是 WebLogic 12c,但更多版本的信息也很有用。谢谢!
您可以从传入请求中查询此信息,在 Servlet 中它会像这样工作:
@Override
public void service(final HttpServletRequest req, final HttpServletResponse res)
throws ServletException, IOException {
System.out.println("Server name " + req.getServerName());
System.out.println("Server port " + req.getServerPort());
}
或者您可以通过 JMX 直接从域中获取它(无需请求。另请参阅 http://docs.oracle.com/middleware/1212/wls/JMXCU/accesswls.htm#JMXCU144):
private void printHostAndPort() throws Exception {
final InitialContext ctx = new InitialContext();
final MBeanServerConnection server = (MBeanServerConnection) ctx.lookup("java:comp/env/jmx/domainRuntime");
final ObjectName runtimeservicebean = new ObjectName(
"com.bea:Name=DomainRuntimeService,Type=weblogic.management.mbeanservers.domainruntime.DomainRuntimeServiceMBean");
// Here can be several
final ObjectName[] serverRuntimeMBeans = (ObjectName[]) server.getAttribute(runtimeservicebean,
"ServerRuntimes");
final String name = (String) server.getAttribute(serverRuntimeMBeans[0], "Name");
System.out.println(name);
final String address = (String) server.getAttribute(serverRuntimeMBeans[0], "ListenAddress");
System.out.println(address);
final Integer port = (Integer) server.getAttribute(serverRuntimeMBeans[0], "ListenPort");
System.out.println(port);
}