0
有沒有一種方法,從一個正在運行的Web應用程序內查詢有關來自域—的應用程序的元信息,我希望能夠檢測端口和動態地使用WebLogic管理服務器的主機名,因爲它隨環境而變化。從正在運行的servlet的WebLogic自檢/查詢域信息
我正在使用WebLogic 12c,但超過版本的信息也會有用。謝謝!
有沒有一種方法,從一個正在運行的Web應用程序內查詢有關來自域—的應用程序的元信息,我希望能夠檢測端口和動態地使用WebLogic管理服務器的主機名,因爲它隨環境而變化。從正在運行的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);
}