2014-12-13 4 views

ответ

1

Да, это возможно. Вы можете использовать API-интерфейс REST API Glassfish для получения почти каждого свойства сервера.

Для свойств http-listener-1 используйте следующий адрес: http://localhost:4848/management/domain/configs/config/server-config/network-config/network-listeners/network-listener/http-listener-1

запрос Нормального GET даст вам ответ HTML, установить заголовок Accept для application/json, чтобы получить ответ в формате JSON.

В вашем EJB вам просто нужно отправить HTTP-запрос на url сверху с правом заголовком. Вот пример:

String url = "http://localhost:4848/management/domain/configs/config/server-config/network-config/network-listeners/network-listener/http-listener-1"; 

URL obj = new URL(url); 
HttpURLConnection con = (HttpURLConnection) obj.openConnection(); 

con.setRequestProperty("Accept", "application/json"); 

BufferedReader in = new BufferedReader(
     new InputStreamReader(con.getInputStream())); 
String inputLine; 
StringBuffer response = new StringBuffer(); 

while ((inputLine = in.readLine()) != null) { 
    response.append(inputLine); 
} 
in.close(); 

System.out.println(response.toString()); 

Это даст вам результат, похожий на этот:

{ 
    "message": "", 
    "command": "http-listener-1", 
    "exit_code": "SUCCESS", 
    "extraProperties": { 
     "commands": [ 
      { 
       "path": "create-ssl", 
       "method": "POST", 
       "command": "create-ssl" 
      } 
     ], 
     "methods": [ 
      { 
       "name": "GET" 
      }, 
      {}, 
      { 
       "messageParameters": { 
        "address": { 
         "defaultValue": "0.0.0.0", 
         "optional": "true", 
         "type": "string", 
         "key": "false" 
        }, 
        "enabled": { 
         "defaultValue": "true", 
         "optional": "true", 
         "type": "boolean", 
         "key": "false" 
        }, 
        "jkConfigurationFile": { 
         "defaultValue": "${com.sun.aas.instanceRoot}/config/glassfish-jk.properties", 
         "optional": "true", 
         "type": "string", 
         "key": "false" 
        }, 
        "jkEnabled": { 
         "defaultValue": "false", 
         "optional": "true", 
         "type": "boolean", 
         "key": "false" 
        }, 
        "name": { 
         "optional": "false", 
         "type": "string", 
         "key": "true" 
        }, 
        "port": { 
         "optional": "false", 
         "type": "int", 
         "key": "false" 
        }, 
        "protocol": { 
         "optional": "false", 
         "type": "string", 
         "key": "false" 
        }, 
        "threadPool": { 
         "optional": "true", 
         "type": "string", 
         "key": "false" 
        }, 
        "transport": { 
         "optional": "false", 
         "type": "string", 
         "key": "false" 
        } 
       }, 
       "name": "POST" 
      }, 
      { 
       "messageParameters": { 
        "target": { 
         "acceptableValues": "", 
         "defaultValue": "server", 
         "optional": "true", 
         "type": "string" 
        } 
       }, 
       "name": "DELETE" 
      } 
     ], 
     "entity": { 
      "address": "0.0.0.0", 
      "enabled": "true", 
      "jkConfigurationFile": "${com.sun.aas.instanceRoot}/config/glassfish-jk.properties", 
      "jkEnabled": "false", 
      "name": "http-listener-1", 
      "port": "8080", 
      "protocol": "http-listener-1", 
      "threadPool": "http-thread-pool", 
      "transport": "tcp" 
     }, 
     "childResources": { 
      "find-http-protocol": "http://localhost:4848/management/domain/configs/config/server-config/network-config/network-listeners/network-listener/http-listener-1/find-http-protocol", 
      "property": "http://localhost:4848/management/domain/configs/config/server-config/network-config/network-listeners/network-listener/http-listener-1/property" 
     } 
    } 
} 

Как вы можете видеть результат содержит порт (8080 в данном случае).

Вы можете либо разобрать значение вручную из строки ответа, либо использовать некоторую библиотеку JSON для преобразования ответа на объект JSON, из которого вы можете легко получить свойство.

Эта процедура должна работать, если ваш интерфейс Glassfish Admin не защищен, если вы включили безопасное администрирование, вам может потребоваться отправить параметры авторизации с вашим HTTP-запросом.

Смотрите также:

Смежные вопросы