2011-01-04 11 views
2

Ich verwende die Tapestry5 tapx template library, um eine HTML-E-Mail zu senden, wie this example.Tapestry5: Kein Dienst implementiert die Schnittstelle org.springframework.context.ApplicationContext

Wenn ich das Beispiel, das ich die folgende Fehlermeldung aus:

Caused by: java.lang.RuntimeException: No service implements the interface org.springframework.context.ApplicationContext. 
     at org.apache.tapestry5.ioc.internal.RegistryImpl.getService(RegistryImpl.java:560) 
     at org.apache.tapestry5.ioc.internal.ObjectLocatorImpl.getService(ObjectLocatorImpl.java:44) 

Alle tapestry- * Gläser, einschließlich Gobelin-Feder-5.1.05.jar sind in meinem Classpath.

Irgendwelche Hinweise, was ich vermisse?

+0

Haben Sie auch Frühling auf dem Klassenpfad? – Henning

+0

Ja ............ – Joel

+0

verwenden Sie eine IDE, die das Programm debuggen kann? Wenn ja, breche den Konstruktor dieser Klasse auf: https://svn.apache.org/repos/asf/tapestry/tapestry5/trunk/tapestry-spring/src/main/java/org/apache/tapestry5/spring/SpringModule. Java, um zu bestätigen, dass der Frühling beginnt. Wenn nicht, ist es wahrscheinlich, dass es nicht wirklich auf dem Klassenpfad ist. – pstanton

Antwort

1

Ich habe es herausgefunden. SpringIOC lädt alle gefundenen Module auf dem Klassenpfad. Das SpringModule in "tapestry-spring.jar" versucht, den Service "ApplicactionContext" zu initialisieren, wodurch das Problem verursacht wird.

Das Entfernen von tapestry-spring.jar aus dem Klassenpfad behebt das Problem.

0

Folgen Sie den Anweisungen auf der Website sorgfältig; Ich nehme an, dass Sie nicht den speziellen TapestrySpringFilter (anstelle des normalen TapestryFilter) verwenden.

Es ist eine Weile her, seit ich diesen Code angesehen habe; Ich kann mich nicht erinnern, wenn der ApplicationContext als Dienst oder injizierbares Objekt verfügbar gemacht wird. Scheint so, als müsste es sein.

+0

Hallo Howard. Verwenden Sie den TapestrySpringFilter nicht für Web-Apps? Ich benutze die Tapx Templating-Bibliothek - um HTML-E-Mails zu senden, dachte ich nicht, dass ich eine Notwendigkeit für Spring hatte. – Joel

0

Fair genug; nicht sicher, was Sie Situation ist, aber Sie sollten genauer untersuchen, was TapestrySpringFilter in Bezug auf die Einrichtung und repliziert es in den Start Ihrer Standalone-App. Es gibt eine spezielle Bootstrapping-Magie, die du nutzen willst.

+0

OK wird nicht tun, danke! (Gilt das immer noch, wenn ich nicht Spring oder T5 web, sondern nur eine eigenständige Anwendung verwende?) – Joel