我正在使用Drowpizard 0.7.1,但也许我会很快升级到0.8.4。
是否有人知道如何向dropwizard添加管理员资源,如下面示例中的操作菜单所示?
Operational Menu
Metrics
Ping
Threads
Healthcheck
CustomAdminXy
在Dropwizard版本0.9.1中使用. addMap("")
允许您覆盖菜单,而不会与"/*"
处的默认AdminServlet映射发生冲突。
在应用程序中:
public void run(final NetworkModelApplicationConfiguration configuration, final Environment environment) {
environment.admin().addServlet("my-admin-menu", new MyAdminServlet()).addMapping("");
environment.admin().addServlet("my-admin-feature", new MyAdminFeatureServlet()).addMapping("/myAdminFeature");
}
扩展AdminServlet不是很有用,因为所有属性都是私有的。我构建了一个HTTPServlet,它将资源作为模板读取:
public class MyAdminServlet extends HttpServlet {
private String serviceName;
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
this.serviceName = config.getInitParameter("service-name");
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String path = req.getContextPath() + req.getServletPath();
resp.setStatus(200);
resp.setHeader("Cache-Control", "must-revalidate,no-cache,no-store");
resp.setContentType("text/html");
PrintWriter writer = resp.getWriter();
try {
String template = getResourceAsString("/admin.html", "UTF-8");
String serviceName = this.serviceName == null?"":" (" + this.serviceName + ")";
writer.println(MessageFormat.format(template, new Object[] { path, serviceName }));
} finally {
writer.close();
}
}
String getResourceAsString(String resource, String charSet) throws IOException {
InputStream in = this.getClass().getResourceAsStream(resource);
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = in.read(buffer)) != -1) {
out.write(buffer, 0, len);
}
return out.toString(charSet);
}
}
我的/admin。html
资源如下所示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Operational Menu{1}</title>
</head>
<body>
<h1>Operational Menu{1}</h1>
<ul>
<li><a href="{0}/metrics?pretty=true">Metrics</a></li>
<li><a href="{0}/ping">Ping</a></li>
<li><a href="{0}/threads">Threads</a></li>
<li><a href="{0}/healthcheck?pretty=true">Healthcheck</a></li>
<li><a href="{0}/myAdminFeature">My Admin Feature</a></li>
</ul>
</body>
</html>
我不认为你可以轻易做到这一点。
AdminServlet
是在构建ServerFactory
时创建的。可以扩展DefaultServerFactory
并覆盖createAdminServlet
以使用您的链接等创建自定义管理servlet…(然后您必须通过配置设置您的服务器工厂。)
这似乎会涉及一些重复的代码,并且可能非常脆弱。
注册您自己的管理servlet(除了常规的之外)可能更容易,例如:
environment.admin().addServlet("custom-admin", new CustomAdminServlet())
.addMapping("/custom-admin");
可能也不理想。
有没有办法给管理servlet增加登录安全性? 似乎在V0.7中,您可以将以下两个添加到您的yaml文件中: 然而,我在最新版本(0.9.2)中尝试了,它给我一个错误,说:server.yaml有一个错误: 这是我拥有的:
问题内容: Jenkins是否可以管理一些资源?我的意思是说,只有一定数量的作业可以并行运行。例如,我的许可证服务器只能提供4个许可证,因此使用该许可证的每个作业应首先检查某个计数器是否大于零,然后再减少并在不再需要许可证后递减。有排除插件,但我认为它只能创建互斥(计数器等于1),不能创建信号量(计数器等于1或更大)。脚本中的简单变量不是解决方案,因为主机和所有从机必须可见同一计数器。有什么想法如
投资管理 跨境贸易 在国际贸易活动中,买卖双方可能互不信任。因此需要两家银行作为买卖双方的保证人,代为收款交单,并以银行信用代替商业信用。 区块链可以为信用证交易参与方提供共同账本,允许银行和其它参与方拥有经过确认的共同交易记录并据此履约,从而降低风险和成本。 一带一路 一带一路中对区块链技术的探索应用,能让原先无法交易的双方(例如,不存在都认可的国际货币情况下)完成交易,并且降低贸易风险、减少成
我试图完全清理资源组在Azure。 删除资源组不是选项(访问权限:参与者,而不是所有者) 做到这一点的最优雅和明显的方法(也在一些文章中描述)是使用“空”部署模板执行完整的部署: 删除SQL Server开始“...”接受“...”失败“...”开始“...”接受“...”失败“... 你想到主意了。 其他时候效果很好。 您将得到数据库删除的无限循环“开始..接受..失败..开始..接受..失败.
资源管理器 是我们用来访问和管理项目资源的工作区域。在开始制作游戏时,添加资源到这里通常是必须的步骤。您可以使用 HelloWorld 模板新建一个项目,就可以看到 资源管理器 中包含了一些基本资源类型。 界面介绍 资源管理器 将项目资源文件夹中的内容以树状结构展示出来,注意只有放在项目文件夹的 assets 目录下的资源才会显示在这里。关于项目文件夹结构说明请阅读 项目结构 一节。下面我们介绍各
为了管理异构和不同配置的主机,为了便于Pod的运维管理,Kubernetes中提供了很多集群管理的配置和管理功能,通过namespace划分的空间,通过为node节点创建label和taint用于pod的调度等。