Подключитесь из плагина Jira к базе данных SQL Server, используя JDBC - PullRequest
0 голосов
/ 07 июня 2019

В настоящее время я застрял со следующей проблемой.Я много читал, я много пробовал, но до сих пор не мог понять, как это решить.Я хотел бы добиться следующего:

Плагин панели вкладок вопросов Jira, который подключается через JDBC к экземпляру SQL Server и извлекает данные из таблицы, которая затем отображается в плагине

Далее, потенциально полезноинформация:

  • JIRA Сборка: 7.13.0
  • Сервер приложений: Apache Tomcat / 8.5.35 - API сервлетов 3.1
  • Версия Java: 1.8.0_212 - AdoptOpenJDK
  • atlassian-plugin-sdk: 8.0.7
  • apache-maven: 3.5.4
  • amps-dispatcher-maven-plugin: 8.0.0

Сам плагин панели вкладок проблем уже работал, и мне удалось отобразить некоторые базовые данные (проблемы и пользовательские данные), но данные из SQL не были получены.Сообщение об ошибке в журнале было следующим:

java.sql.SQLException: No suitable driver found for jdbc:sqlserver://servername\LOCAL;databaseName=dbname;user=user;password=password;

В проекте плагина Jira я затем добавил следующие зависимости в файл pom.xml:

<dependency>
  <groupId>com.microsoft.sqlserver</groupId>
  <artifactId>mssql-jdbc</artifactId>
  <version>7.0.0.jre8</version>
</dependency>


<dependency>
  <groupId>com.microsoft.aad</groupId>
  <artifactId>adal4j</artifactId>
  <version>0.0.2</version>
</dependency>

Я запустил atlas-очистите, а затем снова отладьте atlas.

Полученное сообщение об ошибке (с 7.0.0.jre8):

Cannot start plugin: com.atlassian.tutorial.myPlugin
[INFO] [talledLocalContainer] Unresolved constraint in bundle com.atlassian.tutorial.myPlugin [171]: 
Unable to resolve 171.0: missing requirement [171.0] osgi.wiring.package; (osgi.wiring.package=com.microsoft.azure)

Я частично перестроил код плагина в проекте mavenв Eclipse и все отлично работает.Я могу получить данные.В Eclipse я использую драйвер: mssql-jdbc-7.2.2.jre11.jar, который находится в ссылочных библиотеках.Сам код java работает.

Я также попробовал следующее (очевидно, без успеха):

  • Различные версии драйвера jdbc для sql-сервера (версии jre8 и jre11)
  • Я также пытался добавить этот mssql.jar в следующие папки:
  • \ myPlugin \ target \ container \ tomcat8x \ apache-tomcat-8.5.35 \ lib
  • \ myPlugin \ target \jira \ webapp \ WEB-INF \ lib

Я прочитал, что мне нужно добавить источники данных в разные xml-файлы (например, dbconfig), но я запутался, где именно мне сейчас нужно добавить какой код.

Если у кого-нибудь есть какие-то предложения, которые я еще могу попробовать, я был бы очень рад.

Для полноты:

См. Ниже класс, который я использую для подключения к SQL.Это работает в Eclipse.Входными данными являются строка согласия (см. Выше) и простой SQL-запрос.

public static ArrayList<Map<String, Object>> getRows(String conn, String query) throws SQLException 
{ 
try (Connection con = DriverManager.getConnection(conn); Statement stmt = con.createStatement();) {

ResultSet rset = stmt.executeQuery(query);
ResultSetMetaData rsmd = rset.getMetaData();
int columncount = rsmd.getColumnCount();

ArrayList<Map<String, Object>> queryResult = new ArrayList<Map<String, Object>>();

while (rset.next()) {
Map<String, Object> row = new HashMap<String, Object>();
for (int i = 1; i <= columncount; i++) {
row.put(rsmd.getColumnName(i), rset.getObject(i));
}
queryResult.add(row);

}
con.close();
return queryResult;

}
// Handle any errors that may have occurred.
catch (SQLException e) {
e.printStackTrace();
}
return queryResult; 
}

}
...