Archive for the ‘grails’ Category

Grails – jak skonfigurować połączenie do SQL SERVER 2008

Thursday, March 18th, 2010

Podczas moich pierwszych potyczek z Grailsami zmuszony byłem utworzyć połączenie z bazą danych Microsoftu. O ile w przypadku MySqla nie było większych problemów z utworzeniem prawidłowej konfiguracji pliku DataSource.groovy, to utworzenie DataSource dla SQL Servera wymagało trochę prób i testów oraz poszperania w sieci.

1. Sciągamy najnowszy sterownik JDBC ze strony Microsoftu – Microsoft SQL Server JDBC Driver 2.0
2. Kopiujemy plik sqljdbc4.jar do katalogu /lib w naszym projekcie
3. Uzupełniamy plik DataSource.groovy według poniższego przykładu

dataSource {
pooled = true
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
}


// environment specific settings
environments {
development {
dataSource {
dbCreate = 'create-drop' //one of 'create','create-drop','update','none'
url = "jdbc:sqlserver://twojaNazwaSerwera; database=twojaNazwaBazyDanych; port=1433; instanceName=nazwaInstancjiSerwera"
databaseName = "twojaNazwaBazyDanych"
username = "twojaNazwaUzytkownika"
password = "twojeHaslo"
dialect = org.hibernate.dialect.SQLServerDialect
}
}
}

Connection string (url) składa się z 4 parametrów:

  • nazwy serwera
  • nazwy bazy danych
  • portu (protokół TCP standardowo pracuje na porcie 1433)
  • nazwy instancji serwera

Podanie 4 parametrów jest kluczem umożliwiającym połączenie z bazą SQL Server 2008.

org.hibernate.MappingException przy próbie deploy aplikacji grails na serwerze aplikacji glassfish v3

Thursday, March 18th, 2010

Krótko i treściwie będzie.

Otrzymałem aplikację do opublikowania od jednego z developerów, aplikacja była utworzona w nowym frameworku, który ostatnio jest na tapecie u nas – grails . Jako serwera aplikacji używamy glassfisha w wersji 3, który sobie pracuje na debianie.

Standardowo:

asadmin --port 4849 deploy /path.to.app.war

i niestety, glassfish odezwał się do mnie niemiło:

com.sun.enterprise.admin.cli.CommandException: remote failure: Exception while loading the app :
java.lang.Exception: java.lang.IllegalStateException: ContainerBase.addChild: start:
org.apache.catalina.LifecycleException: org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'messageSource': 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.MappingException: Type [null] is not a basic type or a domain class and cannot be mapped.
Either specify a type within the [mapping] block or use a basic type (String, Integer etc.)

Co dalej?
Developer wspomniał, że dokonywał paru zmian w klasach domenowych (aplikacja już była wcześniej publikowana z sukcesem!)
, więc postanowiliśmy wyczyścić projekt, zanim zostanie utworzony plik war, więc:

grails clean
grails war

Tym razem deploy zakończył się sukcesem!

Application deployed successfully with name KalendarzPracownika-0.1.
Command deploy executed successfully.