Skip to content

Commit

Permalink
improving the way to locate agent and registering web app
Browse files Browse the repository at this point in the history
  • Loading branch information
dhaval24 committed Mar 16, 2018
1 parent 4bd0b4b commit bc19586
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 40 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,30 +22,44 @@
package com.microsoft.applicationinsights.common;

import com.microsoft.applicationinsights.internal.logger.InternalLogger;
import org.apache.commons.lang3.exception.ExceptionUtils;

import java.net.InetAddress;
import java.net.UnknownHostException;
import org.apache.commons.lang3.exception.ExceptionUtils;


/**
* Created by oriy on 11/2/2016.
*/
/** Created by oriy on 11/2/2016. */
public class CommonUtils {
public static boolean isNullOrEmpty(String string) {
return string == null || string.length() == 0;
public static boolean isNullOrEmpty(String string) {
return string == null || string.length() == 0;
}

public static String getHostName() {
try {
InetAddress addr;
addr = InetAddress.getLocalHost();
return addr.getCanonicalHostName();
} catch (UnknownHostException ex) {
// optional parameter. do nothing if unresolvable
InternalLogger.INSTANCE.trace(
"Unresolvable host error. Stack trace generated is %s", ExceptionUtils.getStackTrace(ex));
return null;
}
public static String getHostName(){
try
{
InetAddress addr;
addr = InetAddress.getLocalHost();
return addr.getCanonicalHostName();
}
catch (UnknownHostException ex) {
// optional parameter. do nothing if unresolvable
InternalLogger.INSTANCE.trace("Unresolvable host error. Stack trace generated is %s", ExceptionUtils.getStackTrace(ex));
return null;
}
}

/**
* This method is used to test if the given class is loaded in the specified ClassLoader
* @param classSignature Fully Qualified signature of class
* @param classLoader ClassLoader under consideration
* @return true if class is loaded otherwise false
*/
public static boolean isClassPresentOnClassPath(String classSignature, ClassLoader classLoader) {

try {
Class.forName(classSignature, false, classLoader);
return true;
} catch (ClassNotFoundException e) {
InternalLogger.INSTANCE.info(
"Specified class %s is not present on the classpath", classSignature);
return false;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@ public final class WebRequestTrackingFilter implements Filter {
private boolean agentIsUp = false;
private final LinkedList<ThreadLocalCleaner> cleaners = new LinkedList<ThreadLocalCleaner>();
private String appName;
private static final String AGENT_LOCATOR_INTERFACE_NAME = "com.microsoft.applicationinsights."
+ "agent.internal.coresync.AgentNotificationsHandler";

// endregion Members

Expand Down Expand Up @@ -230,33 +232,20 @@ public WebRequestTrackingFilter() {
}

private synchronized void initialize(FilterConfig filterConfig) {
try {

//if agent is not installed (jar not loaded), can skip the entire registration process
try {
AgentConnector test = AgentConnector.INSTANCE;
} catch (ThreadDeath td) {
throw td;
} catch (Throwable t) {
try {
InternalLogger.INSTANCE.info("Agent was not found. Skipping the agent registration");
return;
} catch (ThreadDeath td) {
throw td;
} catch (Throwable t2) {
// chomp
}
}
//If Agent Jar is not present in the class path skip the process
if (!CommonUtils.isClassPresentOnClassPath(AGENT_LOCATOR_INTERFACE_NAME,
this.getClass().getClassLoader())) {
InternalLogger.INSTANCE.info("Agent was not found. Skipping the agent registration");
return;
}

try {
ServletContext context = filterConfig.getServletContext();

String name = getName(context);

String key = registerWebApp(appName);
setKey(key);

InternalLogger.INSTANCE.info("Successfully registered the filter '%s'", FILTER_NAME);

} catch (ThreadDeath td) {
throw td;
} catch (Throwable t) {
Expand Down

0 comments on commit bc19586

Please sign in to comment.