2016-07-27 49 views
0

Gibt es eine Möglichkeit, innerhalb einer laufenden Web-App Metainformationen über die Anwendung aus der Domäne — gezielt abzufragen, würde ich gerne den Port erkennen und Hostname des Administrationsservers von WebLogic dynamisch, da er von einer Umgebung zur anderen variiert.WebLogic Introspection/Domain-Informationen von einem laufenden Servlet abfragen

Ich benutze WebLogic 12c, aber Informationen für über Versionen wären auch nützlich. Vielen Dank!

Antwort

1

Sie diese Informationen aus einer eingehenden Anfrage abfragen können, in einem Servlet würde es so funktionieren.

@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()); 
    } 

Oder Sie könnten es über JMX direkt von der Domain erhalten (keine Notwendigkeit für eine Anfrage Siehe auch 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); 
    }