我有一个 spring boot (2.1.6) 应用程序,它既消费又向(组织范围内的)公共 kafka 实例生成消息。我正在尝试使用 spring 执行器在我的应用程序中为这个 kafka 代理实施健康检查,但我面临着一系列与性能和日志记录相关的问题。spring boot 2.0 中内置了一个健康指示器,但由于一些明显的问题,他们将其删除。
这是我实现的健康检查类:
@Component
public class KafkaHealthCheck implements HealthIndicator {
private static final Logger logger = LoggerFactory.getLogger(KafkaHealthCheck.class);
private KafkaAdmin kafkaAdmin;
private Map<String, Object> kafkaConfig;
@Value("${application.topic}")
private String topicName;
@Value(value = "${kafka.bootstrapAddress}")
private String bootstrapAddress;
public KafkaHealthCheck(KafkaAdmin kafkaAdmin) {
this.kafkaAdmin = kafkaAdmin;
}
@PostConstruct
public void setUpAdminClient() {
kafkaConfig = new HashMap<>();
kafkaConfig.putAll(kafkaAdmin.getConfig());
kafkaConfig.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapAddress);
}
@Override
public Health health() {
Long start = System.currentTimeMillis();
try (AdminClient adminClient = …Run Code Online (Sandbox Code Playgroud) 我正在使用jinja2模板(使用Ansible),其中我需要检查两个日期之间的差异.我没有日期的时代,但我确实有它们的yyy-mm-dd HH:MM:ss格式(没有毫秒).所以我的问题:
1)jinja2有没有办法比较两个日期?我不想安装任何库,它必须是内置功能.
2)如果不能通过jinja2完成,是否有一个快速逻辑我可以实现比较它们?喜欢转换为时代?(记住,没有毫秒)
我一直在努力在我的项目中捕获一个非常复杂的JPA查询的确切SQL以进行优化,但到目前为止我无法这样做.我尝试了以下方法:
1)通过在logback.xml中添加以下内容并启用show_SQL,尝试通过logback启用hibernate日志
<logger name="org.hibernate.type" level="ALL" />
<logger name="org.hibernate" level="TRACE">
<appender-ref ref="fdpAdminAppender" />
</logger>
Run Code Online (Sandbox Code Playgroud)
2)尝试使用P6spy-2驱动程序与Jboss AS7和postgres,但只是无法使其工作.它给出了以下例外.
com.p6spy.engine.spy.P6SpyDriver cannot be cast to javax.sql.XADataSource
Run Code Online (Sandbox Code Playgroud)
3)在JBoss AS 7中启用了内置数据源间谍,它确实有效.但是日志显示的数据太多,所有这些对我来说都是无用的,因为它们再次将值附加为"?".即使我可以在这里获得完整的SQL语句,我的问题也将得到解决.
到目前为止,我已经成功完成了第3步,但要么我错过了某些东西,要么就是这样,无论是哪种情况,我的实际目的都没有得到解决.所以请有人帮我从JPA获取实际的SQL查询.我并不关心如何得到它,我只需要得到它.我经历过需要在开发过程中多次验证JPA生成的实际SQL.很奇怪为什么没有标准的方法来做到这一点.
我在Web应用程序中使用Spring Security v 3.1.3。该应用程序具有在Spring Security中使用custom-filter自定义的单项登录表单。现在,我的配置允许用户在同一浏览器中从其他选项卡打开URL时自动登录该应用程序,这是Spring安全会话管理的默认行为。
我想确保每当用户登录应用程序时,会话都不应在不同选项卡之间共享。在打开新选项卡时,他应该获得登录页面,并且登录后将在同一浏览器中创建一个新会话。目前,我找不到任何使用Spring安全框架来做到这一点的方法。我不介意将JsessionID集成到URL中,但是如果有另一种方法会更好。
我有一个表,其中包含大量记录,借助数据表进行分页。第一个标题列是全选复选框,每行都有自己的复选框。
我希望在我的表中具有以下功能:
1) 用户可以浏览表格并随机选择/取消选择复选框。
2) 单击标题中的“全选”复选框应仅选中/取消选中所有当前可见的记录。
3)“全选”按钮应为数据表的不同页面保持状态(选中/未选中)。例如,如果用户单击第 1 页上的“全选”并导航到下一页,则应取消选择“全选”复选框,再次单击该复选框将仅检查此页面中的所有行,而之前选择的复选框不受影响。
到目前为止,我有以下代码来处理检查选择:
$('#selectAllCheck').click(function(e) {
var chk = $(this).prop('checked');
var currentRows = $('#myTable tbody tr');
$.each(currentRows, function(){
$(this).find(':checkbox[name=statusCheckbox]').each(function(){
$(this).prop('checked', chk);
});
});
});
Run Code Online (Sandbox Code Playgroud)
我知道这个_('tr', {"filter":"applied"});函数,但它只是将所有行返回给我。我不知道为什么。
我已经使用上面的代码实现了(1)和(2),并且工作正常。唯一的问题是“全选”功能在不同页面上的行为。我查看了 datatables.net 但找不到与此相关的任何内容。
我使用SAX解析器从大型XML文件中读取一些元素.下面是我为此目的使用的示例XML和SAX解析器代码.
<someOtherElement>231</someOtherElement>
<someMoreOtherElement>1233.00213</someMoreOtherElement>
...
<elementToRead1>31.0.1</elementToRead1>
<elementToRead2>ABCD-XYZ-1.0</elementToRead2>
Run Code Online (Sandbox Code Playgroud)
解析器代码:
public class MyHandler extends DefaultHandler {
private String elementToRead1
private Boolean flag1 = false;
private String elementToRead2
private Boolean flag2 = false;
public void readValues(final String xmlString) throws XMLParseException {
SAXXMLParser.parseString(xmlString, this);
}
@Override
public void startElement(final String uri, final String localName, final String qName, final Attributes attributes) {
if (""elementToRead1"".equals(qName)) {
flag1 = true;
}
if (""elementToRead2"".equals(qName)) {
flag2 = true;
}
}
@Override
public void characters(final char ch[], final int start, …Run Code Online (Sandbox Code Playgroud) 我正在尝试构建一种自包含系统,我将应用程序可执行文件复制到一个位置,并将服务作为独立应用程序运行,无需安装.我使用NSSM可执行文件在Windows Server 2012 R2和一台机器上创建服务,将会有很多可部署的.我的问题是,虽然自动化与Ansible部署,我被困在那里我需要知道,如果给定的服务名已经存在,如果是,什么是它的状态呢?在NSSM中似乎没有任何API来检查它.如果服务存在,如何通过命令行询问NSSM?我可以通过命令行检查服务的存在和状态(没有powershell)吗?
我的要求很简单,我只想外部化一些“值”以使我的Jenkinsfile更可重用,为此,我需要从一个文件中加载属性,该文件将紧挨Jenkinsfile,并确保这些属性是在管道中的任何地方都可用。我仍然对groovy和Jenkins代码不熟悉,但是从未想到过如此简单的事情会如此困难。我在脚本安全性插件中启用了一些方法,但是以下代码(以及我尝试过的几种变体)始终会引起错误或显示null或给我NPE。我尝试了多种组合,下面的代码只是其中之一。
properties = null
@NonCPS
def loadProperties() {
checkout scm
File propertiesFile = new File('${workspace}/pipeline.properties')
propertiesFile.withInputStream {
properties.load(propertiesFile)
}
}
pipeline {
agent none
stages {
stage ('prepare') {
agent any
steps {
script {
loadProperties()
echo "${properties['repo']}"
}
}
}
stage('Build') {
agent any
steps {
sh 'echo ${properties.repo}'
}
}
}
}
Run Code Online (Sandbox Code Playgroud) java ×2
ansible ×1
apache-kafka ×1
datatables ×1
date ×1
groovy ×1
hibernate ×1
jboss7.x ×1
jenkins ×1
jinja2 ×1
jpa-2.0 ×1
jquery ×1
nssm ×1
p6spy ×1
sax ×1
saxparser ×1
session ×1
spring ×1
spring-boot ×1
spring-kafka ×1
spring-mvc ×1