Grails MissingMethodException: createCriteria в WAR, выполняется локально
У меня есть приложение Grails, которое довольно ванильно. Доменные объекты над контроллерами. Все работает нормально при локальном использовании run-app или run-war. Когда я создаю WAR-файл с помощью Grails War и внедряю его в каталог веб-приложений Tomcat 7.0.25, я получаю следующее:
Ошибка 500: Внутренняя ошибка сервера URI/apps2/mriMetricAdjustment/teamResultAdjustment/list Classgroovy.lang.MissingMethodException Сигнатура MessageNo подписи метода: com.thrivent.mriAdjustment.domain.TeamResultAdjustment.withCriteria() применима для значений аргументов:] (): Возможные решения: withCriteria(groovy.lang.Closure), withCriteria(java.util.Map, groovy.lang.Closure), createCriteria()
withCriteria()
является методом домена, и эта ошибка присутствует на всех объектах домена. Я испробовал все способы очистки, обновления зависимостей, различные переключатели окружения на сборке войны (как в grails prod war). Я полностью уничтожил приложение на Tomcat и переместил его. Ничего такого. Я работаю в Groovy Grails Tool Suite 3.1.0, Grails 2.1.1. Любая помощь будет принята с благодарностью.
Добавление трассировки стека и кода, где проблема решена. То же место в каждом контроллере:
[2013-04-19 16: 51: 43.931] sysCorpMRIMetricAdjustments ajp-bio-8018-exec-2 ОШИБКА rg.codehaus.groovy.grails.web.errors.GrailsExceptionResolver - ошибка MissingMethodException возникла при обработке запроса: [GET] /apps2/mriMetricAdjustment/teamResultAdjustment/list Отсутствует подпись метода: com.thrivent.mriAdjustment.domain.TeamResultAdjustment.withCriteria() применима для типов аргументов: () значения: [] Возможные решения: withCriteria (groovy.lang.Closure), withCriteria (java).util.Map, groovy.lang.Closure), создать Критерии (). Следование стека: groovy.lang.MissingMethodException: Нет подписи метода: com.thrivent.mriAdjustment.domain.TeamResultAdjustment.withCriteria() применимо для типов аргументов: () значения: [] Возможные решения: withCriteria(groovy.lang.Closure), withCriteria(java.util.Map, groovy.lang.Closure), createCriteria() в com.thrivent.mriAdjustment.controller.TeamResultAdjustmentController.list(TeamResultAdjustmentController.groovy:34) в grails.plubFilg.File.doFilter(PageFragmentCachingFilter.java:195) в grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63) в java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolEx88) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) в java.lang.Thread.run(Thread.java:662)
def results = TeamResultAdjustment.withCriteria {
and {
like("recordStatusCode", "A")
like ("teamID", "%" + params.tsID + "%")
}
}
Обновлен фрагментом из журнала и трассировки стека ошибки. Есть ли кэш Tomcat, который необходимо очистить?
[2013-04-22 08: 42: 33.414] sysCorpMRIMetricAdjustments ajp-bio-8018-exec-4 DEBUG> ngframework.beans.factory.support.DefaultListableBeanFactory - debug Возвращение кэшированного> экземпляра одиночного бина 'grailsApplication' [2013-04-22 08:42:33.432] sysCorpMRIMetricAdjustments ajp-bio-8018-exec-4 DEBUG >ngframework.beans.factory.support.DefaultListableBeanFactory - отладка Возвращение кэшированного> экземпляра единственного компонента bean 'grailsApplication' [2013-04-22 08:42] 33.438] sysCorpMRIMetricAdjustments ajp-bio-8018-exec-4 ERROR >rg.codehaus.groovy.grails.web.errors.GrailsExceptionResolver - ошибка> Произошло исключение MissingMethodException при обработке запроса: [GET] / apps2 / mriMmentment listjjjjjjjjjjjj signatureric signature signaturericricricricricricricricric ricjricricricricricricricricricricricricricricricricricricricricricricricricricricricricricricricricricricricricricricricricricric [[[[[[[ метода: com.thrivent.mriAdjustment.domain.GoalAdjustment.createCriteria() > применимо для типов аргументов: () values: [] Возможные решения: createCriteria(). Следование стека: groovy.lang.MissingMethodException: нет подписи метода: >com.thrivent.mriAdjustment.domain.GoalAdjustment.createCriteria() применимо для> типов аргументов: () values: [] Возможные решения: createCriteria() at >com.thrivent.mriAdjustment.controller.GoalAdjustmentController.list(GoalAdjustmentController.groovy:33) at >grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilte>r.bache.gp. filter.AbstractFilter.doFilter (AbstractFilter.java:63) в>java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)> в java.util.concurrent.ThreadPoolExecutor $ Threader.r: 908) на java.lang.Thread.run(Thread.java:662)
`plugins {runtime": hibernate: $ grailsVersion "runtime": jquery: 1.8.0 "runtime": ресурсы:1.1.6"
// Uncomment these (or add new ones) to enable additional resources capabilities
//runtime ":zipped-resources:1.0"
//runtime ":cached-resources:1.0"
//runtime ":yui-minify-resources:0.1.4"
build ":tomcat:$grailsVersion"
//build ":hibernate:$grailsVersion"
runtime ":database-migration:1.1"
compile ':cache:1.0.0'
compile ":grails-ui:1.2.3"
compile ":yui:2.8.2.1"
compile ":bubbling:2.1.4"
compile ":searchable:0.6.4"
compile ":jquery-ui:1.8.24"
compile ":jquery-datatables:1.7.5"
//compile ":hibernate:$grailsVersion"
}`
И последнее по порядку, но не по значению - каталины, когда я записываю войну
>Apr 22, 2013 11:50:22 AM org.apache.catalina.startup.HostConfig checkResources
>INFO: Undeploying context [/apps2/mriMetricAdjustment]
>Apr 22, 2013 11:50:22 AM org.apache.catalina.startup.HostConfig deployWAR
>INFO: Deploying web application archive /opt/Apache/Tomcat7.0.25/profiles/sysCorpMRIMetricAdjustments/webapps/apps2#mriMetricAdjustment.war
>Apr 22, 2013 11:50:26 AM org.apache.catalina.core.ApplicationContext log
>INFO: Initializing Spring root WebApplicationContext
>Apr 22, 2013 11:50:55 AM org.apache.catalina.core.ApplicationContext log
>INFO: Initializing Spring FrameworkServlet 'grails'
>Apr 22, 2013 11:54:19 AM org.apache.catalina.core.ApplicationContext log
>INFO: Initializing Spring FrameworkServlet 'gsp'
>Apr 22, 2013 11:54:19 AM org.apache.catalina.core.ApplicationContext log
>INFO: GSP servlet initialized
Еще одно обновление... вот мои установленные плагины:
Plug-ins you currently have installed are listed below:
-------------------------------------------------------------
bubbling 2.1.4 -- Bubbling Library YUI Extension
cache 1.0.0 -- Cache Plugin
database-migration 1.1 -- Grails Database Migration Plugin
grails-ui 1.2.3 -- Grails UI
hibernate 2.1.1 -- Hibernate for Grails
jquery 1.8.0 -- JQuery for Grails
jquery-datatables 1.7.5 -- JQuery DataTables Plugin
jquery-ui 1.8.24 -- jQuery UI resources
resources 1.1.6 -- Resources
searchable 0.6.4 -- Searchable Plugin
tomcat 2.1.1 -- Apache Tomcat plugin for Grails
webxml 1.4.1 -- WebXmlConfig
yui 2.8.2.1 -- Yahoo! User Interface Library (YUI)
2 ответа
Так что это не имеет ничего общего с WAR приложения, а скорее с несовпадением конфигурации сервера с DataSource.groovy. Сервер был назван 'systst', но среда в DataSource.groovy была помечена как 'syst *e* st.' Я подозреваю, что конфигурации GORM никогда не было, потому что конфигурации источника данных никогда не загружались. Сообщений об ошибках не было, однако я бы подумал, что объекты Домена не будут работать, так как я ссылаюсь на имя источника данных в Домене. Спасибо всем!
Пожалуйста, поделитесь кодом для domain
а также controller
, Это работало для меня без каких-либо исключений.
шаги:
- созданный
demoApp
- созданный
domain
- созданный
controller
- Используемый
withCriteria
отindex()
действие grails war
- Развернутая WAR для Tomcat 7.0.39 (последняя версия)
Вы можете найти детали здесь.
URL для попадания:
http://localhost:8080/demoApp-0.1/foo?name=Foo