If I create a new web profile app, and generate-all, it runs fine in my local and deploys without error to JBoss. But when I try to access the app all URLs return 404. I know the app started up successfully, because it created tables in the database.
Here's what I'm doing.
grails 3.1.4> create-app demo
create-domain-class Book
create-domain-class Author
Edit domain classes
generate-all *
change tomcat dependency from compile to provided in build.gradle
change dataSource in application.yml to use my JNDI Oracle connection
Add server: contextPath: /demo to application.yml
run-app -> Works
gradle war
Deploy to JBoss EAP 6.4.0.GA
JBoss says deployment and activation of the app was successful. There are no errors of any sort in any JBoss log file. And dbCreate: update made the DDL changes to my Oracle database, so I know it got that far. But all URLs for the app return 404.
This is a known bug: Issue-9481
It has been added to grails 3.1.5 milestone.
Related
I am trying to use a Grails Project as a Plugin to basically have my domain classes in the Plugin and then use them in multiple Grails projects.
I've done this:
grails create-app web
grails create-app plugin
create a settings.gradle in the root directory of both projects with
include 'plugin', 'web'
then I added spring security to the plugin and used s2-quickstart to create a user and a role domain class and added some default users to the Bootstrap.groovy.
Starting the plugin project alone doesn't show any issues.
Now I added the plugin as a dependency to the web project:
compile (':plugin')
This way I can access the domain classes from the plugin inside the web project, it compiles fine. I added the spring config to the application.groovy and am now trying to use the domain classes from the plugin inside the web project.
Trying this however my project does not correctly start and it tells me this:
java.lang.IllegalStateException: Either class [htcommon.HtRole] is not a domain class or GORM has not been initialized correctly or has already been shutdown. If you are unit testing your entities using the mocking APIs
as soon as my code tries to do new HtRole(...).save()
It seems the domain classes from the plugin are not recognized as GORM classes somehow.
The issue with the domain not being recognized as a GORM class was due to the constructors provided in them. These constructors were generated from s2-quickstart, but should be removed (it's a bug in spring-security-core). I removed the constructors and the one place you were using them I used map style default constructors. Then I fixed the call you had to get the current user.
The repaired source is in this repo on GitHub (patch-1 branch is working, master is the OP's original broken code)
I received the same error message when running a plugin containing GORM domains using grails run-app in Grails 3.1.6. I fixed the problem by providing explicit configuration for initialising Hibernate as follows:
build.gradle:
dependencies {
...
runtime "org.grails.plugins:hibernate4"
runtime "org.hibernate:hibernate-ehcache"
}
grails-app/conf/application.yml:
---
environments:
development:
hibernate:
cache:
queries: false
use_second_level_cache: true
use_query_cache: false
region.factory_class: 'org.hibernate.cache.ehcache.EhCacheRegionFactory'
dataSource:
pooled: true
jmxExport: true
driverClassName: org.h2.Driver
username: sa
password:
dbCreate: create-drop
url: jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE
i've just upgraded my app to grails 2.3.4 and i'm implementing Cucumber and Geb test in order to keep it all covered.
The problem is that one of the requirements of the application that should only listen secure connections (https) so i added in config groovy
grails.plugin.springsecurity.auth.forceHttps = "true"
grails.plugin.springsecurity.secureChannel.definition = [
'/**':'REQUIRES_SECURE_CHANNEL'
]
Now, the problem is when i run grails test-app -https, is not working the param -https and only starts the application in non-secure channel.
Any ideas to run test-app in https?
Thanks in advance
Seems to be a Grails bug. I have submitted a pull request and also added a comment to this question.
I'm trying to use Grails new forked mode. I enabled it in BuildConfig.groovy file using
grails.project.fork.run = true
and now the tomcat server starts in "detached mode" as expected, but my application is not deployed.
I also configured an external directory where I put the war of my application, like this:
grails.project.autodeploy.dir = "../mywar"
but nothing changed.
Is there anything else I should do to configure forked mode?
I have Weceem 1.0 plugin installed in an empty Grails 1.3.7 application. I did the initial setup from the docs page, and I switched the devDB from "mem" to "file" storage.
I can create a space, populate some content, but then when I restart the application (grails run-app), my space and content is gone.
The devDB.script and other files show traces of Weceem data, but I lose the content in the newly started application.
What do I need to do to get it persistent?
You need to remove the settings dbCreate = "create/create-drop" and replace it by "update" or "none" in your DataSource.groovy file for development environment.
you can also start running a mongo database,
$ grails install-plugin mongodb
remove hibernate and add this to your domain class, to save your stuff to mongodb:
static mapWith="mongo"
Bootstrap executes fine during run-app (database is seeded). But it doesn't appear to get invoked when Tomcat deploys the war (nothing in the database).
Does the Bootstrap get run during war deployment? If not, is there a way to make it run?
Specifically I am wanting my sample data to seed the database.
Yes it does....
i would look to make sure you have your environments configured properly if you see thing working in development, but not production