获取所有 Context
package GetContext;import weblogic.servlet.internal.WebAppServletContext;import weblogic.t3.srvr.ServerRuntime;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.lang.reflect.Field;import java.util.List;public class GetAllcontext extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { try{ java.lang.reflect.Method m = Class.forName("weblogic.t3.srvr.ServerRuntime").getDeclaredMethod("theOne"); m.setAccessible(true); ServerRuntime serverRuntime = (ServerRuntime) m.invoke(null); List<WebAppServletContext> list = new java.util.ArrayList(); StringBuilder sb = new StringBuilder(); for (weblogic.management.runtime.ApplicationRuntimeMBean applicationRuntime : serverRuntime.getApplicationRuntimes()) { java.lang.reflect.Field childrenF = applicationRuntime.getClass().getSuperclass().getDeclaredField("children"); childrenF.setAccessible(true); java.util.HashSet set = (java.util.HashSet) childrenF.get(applicationRuntime); java.util.Iterator iterator = set.iterator(); while (iterator.hasNext()) { Object key = iterator.next(); if (key.getClass().getName().equals("weblogic.servlet.internal.WebAppRuntimeMBeanImpl")) { Field contextF = key.getClass().getDeclaredField("context"); contextF.setAccessible(true); WebAppServletContext context = (WebAppServletContext) contextF.get(key); resp.getWriter().println("---------------------------------"); resp.getWriter().println(context.getRootTempDir().getAbsolutePath()); resp.getWriter().println(context.getAppName()); resp.getWriter().println("---------------------------------"); list.add(context); } } } }catch (Exception e){ } }}

从当前线程获取Context
package GetContext;import weblogic.servlet.internal.ServletRequestImpl;import weblogic.servlet.internal.WebAppServletContext;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.lang.reflect.Field;public class GetThreadContext extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Thread thread = Thread.currentThread(); try { //获取WebAppServletContext Field workEntry = Class.forName("weblogic.work.ExecuteThread").getDeclaredField("workEntry"); workEntry.setAccessible(true); Object workentry = workEntry.get(thread); WebAppServletContext webAppServletContext=null; try{ //weblogic 12.1.3 Field connectionHandler = workentry.getClass().getDeclaredField("connectionHandler"); connectionHandler.setAccessible(true); Object http = connectionHandler.get(workentry); Field request1 = http.getClass().getDeclaredField("request"); request1.setAccessible(true); ServletRequestImpl servletRequest = (ServletRequestImpl) request1.get(http); Field context = servletRequest.getClass().getDeclaredField("context"); context.setAccessible(true); webAppServletContext = (WebAppServletContext) context.get(servletRequest); }catch (Exception e){ //weblogic 1036 Field context = workentry.getClass().getDeclaredField("context"); context.setAccessible(true); webAppServletContext = (WebAppServletContext) context.get(workentry); } resp.getWriter().println(webAppServletContext.getRootTempDir().getAbsolutePath()); resp.getWriter().println(webAppServletContext.getAppName()); }catch(Exception e){} }}

从request处获取Context
weblogic.servlet.internal.WebAppServletContext servletContext = (WebAppServletContext) req.getServletContext();resp.getWriter().write(servletContext.getAppName());resp.getWriter().write(servletContext.getTempPath());
获取应用web目录物理路径
resp.getWriter().println(context.getRootTempDir().getAbsolutePath());resp.getWriter().println(context.getAppName());