Guest User

Untitled

a guest
Jul 12th, 2017
24
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.78 KB | None | 0 0
  1. package hu.abris.gamma.client.observers.webserviceparser;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.HashMap;
  5. import java.util.Iterator;
  6. import java.util.LinkedList;
  7. import java.util.List;
  8. import java.util.Map;
  9. import java.util.Properties;
  10. import java.util.Set;
  11.  
  12. import javax.management.MBeanAttributeInfo;
  13. import javax.management.MBeanServerConnection;
  14. import javax.management.ObjectInstance;
  15. import javax.management.ObjectName;
  16. import javax.management.remote.JMXConnector;
  17. import javax.management.remote.JMXConnectorFactory;
  18. import javax.management.remote.JMXServiceURL;
  19.  
  20. import org.apache.log4j.Logger;
  21. import org.w3c.dom.Element;
  22.  
  23. import hu.abris.gamma.client.IObserver;
  24. import hu.abris.gamma.client.util.GammaUtils;
  25.  
  26. public class WSParserWebLogic implements IWebserviceParser {
  27.  
  28. private final Logger logger = Logger.getLogger(WSParserWebLogic.class);
  29. private Map<String, Object> env = null;
  30. private String username;
  31. private String password;
  32. private String[] credentials;
  33. private String host;
  34. private int port;
  35. private Properties prop;
  36. public static List<WebserviceInstance> listOfWebservices;
  37. boolean match = false;
  38. Integer a = 0;
  39.  
  40. public WSParserWebLogic() {
  41. if (listOfWebservices == null) {
  42. logger.debug("parser peldanyositas");
  43. listOfWebservices = new ArrayList<WebserviceInstance>();
  44. }
  45. }
  46.  
  47. public void configure(Element description) {
  48. Element webService_info = (Element) description.getElementsByTagName("WEBSERVICE").item(0);
  49. host = webService_info.getAttribute("host");
  50. port = Integer.parseInt(webService_info.getAttribute("port"));
  51. username = webService_info.getAttribute("username");
  52. String tempPassword = webService_info.getAttribute("password");
  53. if (!tempPassword.equals("") && tempPassword != null) {
  54. password = GammaUtils.decodePassword(tempPassword);
  55. }
  56.  
  57. }
  58.  
  59. public void observe(Element doc, LinkedList<Properties> elements,
  60. List<String> webServiceNames) {
  61. configure(doc);
  62. a++;
  63. logger.debug("szam : "+a);
  64. MBeanServerConnection conn = null;
  65. JMXConnector jmxc = null;
  66. credentials = new String[] { username, password };
  67. MBeanAttributeInfo[] attributes = null;
  68. try {
  69. // t3", host,
  70. // port,"/jndi/weblogic.management.mbeanservers.domainruntime
  71. JMXServiceURL url = new JMXServiceURL("t3", host, port,
  72. "/jndi/weblogic.management.mbeanservers.domainruntime");
  73. Map<String, Object> environment = new HashMap<String, Object>();
  74. environment.put(javax.naming.Context.SECURITY_PRINCIPAL, credentials[0]);
  75. environment.put(javax.naming.Context.SECURITY_CREDENTIALS, credentials[1]);
  76. environment.put(javax.management.remote.JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES,
  77. "weblogic.management.remote");
  78. jmxc = JMXConnectorFactory.connect(url, environment);
  79. conn = jmxc.getMBeanServerConnection();
  80. } catch (Exception e) {
  81. logger.debug("Error connect to the application server (weblogic) : " + e.getMessage());
  82. prop = new Properties();
  83. prop.setProperty("status", "Weblogic connection error!");
  84. prop.setProperty("severity", GammaUtils.convertSeverity(IObserver.SEVERITY_CRITICAL));
  85. elements.add(prop);
  86. return;
  87. }
  88.  
  89. Set<ObjectInstance> instances;
  90. try {
  91. instances = conn.queryMBeans(null, null);
  92. for (String name : webServiceNames) {
  93. logger.debug("vizsgalando nev: " + name);
  94. for (ObjectInstance instance : instances) {
  95. if (instance.toString().contains("WseeAggregatableBaseOperationRuntime")
  96. && instance.toString().contains(name) && instance.toString().contains("#")
  97. && !instance.toString().contains("_/")) {
  98. WebserviceInstance tempWebService = new WebserviceInstance();
  99. logger.debug("webservice lista merete eleje: "+listOfWebservices.size());
  100. for (WebserviceInstance webServiceInstance : listOfWebservices) {
  101. match = false;
  102. if (webServiceInstance.getName().equals(name)) {
  103. match = true;
  104. logger.debug("megtaláltam a listában");
  105. tempWebService = webServiceInstance;
  106. tempWebService.setPreviousProcessTime(tempWebService.getCurrentProcessTime());
  107. tempWebService.setPreviousRequest(tempWebService.getCurrentRequest());
  108. break;
  109. }
  110. }
  111.  
  112. tempWebService.setName(name);
  113. tempWebService.setPreviousMaxProcssingTime(tempWebService.getMaxProcessingTime());
  114. tempWebService.setPreviousErrorCount(tempWebService.getFaultCount());
  115. tempWebService.setCurrentProcessTime(
  116. (Long) conn.getAttribute(instance.getObjectName(), "ExecutionTimeTotal"));
  117. tempWebService.setCurrentRequest(Long.valueOf(Integer
  118. .toString((Integer) conn.getAttribute(instance.getObjectName(), "InvocationCount"))));
  119. tempWebService.setFaultCount(Long.valueOf(
  120. Integer.toString((Integer) conn.getAttribute(instance.getObjectName(), "ErrorCount"))));
  121. tempWebService.setName(name);
  122. tempWebService.setAverageProcessingTime(
  123. (Long) conn.getAttribute(instance.getObjectName(), "ResponseTimeAverage"));
  124. tempWebService.setFaultCount(Long.valueOf(
  125. Integer.toString((Integer) conn.getAttribute(instance.getObjectName(), "ErrorCount"))));
  126. tempWebService.setMaxProcessingTime(
  127. (Long) conn.getAttribute(instance.getObjectName(), "ResponseTimeHigh"));
  128. tempWebService.setMinProcessingTime(
  129. (Long) conn.getAttribute(instance.getObjectName(), "ResponseTimeLow"));
  130. tempWebService.setRequestCount(Long.valueOf(Integer
  131. .toString((Integer) conn.getAttribute(instance.getObjectName(), "InvocationCount"))));
  132. tempWebService.setResponseCount(Long.valueOf(Integer
  133. .toString((Integer) conn.getAttribute(instance.getObjectName(), "ResponseCount"))));
  134. tempWebService.setTotalProcessingTime(
  135. (Long) conn.getAttribute(instance.getObjectName(), "ResponseTimeTotal"));
  136. if (conn.getAttribute(instance.getObjectName(), "LastError") != null) {
  137. tempWebService.setErrorMessage(
  138. conn.getAttribute(instance.getObjectName(), "LastError").toString());
  139. }
  140. tempWebService
  141. .setLastErrorTime((Long) conn.getAttribute(instance.getObjectName(), "LastErrorTime"));
  142. tempWebService.setStatus("OK");
  143. tempWebService.setSeverity(GammaUtils.convertSeverity(IObserver.SEVERITY_NORMAL));
  144. tempWebService.setLastMeasurementAvarage(getLastMeasurementAvarage(
  145. tempWebService.getPreviousRequest(), tempWebService.getCurrentRequest(),
  146. tempWebService.getPreviousProcessTime(), tempWebService.getCurrentProcessTime()));
  147. if (match == false) {
  148. listOfWebservices.add(tempWebService);
  149. }
  150. logger.debug("webservice lista merete vege: "+listOfWebservices.size());
  151. logger.debug("lista neve: "+listOfWebservices);
  152. }
  153. }
  154. }
  155. } catch (Exception e) {
  156. logger.debug("Exception during parser observing : " + e.getMessage());
  157. prop = new Properties();
  158. prop.setProperty("status", "error");
  159. prop.setProperty("severity", GammaUtils.convertSeverity(IObserver.SEVERITY_CRITICAL));
  160. elements.add(prop);
  161. }
  162. }
  163.  
  164. public long getLastMeasurementAvarage(long previousRequests, long currentRequests, long previousProcessing,
  165. long currentProcessing) {
  166. logger.debug("elozo meres szám : "+previousRequests);
  167. logger.debug("mostani meres szám : "+currentRequests);
  168. logger.debug("elozo meres ido : "+previousProcessing);
  169. logger.debug("mostani meres ido : "+currentProcessing);
  170. if (currentRequests == 0) {
  171. return 0;
  172. }
  173. if (previousProcessing == -1 || previousRequests == -1) {
  174. return currentProcessing / currentRequests;
  175. } else if (currentRequests == previousRequests)
  176. {
  177. return 0;
  178. }
  179. else {
  180. long tempProc = currentProcessing - previousProcessing;
  181. long tempAvarage = tempProc / (previousRequests - currentRequests);
  182. return tempAvarage;
  183. }
  184.  
  185. }
  186.  
  187. }
Add Comment
Please, Sign In to add comment