В конструкторе отчетов Pentaho (PRD) я хочу подключиться к моему источнику данных с помощью скрипта Groovy (или сценария EMCAScript), обратившись к JNDI, созданному в файле default.properties. Таким образом, я создам многозначный список, содержащий имена JNDI, и подключится к источнику данных на основе JNDI, выбранного в параметре.Доступ к источнику данных Pentaho от Groovy
Сценарий:
import groovy.sql.Sql
import javax.naming.InitialContext
import javax.sql.DataSource
class SqlClient {
InitialContext context = new InitialContext()
DataSource dataSource = context.lookup("OLTP") as DataSource
def sql = new Sql(dataSource)
sql.execute("SELECT * FROM Person.User_JNDI")
TypedTableModel model = new TypedTableModel();
while(sql.next())
model.addRow(new Object [] {rs.getString(1)});
c.close();
return model;
}
Я получаю следующее сообщение об ошибке: вызвано следующими причинами: org.apache.bsf.BSFException: исключение из Groovy: org.codehaus.groovy.control.MultipleCompilationErrorsException: запуск не удалось: выражение: 11: неожиданный маркер: SQL @ строка 11, столбец 5. sql.execute ("SELECT * FROM Person.User_JNDI")
Кроме того, PRD ожидает сценарий, чтобы вернуть модель, вероятно, что-то делать с классом TypedtableModel.
Может ли кто-нибудь дать мне пример скрипта Groovy?
Спасибо @ mschonaker. Я добавил скрипт выше, добавив запрос (выберите 1), чтобы проверить, подключается ли он к источнику данных, указанному JNDI. Но когда я нахожусь в порядке в дизайнере отчетов Pentaho (PRD), он ничего не делает. Я выбрал Groovy-скрипт на вкладке «Глобальные скрипты» в окне «Источник данных JDBC». Как проверить, успешно ли он подключен к указанному JNDI? –
Может ли кто-нибудь сказать мне, как подключиться к источнику данных, используя jndi в моем оригинальном скрипте? Я использовал приведенный выше сценарий, но когда я нажимаю кнопку «ОК», кнопка просто становится синей, и ничего не происходит. Мое требование - изменить данные отчета, когда пользователь выбирает желаемый JNDI в списке параметров отчета. Итак, у меня будет параметр, содержащий имена JNDI и доступ к этому параметру в моем скрипте Groovy. –