| 

.NET C# Java Javascript Exception

could not initialize proxy - no Session MIT GrailsOpenSessionInViewFilter

Dies ist das Archiv des ehemaligen Forums zum Thema Groovy, Grails, Griffon und Bean Scripting Framework, welches unter groovy-forum.de existierte. Die neue Adresse des Groovy-Forums ist: http://codekicker.de/fragen/themen/groovy.


could not initialize proxy - no Session MIT GrailsOpenSessionInViewFilter

blickwinkel - 07.03.2009 14:19
Bin echt schon am verzweifeln.
Ich hab im Prinzip die gleiche Fehlermeldung wie im Posting http://www.groovy-forum.de/read.php?3,3702. Hab auch die web.xml mit dem GrailsOpenSessionInViewFilter gespeist. Das Problem bleibt aber unverändert. Ich hab auch probiert bei den ensprechenden Klasse den fetch-mode komplett und nur für die entsprechenden Assoziationen umzustellen.

Hintergrund:
Ich hab acegi installiert. Jeder User hat Rollen (authorities). Jede Rolle kann eine bestimmte Stelle bearbeiten. Jetzt will ich für einen User alle Stellen, die er bearbeiten kann anzeigen lassen. Dazu muss ich natürlich auf jede Rolle des users zugreifen und die assoziierte Stelle speichern.

Komischerweise funkts in der grails console ohne Probleme.
def user = User.get(1)

def  stellen = new HashSet()

user.authorities.each {
          stellen.add(it.stelle)
}

println stellen


Beim Anzeigen im Browser erscheint dann aber immer die Fehlermeldung:
org.hibernate.LazyInitializationException: could not initialize proxy - no Session

at Stelle$$EnhancerByCGLIB$$b3ccf9b0.getMetaClass(<generated>)

at grails_app_views_common__topbar_gsp.run(grails_app_views_common__topbar_gsp:36)

at grails_app_views_layouts_main_gsp.run(grails_app_views_layouts_main_gsp:44)



Hab im netz (http://jira.codehaus.org/browse/GRAILS-2764) gelesen, dass es bei lazy-fetching zu problemen mit sitemesh kommt. Ich glaub nicht, dass das der Grund ist, da ich doch bei den Klassen authority und stelle eager-fetching (über static mapping ={adress lazy:false}) probiert habe.

Bitte dringend um irgendwelche Tipps, sitze schon seit gestern daran


Re: could not initialize proxy - no Session MIT GrailsOpenSessionInViewFilter

blickwinkel - 09.03.2009 11:00
Danke für die Antwort.

Im Controller hole ich mir das User-Objekt via acegi (also
def user = authenticateService.userDomain()
)

In der Console gehts mit acegi ja nicht, also hab ich das user-objekt (zum test) mit get geholt.

Hab wirklich alles probiert, auch den wirklich guten Artikel "Understanding lazy fetching" gelesen. Soweit ich verstanden habe, kommts zu Problemen, falls es zur Datenbankabfrage in einem view kommt, wenn das Objekt vorher schon in einem controller von der DB geholt wurde, aber noch Assoziationen usw im view geholt werden müssen. Das ist aber doch öfters der Fall, ohne das es zum error kommt.


vielleicht funkt der grailsopensessioninviewfilter nicht bei mir. Aber der ist doch von Haus aus dabei, ich habe ja grails 1.0.4 und die web.xml angepasst.


Re: could not initialize proxy - no Session MIT GrailsOpenSessionInViewFilter

blickwinkel - 09.03.2009 18:20
hmm, interessant danke. im Prinzip glaube ich, ist es bei mir auch der Fehler. Nur hab ich den umgekehrten Fall. Ich weise im controller (bzw before-interceptor) einer session-variable eine collection von Objekten zu (habs auch nur mit den id's der Objekte probiert) und will im view auf die session-variable (collection) zugreifen.

Controller:
user.authorities.each {
            stellen.add(it.stelle)
}
session.stellen = stellen

bzw

user.authorities.each {
            stellen.add(it.stelle.id)
}
session.stellen = stellen

View:
<g:select from="${session.stellen}" value="${session.stellenWahl}"
          optionKey="id" name="stellenWahl"></g:select>


Nach Lesen des Artikels habe ich probiert, die Objekte die in der session variable gespeichert sind wieder "zurückzuholen", da sie ja beim schreiben in die session dispatched wurden. also:

<g:set var="stellen" value="${new ArrayList()}" />
<g:each in="${session.stellen}">
         ${stellen =+ Stelle.get(it)}
</g:each>

<g:select from="${stellen}" optionKey="id" name="stellenWahl"></g:select>


funkt aber nicht. gleiche Fehlermeldung. total eigenartig.


Re: could not initialize proxy - no Session MIT GrailsOpenSessionInViewFilter

saurier - 10.03.2009 00:06
Das scheint (zum Glück) wirklich nur ein Problem bei den Sessions zu sein. Ich
benutze ähnliche Konstruktionen öfter und hatte noch nie ein Problem damit.

Ich tendiere zwar manchmal auch zum "Hauptsache es läuft", aber mit Deiner
letzten Lösung würde ich mich wahrscheinlich nicht zufrieden geben - na gut,
irgendwann will man einfach nicht mehr. Hast Du Dir mal ausgeben lassen,
was da im Controller wirklich in die Session geschrieben wird? Oder schon
im Controller noch ein explizites "get" versucht? Also sowas wie..

stellen.add(Stelle.get(it.stelle.id))

Gruß, Christian


Stelle deine Groovy-Frage jetzt!


Diese Seite zeigt den Thread "could not initialize proxy - no Session MIT GrailsOpenSessionInViewFilter" der ehemaligen Webseite groovy-forum.de, welche durch einen Serverunfall zerstört wurde. codekicker.de hat viele Konversationen über die beliebte Programmiersprache Groovy und zugehörige Frameworks wie das Grails-Framework retten können.

Hast Du eine Frage zum Thema Groovy, Grails oder allgemein Java? Viele ehemalige groovy-forum.de Mitglieder beantworten dir auf codekicker.de deine Frage! Stelle jetzt eine Frage!

Viele weitere Diskussionen zu Grails und Groovy befinden sich auf der Threadübersicht des alten groovy-forum.de.