当配置文件中的 enable_auto_app_naming
配置开启后,探针会自动获取每个应用的名称。获取的方式有六种:
request.setAttribute("com.blueware.monitor.APPLICATION_NAME", MySpecialWebApp")
;web.xml
中配置 servlet init param
web.xml
中配置 Filter init param
web.xml
中配置 context param
web.xml
中配置 appName
(标签名:display-name
)ServletContentPath
(一般表现为 URL 中项目名称)列表中的配置生效有优先级的控制,由上到下级别递减。
优先级最高的配置方式,应该尽量在 transaction
最早的时间配置 app_name
Note:只针对 servlet request
生效
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
...
String requestUri = httpServletRequest.getRequestURI();
if (requestUri.startsWith("/my-special-request/")){
request.setAttribute("com.blueware.monitor.APPLICATION_NAME", "MySpecialWebApp");
} ...
如果访问了多个 servlet
,最早执行结束的 servlet
的配置生效
<servlet>
<servlet-name>SqlServlet</servlet-name>
<servlet-class>test.SqlServlet</servlet-class>
<init-param>
<param-name>com.blueware.monitor.APPLICATION_NAME</param-name>
<param-value>MyServletApp</param-value>
</init-param>
</servlet>
最早执行结束的 filter
的配置生效
<filter>
<filter-name>SqlFilter</filter-name>
<filter-class>test.SqlFilter</filter-class>
<init-param>
<param-name>com.blueware.monitor.APPLICATION_NAME</param-name>
<param-value>MyFilterApp</param-value>
</init-param>
</filter>
<context-param>
<param-name>com.blueware.monitor.APPLICATION_NAME</param-name>
<param-value>MyWebApp</param-value>
</context-param>
<display-name>MyWebApp</display-name>
如果完整的一次请求地址,如 URL 为:http://example.com/oneapm-axis2-ws/getWeather
:
这种方式获取的 appName 不是百分百准确,如果应用程序部署在 ROOT 下,这种方式是不生效的。