Как использовать источник данных Grails в resources.groovy?

У меня есть внешняя библиотека Java, которой я пользуюсь в своем проекте Grails. Этому нужен DataSource с помощью конфигурации Spring. Однако источник данных, кажется, не доступен от resources.groovy. Как я получаю доступ к нему? Я использую следующее в resources.groovy:

beans = {
 eventDao(com.JavaClassRequiringDataSource) {
  //dataSource = ref(dataSource, true)
  dataSource = dataSource
 }
}

Выполнение приложения приводит к исключению:

org.codehaus.groovy.runtime. InvokerInvocationException: groovy.lang. MissingPropertyException: Никакое такое свойство: источник данных для класса: grails.spring. BeanBuilder

Какие-либо идеи?

5
задан Mike 8 February 2010 в 14:38
поделиться

1 ответ

Для ОС Linux вы можете найти книгу О'Рейли Драйверы устройств Linux или прочитать PDF в Интернете. На мой взгляд, это один из лучших текстов вокруг на эту тему.

Руководство по программированию модуля ядра Linux является еще одним хорошим ресурсом.

Вы также можете выбрать книгу специально для ядра Linux. Я взял копию Linux Kernel Development (2-е издание) Роберта Лав для этой цели ( 3-е издание на путь).

-121--954595-

TExternalThread заворачивает поток, который не был создан RTL Delphi. Он может представлять поток, принадлежащий пулу потоков ОС, или поток, созданный другой библиотекой DLL в программе. Поскольку поток выполняет код, не принадлежащий связанному классу TExternalThread, метод Terminate не имеет пути уведомлять поток о необходимости его остановки.

Объект Delphi TThread установит для своего свойства Terminated значение True, и метод Execute, который был переопределен, будет периодически проверять это свойство, но поскольку этот поток не является кодом Delphi, метод Execute не существует, и любое свойство Terminated появилось только после того, как код потока уже был записан в другом месте (не путем переопределения ExEcecute)

Поток новостей подсказывает, что, вероятно, происходит в вашем случае:

... повреждена память, что приводит к тому, что член TThread.FExternalThread становится ненулевым значением.

Возможно, это ошибка в библиотеке компонентов или ошибка в собственном коде. Для поиска можно использовать точки останова отладчика . Задайте точку останова в конструкторе потока таймера. Когда программа приостанавливается, используйте команду «Add Breakpoint» в меню Run, чтобы добавить точку останова данных, используя адрес поля FExternalThread нового объекта. После этого, если значение этого поля изменится, отладчик приостановит работу и покажет, что его изменило. (Точка останова данных будет сбрасываться при каждом запуске программы, поскольку среда IDE предполагает, что объект не будет выделяться по одному и тому же адресу каждый раз.)

-121--2831521-

Согласно http://www.grails.org/Spring+Bean+Builder ваш метод должен быть правильным. Я только что сделал несколько Googleing и обнаружил, что это должно сделать (не протестировано):

beans = {
 eventDao(com.JavaClassRequiringDataSource) {
  dataSource = ref('dataSource', true)
 }
}

, чтобы вы ссылались на него не по переменной, а по имени. (Источник: http://burtbeckwith.com/blog/?cat=23 )

7
ответ дан 14 December 2019 в 08:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: