Grails 2.3.5 requiring "grails clean" after every code change - grails

Every time I modify my code I have to run grails clean before running grails run-app. If I don't, I get messages like this:
| Error 2014-02-13 16:33:16,774 [localhost-startStop-1] ERROR context.GrailsContextLoader - Error initializing the application: Error creating bean with name 'transactionManagerPostProcessor': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager': Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Cannot resolve reference to bean 'dataSource' while setting bean property 'dataSource'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource': Cannot resolve reference to bean 'dataSourceUnproxied' while setting bean property 'targetDataSource'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSourceUnproxied': Error setting property values; nested exception is org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are:
PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property 'driverClassName' threw exception; nested exception is java.lang.IllegalStateException: Could not load JDBC driver class [oracle.jdbc.OracleDriver]
Message: Error creating bean with name 'transactionManagerPostProcessor': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager': Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Cannot resolve reference to bean 'dataSource' while setting bean property 'dataSource'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource': Cannot resolve reference to bean 'dataSourceUnproxied' while setting bean property 'targetDataSource'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSourceUnproxied': Error setting property values; nested exception is org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are:
PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property 'driverClassName' threw exception; nested exception is java.lang.IllegalStateException: Could not load JDBC driver class [oracle.jdbc.OracleDriver]
Line | Method
->> 262 | run in java.util.concurrent.FutureTask
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 1145 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 615 | run . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^ 744 | run in java.lang.Thread
This is really odd, because it seems Grails cannot load the Oracle database driver... but it loads fine if I run
grails clean
grails run-app
This app I'm working on was upgraded today from Grails 2.2.4. The upgrade was seemless (until this). All I had to do was change the hibernate and tomcat versions then run grails upgrade; grails clean
Any ideas how I can get it so I can modify the code and just restart using grails run-app or better... get the reload functionality to work, so when I make code modifications it automatically compiles the file I just saved (this worked great in Grails 2.2.4).

Have you tried grails -reloading run-app?
Since you have mentioned you have only changed the plugin versions during upgrade, I suppose you are not using forked mode where reloading is enabled by default.
Have a look at Forked Execution and the Reloading Agent. Also note that grails upgrade command has been deprecated in 2.3.*.

Related

Grails 3 hibernateDatastore stratup error after migrating from Grails 2

I am upgrading to Grails 3.3.1 from a Grails 2.4 app.
Things seemed to be going slow but OK until I stumbled into this problem when trying to run the app:
Configuring Spring Security Core ...
... finished configuring Spring Security Core
Configuring Spring Security Shiro ...
... finished configuring Spring Security Shiro
2017-12-19 18:51:43.400 ERROR --- [ost-startStop-1] o.s.b.c.embedded.tomcat.TomcatStarter : Error starting Tomcat context. Exception: org.springframework.beans.factory.BeanCreationException. Message: Error creating bean with name 'grailsCacheFilter': Cannot create inner bean '(inner bean)#3238926e' of type [grails.plugin.cache.web.filter.simple.MemoryPageFragmentCachingFilter] while setting bean property 'filter'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name '(inner bean)#3238926e': Unsatisfied dependency expressed through method 'setUrlMappingsHandlerMapping' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'urlMappingsHandlerMapping': Unsatisfied dependency expressed through method 'setWebRequestInterceptors' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'openSessionInViewInterceptor': Cannot resolve reference to bean 'hibernateDatastore' while setting bean property 'hibernateDatastore'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hibernateDatastore': Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.grails.orm.hibernate.HibernateDatastore]: Constructor threw exception; nested exception is java.lang.ExceptionInInitializerError
2017-12-19 18:51:43.492 ERROR --- [ main] o.s.b.d.LoggingFailureAnalysisReporter :
***************************
APPLICATION FAILED TO START
***************************
Description:
The dependencies of some of the beans in the application context form a cycle:
grailsCacheFilter
↓
(inner bean)#3238926e
↓
urlMappingsHandlerMapping
↓
openSessionInViewInterceptor
┌─────┐
| hibernateDatastore
└─────┘
Hibernate and Shiro version in the build gradle:
// hibernate
compile "org.grails.plugins:hibernate5:6.0.13"
compile "org.hibernate:hibernate-core:5.1.10.Final"
compile "org.hibernate:hibernate-ehcache:5.1.10.Final"
compile 'org.grails.plugins:spring-security-shiro:3.0.1'
Is this a common error people are running into?
Will I have to go through my dependences one by one to see if one of them is causing this?

SLF4J exception when deploying to weblogic

We've started getting the following exception when deploying to Weblogic:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name
'alertService': Initialization of bean failed; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mailService': Initialization of bean failed; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mailMessageBuilderFactory': Initialization of bean failed; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mailMessageContentRenderer': Initialization of bean failed; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'groovyPagesTemplateEngine': Cannot resolve reference to bean 'gspTagLibraryLookup' while setting bean property 'tagLibraryLookup'; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'gspTagLibraryLookup': Invocation of init method failed; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'grails.plugin.springsecurity.SecurityTagLib': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'webInvocationPrivilegeEvaluator': Cannot resolve reference to bean 'filterInvocationInterceptor' while setting constructor argument; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'filterInvocationInterceptor': Invocation of init method failed; nested exception is
java.lang.NoSuchMethodError: org.slf4j.helpers.MessageFormatter.arrayFormat(Ljava/lang/String;
[Ljava/lang/Object;)Lorg/slf4j/helpers/FormattingTuple;
I've tried removing the slf4j jar from my ear. I've also tried putting the following in my weblogic-appliction.xml:
<prefer-application-packages>
<package-name>org.slf4j.*</package-name>
</prefer-application-packages>
<prefer-application-resources>
<resource-name>org/slf4j/impl/StaticLoggerBinder.class</resource-name>
</prefer-application-resources>
Nothing has worked thus far. Basically, I've tried all of the different things that I've found online. Usually, when I have a conflict with a jar that I'm providing myself and that Weblogic is also providing, just using the prefer-application-packages does the trick.
I'm using Grails 2.3.6 with Weblogic 10.3.6.
In case anyone comes across this issue, this is what my problem ended up being:
What was happening is that we were including the activemq-all artifact for JMS stuff, and this artifact is what they call an "uber" jar. It as a ton of dependencies baked into it that cannot be excluded via maven – one of those dependencies was an old version of slf4j. So, even though I had the "prefer-application-packages" set in Weblogic for slf4j, it wasn't using the Grails provided version, but rather the activemq one. Rather than using the activemq-all dependency, I switched to use individual components from activemq and was able to at that point exclude slf4j. This solved my issue.

Error in Declaration of service within Grails service

I have concerns about the use of Services within other Services. Some work, but others don't. The problem is that I can't figure out what's wrong.
When you add a service that generates the error always occurs the same problem, then I withdraw the reference to service problematic and the system returns to normal.
I wonder if the same is effecting any circular reference creating instability.
class UserService {
def terceirizadoService
def unidadeService
def grailsApplication
def springSecurityService
def tabService //If I remove this line the system works
...
}
class TabService {
def contratoService, grailsApplication ...
}
The error happens when the Bootstrap reference is made to a domain that has a reference to the tabService service.
class Car implements Serializable {
transient tabService
...
}
and generates this log:
Caused by BeanCreationException: Error creating bean with name ‘tabService’: Cannot create inner bean '(inner bean)' while setting bean property 'target'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#2': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'contratoService': Cannot create inner bean '(inner bean)' while setting bean property 'target'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#3': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘userService’: Cannot create inner bean '(inner bean)' while setting bean property 'target'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#5': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name ‘tabService’: org.springframework.beans.factory.FactoryBeanNotInitializedException: FactoryBean is not fully initialized yet
->> 105 | methodMissing in org.grails.datastore.gorm.GormStaticApi
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 558 | doCall in BootStrap$_closure1
| 308 | evaluateEnvironmentSpecificBlock in grails.util.Environment
| 301 | executeForEnvironment in ''
| 277 | executeForCurrentEnvironment . . in ''
| 262 | run in java.util.concurrent.FutureTask
| 1145 | runWorker . . . . . . . . . . . in java.util.concurrent.ThreadPoolExecutor
| 615 | run in java.util.concurrent.ThreadPoolExecutor$Worker
^ 744 | run . . . . . . . . . . . . . . in java.lang.Thread
Caused by BeanCreationException: Error creating bean with name '(inner bean)#2': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'contratoService': Cannot create inner bean '(inner bean)' while setting bean property 'target'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#3': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘userService’: Cannot create inner bean '(inner bean)' while setting bean property 'target'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#5': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name ‘tabService’: org.springframework.beans.factory.FactoryBeanNotInitializedException: FactoryBean is not fully initialized yet
->> 105 | methodMissing in org.grails.datastore.gorm.GormStaticApi
I'm using Grails 2.3.7
We've seen issues like this whenever we use prototype scoped services as well (not sure if that applies to you).
As a work around you could solve it by not injecting the tabService but getting it on demand:
def getTabService() {
grailsApplication.mainContext.getBean(TabService)
}
Not ideal, obviously.

Grails build on build server failing

When running the build of our Grails app locally, it works fine. However, when it runs out on our TeamCity instance, after it does the unit tests and goes into the integration test phase, this happens:
[13:15:35][exec] Configuring Spring Security Core ...
[13:15:36][exec] ... finished configuring Spring Security Core
[13:15:36][exec]
[13:26:43][exec] Error |
[13:26:43][exec] Fatal error running tests: Error creating bean with name 'transactionManagerPostProcessor': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager': Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Invocation of init method failed; nested exception is org.hibernate.HibernateException: Unable to instantiate default tuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer] (Use --stacktrace to see the full trace)
[13:26:43][exec] Tests FAILED |
[13:26:43][exec]
[13:26:45][exec] Error |
[13:26:45][exec] Error executing script TestApp: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManagerPostProcessor': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager': Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Invocation of init method failed; nested exception is org.hibernate.HibernateException: Unable to instantiate default tuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer] (Use --stacktrace to see the full trace)
[13:26:45][exec] Result: 1
Any clue why this would happen on the build box but not locally? I can't find anything that makes sense to me.

grails integration test giving java.lang.verify error for enum in domain

I am using grails 2.2.0 when executing command test-app-integration -coverage it is giving error
Error Exception occurred trigger event [TestPhasesEnd]: Could not create a new instance of class [AdminController]! (Use --stacktrace to see the full trace)
| Error Error executing script TestApp: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManagerPostProcessor': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager': Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Invocation of init method failed; nested exception is java.lang.VerifyError: (class: com/cantina/lab/Movie$FileGroupVideo, method: whereAny signature: (Lgroovy/lang/Closure;)Lgrails/gorm/DetachedCriteria;) Incompatible type for getting or setting field
Move the enum to src/groovy as a workaround. See this jira issue., should be fixed in 2.2.1.

Resources