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
Другие вопросы по тегам