dede网站安全,长沙营销型,开发公众号的体会,岑溪网络推广营销编写start脚本程序我喜欢JDK附带ScriptEngine的事实。 当您要评估服务器环境中已经部署的应用程序并进行故障排除时#xff0c;它非常灵活。 将此REST端点添加到Java EE应用程序中#xff0c;它将使您可以立即访问该应用程序的内部状态。 package myrestapp;import java.io.… 编写start脚本程序 我喜欢JDK附带ScriptEngine的事实。 当您要评估服务器环境中已经部署的应用程序并进行故障排除时它非常灵活。 将此REST端点添加到Java EE应用程序中它将使您可以立即访问该应用程序的内部状态。 package myrestapp;import java.io.StringReader;
import java.util.logging.Logger;
import javax.script.Bindings;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.core.Context;/*** Give instant access to your internal application with dynamic scripting.* * pExample script:* pre* sc servletContext , req request;* /pre* * pExample2* pre* names servletContext.getAttributeNames();* while(names.hasMoreElements()) {* name names.nextElement();* println(name);* }* /pre*/
Path(script)
public class ScriptResource {private static final Logger logger Logger.getLogger(ScriptResource.class.getName());Contextprivate ServletContext servletContext;POSTpublic String script(Context HttpServletRequest request, String scriptText) throws Exception {String engineName JavaScript;ScriptEngineManager manager new ScriptEngineManager();ScriptEngine engine manager.getEngineByName(engineName);logger.info(Running script text length scriptText.length() , engine engine);Object result null;try (StringReader reader new StringReader(scriptText)) {Bindings bindings engine.createBindings();bindings.put(servletContext, servletContext);bindings.put(request, request);result engine.eval(reader, bindings);}logger.info(Result result);return result;}
} 注意我已经在注释区域中给出了两个JavaScript示例。 您将可以访问两个绑定变量这两个变量应该使您可以完全访问应用程序的许多内部组件。 需要一个UI来测试此端点吗 尝试一下“ Advance Rest Client” Chrome扩展程序怎么样 感谢我的同事Chris Griffin在这个很酷的扩展上的提示。它确实很方便。 翻译自: https://www.javacodegeeks.com/2014/10/poking-around-your-rest-application-with-a-scriptable-endpoint.html编写start脚本程序