2011-08-30 7 views
6

Próbuję użyć tkania czasu ładowania w projekcie Grails, aby móc serializować i deserializować obiekt i mieć automatyczne wtryskiwanie zależności sprężynowych. Po pewnym wyszukiwaniu znalazłem easy example i wydaje się, że działa zgodnie z oczekiwaniami. Ale po zastosowaniu tej samej konfiguracji do prostego projektu Grails dostaję wiele błędów. Na przykład:Załadowanie czasu ładowania w grails

[[email protected]] error at org/springframework/web/servlet/theme/AbstractThemeResolver.java::0 class 'org.springframework.web.servlet.theme.AbstractThemeResolver' is already woven and has not been built in reweavable mode 

z tym testem stworzyłem nowy projekt grails i zmienił applicationContext.xml:

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context.xsd"> 

<context:spring-configured /> 
<context:load-time-weaver aspectj-weaving="autodetect" weaver-class="org.springframework.instrument.classloading.ReflectiveLoadTimeWeaver"/> 

W tym pliku utworzonego również nowy Fasola:

<bean class="be.testweaving.Person" scope="prototype"> 
    <property name="name" value="Timon"/> 
</bean> 

Definiuje prototyp dla klasy Person i wprowadza wartość Timon do właściwości name.

Pakuję to jako wojnę używając grails war i wdrażam to na serwerze tomcat. Ten tomcat ma org.springframework.instrument.tomcat-3.0.5.RELEASE.jar w swoim katalogu lib i po wdrożeniu widzę ogromną listę błędów, o których wspomniałem powyżej.

Czy ktoś mógł skonfigurować tkanie czasu ładowania w Grails?

+0

Kiedy podążam za przykładem wspomnianym powyżej i wdrażam to w tym samym tomcat, widzę przykład działania i tkactwo wydaje się działać dobrze. Czy ktoś mógłby mi powiedzieć, że jest coś szczególnego, co uniemożliwia tkanie? – sterym

+0

Jaką wersję Grails używasz? –

+0

Używam Grails 1.3.7 – sterym

Odpowiedz

0

Dlaczego po prostu nie wstrzykniesz swojej nieruchomości przez metaklass?

class ExampleBootStrap { 
def init = { servletContext -> 
    Person.metaClass.constructor = { 
     def person = BeanUtils.instantiateClass(Person) 
     person.name = "Timon" 
     person 
    } 
} 
}