У меня есть плагин для прослушивания JIRA, который захватывает события событий, проверяет, было ли это событие «созданной проблемы», и выполняет действие. Хотя по какой-то причине определенная строка кода работает несколько раз перед остановкой (я знаю это, так как определенные сообщения о регистрации отображаются несколько раз, что следует видеть только один раз). Вот тэк, о чем я говорю:JIRA Plugin работает с одной строкой кода несколько раз
onCreatedEvent(IssueEvent event) {
Issue issue = event.getIssue();
if (event.getEventTypeId().equals(EventType.ISSUE_CREATED_ID) {
// Build needed object (custom class) -> this is the line running multiple times
BetterIssue betterIssue = BetterIssueFactory.setIssue(issue).build();
BetterIssueDAO.createBetterIssue(betterIssue);
// More code below...
}
}
Идея о том, что BetterIssueFactory
выглядит следующим образом:
public abstract BetterIssueFactory() {
private static Issue issue;
public static void build() {
// Grabs data from JIRA issue using ComponentAccessor...
}
public void setIssue(Issue issue) {
this.issue = issue;
}
// More code...
}
Я думаю, что DAO (который обращается к серверу SQL и помещает этот объект в таблица) каким-то образом удерживает эту строку кода от правильного выполнения, пока запрос не завершится. ПРИМЕЧАНИЕ. Ни один из кода, который я опубликовал, не открывал отдельный поток для этого, все это выполняется последовательно (если только PreparedStatement.execute/executeQuery не открывает новый поток).