Return-Path: Delivered-To: apmail-tapestry-users-archive@www.apache.org Received: (qmail 57803 invoked from network); 4 Jan 2009 09:26:36 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 4 Jan 2009 09:26:36 -0000 Received: (qmail 28902 invoked by uid 500); 4 Jan 2009 09:26:34 -0000 Delivered-To: apmail-tapestry-users-archive@tapestry.apache.org Received: (qmail 28882 invoked by uid 500); 4 Jan 2009 09:26:34 -0000 Mailing-List: contact users-help@tapestry.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "Tapestry users" Delivered-To: mailing list users@tapestry.apache.org Received: (qmail 28871 invoked by uid 99); 4 Jan 2009 09:26:34 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 04 Jan 2009 01:26:34 -0800 X-ASF-Spam-Status: No, hits=2.2 required=10.0 tests=HTML_MESSAGE,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of taar93@googlemail.com designates 209.85.218.10 as permitted sender) Received: from [209.85.218.10] (HELO mail-bw0-f10.google.com) (209.85.218.10) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 04 Jan 2009 09:26:21 +0000 Received: by bwz3 with SMTP id 3so19958953bwz.11 for ; Sun, 04 Jan 2009 01:26:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to :subject:in-reply-to:mime-version:content-type:references; bh=rhv4XAVgDDbxaJFMirEN/xNNme9h4J2u2KiFKlfWHo4=; b=OHzumg7XJqL2ngm3fjHAU3pY77lkZ+fh2VfkY6PLCqweHq71XWsZtKG7cXo5e3BU2Y 2Vdbawkny3DFsCU+Ou+r6uotEcUuGoBGh3FpDGp6UvFWIzwvryE0qwnGVBw0xPows1ml u2+ux+SX2hf7qyGq5dhgoIGYXTg06asrHVJik= DomainKey-Signature: a=rsa-sha1; c=nofws; d=googlemail.com; s=gamma; h=message-id:date:from:to:subject:in-reply-to:mime-version :content-type:references; b=CA7ojZD24tAIV1NP3rxk2MQvBZ1fuB8/gLqgJfSxu8P3ryka6aqX46ZvsJ3id31LsM 1uMZG+HALgOrr9B3r3wTe/1Dk5Bds6/3/z2DC5sJ87/LTVUlMCJRRWB4YH8bqOHKiRFt LiSL2eHcTh9vCLboy4eiKEZPdKIgJBWPFUiWc= Received: by 10.223.113.194 with SMTP id b2mr1664967faq.81.1231061160947; Sun, 04 Jan 2009 01:26:00 -0800 (PST) Received: by 10.223.109.194 with HTTP; Sun, 4 Jan 2009 01:26:00 -0800 (PST) Message-ID: <6347384b0901040126m45e71c7fqf65acd2534f82d0e@mail.gmail.com> Date: Sun, 4 Jan 2009 10:26:00 +0100 From: Otho To: "Tapestry users" Subject: Re: spring context troubles In-Reply-To: <1313421D9F604EA6989C450EB64D1B0A@DrJLaptop> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_201039_24094879.1231061160924" References: <49595B9C.3040008@citizensportsinc.com> <4959695D.6000007@alum.mit.edu> <495D508F.4010205@alum.mit.edu> <495E61D9.10201@alum.mit.edu> <6347384b0901030759h642bfaedg4aef889f4718119e@mail.gmail.com> <1313421D9F604EA6989C450EB64D1B0A@DrJLaptop> X-Virus-Checked: Checked by ClamAV on apache.org ------=_Part_201039_24094879.1231061160924 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline As I said it is a "nice to have" feature. But I would reckon that in overwhelming number of cases you would inject Spring beans into Tapestry and not Tapestry services into beans. So even if you would have to maintain duplicate config for a small number of beans/services you are still better off than being forced to use an older version of a Tapestry library or require the Tapestry team to maintain 2 different versions. If you use Tapestry and Spring together, it is probably the easiest way to not define any Tapestry services which you need in a Spring config but define them as spring beans from the ground on. Injection of beans into Tapestry was seamless, so there is not really a NEED for the other way round IMO.You can write your commandline app with services as beans as usual and use everything in Tapestry by @Inject. For me that is/was one of the greatest points in Tapestry: Not being forced to use the Tapestry IOC except in cases where I really want to. Summing up to 6cts. now :) 2009/1/3 Jonathan Barker > > One use of injecting Tapestry services into Spring beans would be to take > advantage of Spring's transaction management. Or convenience features for > setting up a Quartz scheduler. Or making Tapestry services available via > JMS > or SOAP or whatever. Spring does have a rich feature set. > > Some services I write need to work within a T5 app, and also from > command-line support utilities. I tend to use just Spring for those > situations, but what if I want to include an optional (autowired) reference > to a service only available in the web application? I wind up duplicating > service configurations. > > There have been a few cases where it would have been really handy to have > it > NOT MATTER where I set up the service. > > I'm hoping there is some perfect solution that comes to Howard in a moment > of inspiration. If not, supporting two libraries or at least configuration > modes would seem to be necessary. > > Another 2 cents. > > Jonathan > > > -----Original Message----- > > From: Otho [mailto:taar93@googlemail.com] > > Sent: Saturday, January 03, 2009 10:59 > > To: Tapestry users > > Subject: Re: spring context troubles > > > > Hmm, the question is, how important it is to inject Tapestry IOC services > > into Spring beans compared to just being able to use the Spring beans as > > usual. > > > > I would think the latter option is much less effort overall. If I want to > > inject something into a spring bean I have to define it as a bean and > wire > > it up as usual. And I can use it in Tapestry just like a service. I can't > > really think of a scenario where it would really be needed to @Inject > > something into a spring bean. Sure it would be nice to have, but if I > have > > to mix different versions of Tapestry libraries for that it is probably > > not > > worth it. > > > > Just my 2cts > > > > I guess it is mainly for the Web Flow integration, but if the price is, > > that > > > > > > 2009/1/2 Howard Lewis Ship > > > > > Seems like I'm faced with two evils: breaking compatibility on the one > > > hand, maintaining two different sets of Spring integration on the > > > other. > > > > > > On Fri, Jan 2, 2009 at 10:50 AM, Fernando Padilla > > > wrote: > > > > That's alright to keep them separate, but I'm just worried that the > > > 5.0.18 > > > > will stop working at some point.. > > > > > > > > That is why I proposed that you should really have two different > > > pacakges.. > > > > one for each direction of integration, and people can explicitly > > choose > > > > which one to use. It just seems kind of brittle saying never to > > upgrade > > > > your spring package, that strategy will fail at some point, and could > > > just > > > > confuse people in the interim... > > > > > > > > Howard Lewis Ship wrote: > > > >> > > > >> Actually, I'm liking the idea that compatibility on this comes from > > > >> continuing to use the old version of tapestry-spring. I haven't > found > > > >> a way to do both: allow injection of Tapestry services into Spring > > > >> beans and expose Spring beans as Tapestry services. The lifecycles > of > > > >> the two containers do not mesh easily. > > > >> > > > >> On Thu, Jan 1, 2009 at 3:23 PM, Fernando Padilla > > > > >> wrote: > > > >>> > > > >>> nice work around. but I want to make sure, this will be a > temporary > > > work > > > >>> around until you get the latest spring module working as you > desire, > > > with > > > >>> two-way integration?? > > > >>> > > > >>> Howard Lewis Ship wrote: > > > >>>> > > > >>>> I think the best option for you is to use Tapestry 5.1, but revert > > > >>>> tapestry-spring to 5.0.18. This allows you to benefit from the > > > >>>> improvements to tapestry-core without having any compatibility > > > >>>> problems with the changes to tapestry-spring. I'm adding > > documentation > > > >>>> to the web site to explain this. > > > >>>> > > > >>>> On Mon, Dec 29, 2008 at 4:20 PM, Fernando Padilla > > > > > >>>> wrote: > > > >>>>> > > > >>>>> I'm sorry that I'm hammering on this code, while it's still > > probably > > > a > > > >>>>> work > > > >>>>> in progress.. (always available through im) > > > >>>>> > > > >>>>> but I commented out the spring ContextLoaderListener, moved the > > > filter > > > >>>>> up > > > >>>>> to > > > >>>>> be first, and this seems to initialize properly at least for > Jetty > > > >>>>> (within > > > >>>>> eclipse). The next issue, it looks like it did not register the > > > spring > > > >>>>> beans in the TapestryIoC.. so now I'm getting exceptions saying > > that > > > it > > > >>>>> can't find particular beans: > > > >>>>> > > > >>>>> > > > >>>>> .... > > > >>>>> Caused by: java.lang.RuntimeException: Service id > > > >>>>> 'common-conf-properties' > > > >>>>> is not defined by any module. Defined services: > > > >>>>> ActionRenderResponseGenerator, AjaxComponentEventRequestHandler, > > > >>>>> AjaxComponentEventResultProcessor, AjaxPartialResponseRenderer, > > > Alias, > > > >>>>> AliasOverrides, AppSubscriptionHandler, ApplicationContext, > > > >>>>> ApplicationDefaults, ApplicationGlobals, ApplicationInitializer, > > > >>>>> ApplicationStateManager, > > ApplicationStatePersistenceStrategySource, > > > >>>>> AspectDecorator, AssetBindingFactory, AssetObjectProvider, > > > AssetSource, > > > >>>>> BaseURLSource, BeanBlockOverrideSource, BeanBlockSource, > > > >>>>> BeanModelSource, > > > >>>>> BindingSource, ChainBuilder, ClassNameLocator, > > > >>>>> ClasspathAssetAliasManager, > > > >>>>> ClasspathAssetFactory, ClasspathURLConverter, > > > >>>>> ClientPersistentFieldStorage, > > > >>>>> ClientPersistentFieldStrategy, ComponentClassCache, > > > >>>>> ComponentClassFactory, > > > >>>>> ComponentClassResolver, ComponentClassTransformWorker, > > > >>>>> ComponentClassTransformer, ComponentClassesInvalidationEventHub, > > > >>>>> ComponentDefaultProvider, ComponentEventRequestHandler, > > > >>>>> ComponentEventResultProcessor, ComponentInstanceResultProcessor, > > > >>>>> ComponentInstantiatorSource, ComponentInvocationMap, > > > >>>>> ComponentMessagesInvalidationEventHub, ComponentMessagesSource, > > > >>>>> ComponentPageElementResourcesSource, ComponentSource, > > > >>>>> ComponentTemplateSource, ComponentTemplatesInvalidationEventHub, > > > >>>>> Context, > > > >>>>> ContextAssetFactory, ContextPathEncoder, ContextValueEncoder, > > > >>>>> CookieSink, > > > >>>>> CookieSource, Cookies, CtClassSource, DataTypeAnalyzer, > > > >>>>> DefaultDataTypeAnalyzer, DefaultFileItemFactory, > > > >>>>> DefaultImplementationBuilder, EndOfRequestListenerHub, > > Environment, > > > >>>>> EnvironmentalShadowBuilder, ExceptionAnalyzer, ExceptionTracker, > > > >>>>> FacebookAuthFilterImpl, FactoryDefaults, FbForceModeFilter, > > > >>>>> FieldTranslatorSource, FieldValidationSupport, > > > >>>>> FieldValidatorDefaultSource, > > > >>>>> FieldValidatorSource, FormSupport, HiddenFieldLocationRules, > > > >>>>> HttpServletRequest, HttpServletRequestHandler, > IgnoredPathsFilter, > > > >>>>> InjectionProvider, InternalRequestGlobals, LinkCreationHub, > > > >>>>> LinkFactory, > > > >>>>> LocalizationSetter, LocationRenderer, LoggingDecorator, > > > MarkupRenderer, > > > >>>>> MarkupWriterFactory, MasterDispatcher, MasterObjectProvider, > > > >>>>> MessageBindingFactory, MetaDataLocator, MultipartDecoder, > > > >>>>> NullFieldStrategyBindingFactory, NullFieldStrategySource, > > > >>>>> ObjectRenderer, > > > >>>>> OsForceTypeFilter, PageActivationContextCollector, > > > >>>>> PageContentTypeAnalyzer, > > > >>>>> PageDocumentGenerator, PageElementFactory, PageLoader, > > > >>>>> PageMarkupRenderer, > > > >>>>> PagePool, PageRenderQueue, PageRenderRequestHandler, > > > >>>>> PageResponseRenderer, > > > >>>>> PageTemplateLocator, PartialMarkupRenderer, > > PersistentFieldManager, > > > >>>>> PersistentLocale, PipelineBuilder, PropBindingFactory, > > > PropertyAccess, > > > >>>>> PropertyConduitSource, PropertyShadowBuilder, RegistryStartup, > > > >>>>> RenderSupport, Request, RequestExceptionHandler, RequestGlobals, > > > >>>>> RequestHandler, RequestLogFilter, RequestPageCache, > > > >>>>> RequestPathOptimizer, > > > >>>>> RequestSecurityManager, ResourceCache, ResourceDigestGenerator, > > > >>>>> ResourceStreamer, Response, ResponseRenderer, > > ServiceLifecycleSource, > > > >>>>> ServletApplicationInitializer, > > > >>>>> SessionApplicationStatePersistenceStrategy, > > > >>>>> StrategyBuilder, SymbolSource, TemplateParser, ThreadLocale, > > > >>>>> TranslateBindingFactory, TranslatorSource, TypeCoercer, > > URLEncoder, > > > >>>>> UpdateListenerHub, ValidateBindingFactory, > > > >>>>> ValidationConstraintGenerator, > > > >>>>> ValidationMessagesSource, ValueEncoderSource. > > > >>>>> at > > > >>>>> > > > >>>>> > > > >>>>> > > > > > > org.apache.tapestry5.ioc.internal.RegistryImpl.locateModuleForService(Regi > > stryImpl.java:321) > > > >>>>> at > > > >>>>> > > > >>>>> > > > >>>>> > > > > > > org.apache.tapestry5.ioc.internal.RegistryImpl.getService(RegistryImpl.jav > > a:288) > > > >>>>> at > > > >>>>> > > > >>>>> > > > >>>>> > > > > > > org.apache.tapestry5.ioc.internal.ObjectLocatorImpl.getService(ObjectLocat > > orImpl.java:39) > > > >>>>> at > > > >>>>> > > > >>>>> > > > >>>>> > > > > > > org.apache.tapestry5.internal.services.ServiceAnnotationObjectProvider.pro > > vide(ServiceAnnotationObjectProvider.java:35) > > > >>>>> at > > > >>>>> > > > >>>>> > > > >>>>> > > > > > > org.apache.tapestry5.ioc.internal.services.MasterObjectProviderImpl$1.invo > > ke(MasterObjectProviderImpl.java:50) > > > >>>>> at > > > >>>>> > > > >>>>> > > > >>>>> > > > > > > org.apache.tapestry5.ioc.internal.InvokableToRunnable.run(InvokableToRunna > > ble.java:36) > > > >>>>> at > > > >>>>> > > > >>>>> > > > >>>>> > > > > > > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTracke > > rImpl.java:52) > > > >>>>> > > > >>>>> > > > >>>>> > > > >>>>> > > > >>>>> > > > >>>>> > > > >>>>> Howard Lewis Ship wrote: > > > >>>>>> > > > >>>>>> We need to figure out the order that the filters are > initialized, > > so > > > >>>>>> that the Tapestry filter can be initialized first. I think just > > > >>>>>> listing it first in the web.xml may do the trick. > > > >>>>>> > > > >>>>>> On Mon, Dec 29, 2008 at 4:00 PM, Fernando Padilla < > > > fern@alum.mit.edu> > > > >>>>>> wrote: > > > >>>>>>> > > > >>>>>>> I just tried it, and it won't work like that :( > > > >>>>>>> > > > >>>>>>> Like I said, I use spring outside of tapestry. So I need a > > valid > > > >>>>>>> working > > > >>>>>>> spring context before the first request ever gets to tapestry > > > >>>>>>> filter.. > > > >>>>>>> > > > >>>>>>> Here is my exception when I comment out the normal > > > >>>>>>> ContextLoaderListener.. > > > >>>>>>> > > > >>>>>>> > > > >>>>>>> > > > >>>>>>> [Console output redirected to > > > >>>>>>> > > > >>>>>>> > > > >>>>>>> > > > >>>>>>> > > > file:/local/fern/work/social-app- > > repository/trunk/fanwars/site/../../log.txt] > > > >>>>>>> 2008-12-29 15:58:26,140 [main] ERROR org.mortbay.log - failed > > > OpenDS > > > >>>>>>> java.lang.NullPointerException > > > >>>>>>> at > > > >>>>>>> > > com.protrade.common.spring.OpenDSFilter.init(OpenDSFilter.java:28) > > > >>>>>>> at > > > >>>>>>> > > com.protrade.common.web.ProtradeFilter.init(ProtradeFilter.java:37) > > > >>>>>>> at > > > >>>>>>> > > > org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97) > > > >>>>>>> at > > > >>>>>>> > > > >>>>>>> > > > >>>>>>> > > > > org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40) > > > >>>>>>> at > > > >>>>>>> > > > >>>>>>> > > > >>>>>>> > > > >>>>>>> > > > > > > org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:58 > > 9) > > > >>>>>>> at > > > >>>>>>> > org.mortbay.jetty.servlet.Context.startContext(Context.java:139) > > > >>>>>>> at > > > >>>>>>> > > > >>>>>>> > > > >>>>>>> > > > >>>>>>> > > > > > > org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:121 > > 6) > > > >>>>>>> at > > > >>>>>>> > > > >>>>>>> > > > >>>>>>> > > > > > org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:509) > > > >>>>>>> at > > > >>>>>>> > > > >>>>>>> > > > org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:447) > > > >>>>>>> at > > > >>>>>>> > > > >>>>>>> > > > >>>>>>> > > > > org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40) > > > >>>>>>> at > > > >>>>>>> > > > >>>>>>> > > > >>>>>>> > > > > > org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:117) > > > >>>>>>> at org.mortbay.jetty.Server.doStart(Server.java:222) > > > >>>>>>> at > > > >>>>>>> > > > >>>>>>> > > > >>>>>>> > > > > org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40) > > > >>>>>>> at runjettyrun.Bootstrap.main(Bootstrap.java:76) > > > >>>>>>> 2008-12-29 15:58:26,142 [main] ERROR org.mortbay.log - Failed > > > startup > > > >>>>>>> of > > > >>>>>>> context > > > >>>>>>> > > org.mortbay.jetty.webapp.WebAppContext@1961581{/,src/main/webapp} > > > >>>>>>> java.lang.NullPointerException > > > >>>>>>> at > > > >>>>>>> > > com.protrade.common.spring.OpenDSFilter.init(OpenDSFilter.java:28) > > > >>>>>>> at > > > >>>>>>> > > com.protrade.common.web.ProtradeFilter.init(ProtradeFilter.java:37) > > > >>>>>>> at > > > >>>>>>> > > > org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97) > > > >>>>>>> at > > > >>>>>>> > > > >>>>>>> > > > >>>>>>> > > > > org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40) > > > >>>>>>> at > > > >>>>>>> > > > >>>>>>> > > > >>>>>>> > > > >>>>>>> > > > > > > org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:58 > > 9) > > > >>>>>>> at > > > >>>>>>> > org.mortbay.jetty.servlet.Context.startContext(Context.java:139) > > > >>>>>>> at > > > >>>>>>> > > > >>>>>>> > > > >>>>>>> > > > >>>>>>> > > > > > > org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:121 > > 6) > > > >>>>>>> at > > > >>>>>>> > > > >>>>>>> > > > >>>>>>> > > > > > org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:509) > > > >>>>>>> at > > > >>>>>>> > > > >>>>>>> > > > org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:447) > > > >>>>>>> at > > > >>>>>>> > > > >>>>>>> > > > >>>>>>> > > > > org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40) > > > >>>>>>> at > > > >>>>>>> > > > >>>>>>> > > > >>>>>>> > > > > > org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:117) > > > >>>>>>> at org.mortbay.jetty.Server.doStart(Server.java:222) > > > >>>>>>> at > > > >>>>>>> > > > >>>>>>> > > > >>>>>>> > > > > org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40) > > > >>>>>>> at runjettyrun.Bootstrap.main(Bootstrap.java:76) > > > >>>>>>> > > > >>>>>>> > > > >>>>>>> Howard Lewis Ship wrote: > > > >>>>>>>> > > > >>>>>>>> This is a change in behavior from Tapestry 5.0; it was > > necessary > > > in > > > >>>>>>>> order to coordinate Spring and Tapestry IoC. It is necessary > > to > > > let > > > >>>>>>>> Tapestry initialize Spring and use Tapestry-specific > subclasses > > of > > > >>>>>>>> XmlWebApplicationContext and DefaultListableBeanFactory, to > > hook > > > in > > > >>>>>>>> the logic that allows Spring beans to use @Inject and > > > >>>>>>>> @InjectService. > > > >>>>>>>> > > > >>>>>>>> You should be fine if you just remove the > ContextLoaderListener > > > from > > > >>>>>>>> your web.xml. > > > >>>>>>>> > > > >>>>>>>> On Mon, Dec 29, 2008 at 3:22 PM, Fernando Padilla > > > >>>>>>>> wrote: > > > >>>>>>>>> > > > >>>>>>>>> I just tried to run with the latest tapestry-trunk, and I get > > > this > > > >>>>>>>>> really > > > >>>>>>>>> nasty exception :( :( > > > >>>>>>>>> > > > >>>>>>>>> I initialize my own spring context with a > > ContextLoaderListener, > > > >>>>>>>>> because > > > >>>>>>>>> I > > > >>>>>>>>> need spring outside of tapestry. Why is tapestry attempting > > to > > > >>>>>>>>> create > > > >>>>>>>>> a > > > >>>>>>>>> context? > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> 2008-12-29 15:18:27,363 [main] ERROR > > > >>>>>>>>> org.apache.tapestry5.ioc.Registry > > > >>>>>>>>> - > > > >>>>>>>>> Cannot initialize context because there is already a root > > > >>>>>>>>> application > > > >>>>>>>>> context present - check whether you have multiple > > ContextLoader* > > > >>>>>>>>> definitions > > > >>>>>>>>> in your web.xml! > > > >>>>>>>>> 2008-12-29 15:18:27,363 [main] ERROR > > > >>>>>>>>> org.apache.tapestry5.ioc.Registry > > > >>>>>>>>> - > > > >>>>>>>>> Operations trace: > > > >>>>>>>>> 2008-12-29 15:18:27,364 [main] ERROR > > > >>>>>>>>> org.apache.tapestry5.ioc.Registry > > > >>>>>>>>> - > > > >>>>>>>>> [ > > > >>>>>>>>> 1] Realizing service ApplicationContext > > > >>>>>>>>> 2008-12-29 15:18:27,364 [main] ERROR > > > >>>>>>>>> org.apache.tapestry5.ioc.Registry > > > >>>>>>>>> - > > > >>>>>>>>> [ > > > >>>>>>>>> 2] Invoking ObjectCreator for Spring ApplicationContext > > > >>>>>>>>> 2008-12-29 15:18:27,364 [main] ERROR > > > >>>>>>>>> org.apache.tapestry5.ioc.Registry > > > >>>>>>>>> - > > > >>>>>>>>> [ > > > >>>>>>>>> 3] Creating Spring ApplicationContext via ContextLoader > > > >>>>>>>>> 2008-12-29 15:18:27,365 [main] ERROR > Spring.ApplicationContext > > - > > > >>>>>>>>> Construction of service ApplicationContext failed: Cannot > > > >>>>>>>>> initialize > > > >>>>>>>>> context > > > >>>>>>>>> because there is already a root application context present - > > > check > > > >>>>>>>>> whether > > > >>>>>>>>> you have multiple ContextLoader* definitions in your web.xml! > > > >>>>>>>>> org.apache.tapestry5.ioc.internal.OperationException: Cannot > > > >>>>>>>>> initialize > > > >>>>>>>>> context because there is already a root application context > > > present > > > >>>>>>>>> - > > > >>>>>>>>> check > > > >>>>>>>>> whether you have multiple ContextLoader* definitions in your > > > >>>>>>>>> web.xml! > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTracke > > rImpl.java:74) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTra > > ckerImpl.java:96) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThre > > adOperationTracker.java:68) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > > org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:87 > > 1) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > > org.apache.tapestry5.internal.spring.SpringModuleDef$1$2.createObject(Spri > > ngModuleDef.java:76) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > > org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke( > > OperationTrackingObjectCreator.java:45) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > > org.apache.tapestry5.ioc.internal.InvokableToRunnable.run(InvokableToRunna > > ble.java:36) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTracke > > rImpl.java:52) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTra > > ckerImpl.java:96) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThre > > adOperationTracker.java:68) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > > org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:87 > > 1) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > > org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObj > > ect(OperationTrackingObjectCreator.java:49) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > > org.apache.tapestry5.ioc.internal.SingletonServiceLifecycle.createService( > > SingletonServiceLifecycle.java:29) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > > org.apache.tapestry5.ioc.internal.LifecycleWrappedServiceCreator.createObj > > ect(LifecycleWrappedServiceCreator.java:52) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > > org.apache.tapestry5.ioc.internal.InterceptorStackBuilder.createObject(Int > > erceptorStackBuilder.java:56) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > > org.apache.tapestry5.ioc.internal.RecursiveServiceCreationCheckWrapper.cre > > ateObject(RecursiveServiceCreationCheckWrapper.java:60) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > > org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke( > > OperationTrackingObjectCreator.java:45) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > > org.apache.tapestry5.ioc.internal.InvokableToRunnable.run(InvokableToRunna > > ble.java:36) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTracke > > rImpl.java:52) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTra > > ckerImpl.java:96) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThre > > adOperationTracker.java:68) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > > org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:87 > > 1) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > > org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObj > > ect(OperationTrackingObjectCreator.java:49) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > > org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.createO > > bject(JustInTimeObjectCreator.java:65) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > > $ConfigurableWebApplicationContext_11e850a8929.delegate($ConfigurableWebAp > > plicationContext_11e850a8929.java) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > > $ConfigurableWebApplicationContext_11e850a8929.getBeanDefinitionCount($Con > > figurableWebApplicationContext_11e850a8929.java) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > > org.apache.tapestry5.internal.spring.SpringModule$1.initializeApplication( > > SpringModule.java:45) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > > $ApplicationInitializer_11e850a892a.initializeApplication($ApplicationInit > > ializer_11e850a892a.java) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > > org.apache.tapestry5.services.TapestryModule$37.initializeApplication(Tape > > stryModule.java:1912) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > > $ApplicationInitializer_11e850a892a.initializeApplication($ApplicationInit > > ializer_11e850a892a.java) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > > $ApplicationInitializer_11e850a8925.initializeApplication($ApplicationInit > > ializer_11e850a8925.java) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > > org.apache.tapestry5.services.TapestryModule$18.initializeApplication(Tape > > stryModule.java:1043) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > > $ServletApplicationInitializer_11e850a890f.initializeApplication($ServletA > > pplicationInitializer_11e850a890f.java) > > > >>>>>>>>> at > > > >>>>>>>>> > > org.apache.tapestry5.TapestryFilter.init(TapestryFilter.java:91) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > > org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:58 > > 9) > > > >>>>>>>>> at > > > >>>>>>>>> > > org.mortbay.jetty.servlet.Context.startContext(Context.java:139) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > > org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:121 > > 6) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:509) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:447) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:117) > > > >>>>>>>>> at org.mortbay.jetty.Server.doStart(Server.java:222) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40) > > > >>>>>>>>> at runjettyrun.Bootstrap.main(Bootstrap.java:76) > > > >>>>>>>>> Caused by: java.lang.IllegalStateException: Cannot initialize > > > >>>>>>>>> context > > > >>>>>>>>> because there is already a root application context present - > > > check > > > >>>>>>>>> whether > > > >>>>>>>>> you have multiple ContextLoader* definitions in your web.xml! > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > > org.springframework.web.context.ContextLoader.initWebApplicationContext(Co > > ntextLoader.java:172) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > > org.apache.tapestry5.internal.spring.SpringModuleDef$1$2$1.invoke(SpringMo > > duleDef.java:86) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > > org.apache.tapestry5.ioc.internal.InvokableToRunnable.run(InvokableToRunna > > ble.java:36) > > > >>>>>>>>> at > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > > > > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTracke > > rImpl.java:52) > > > >>>>>>>>> ... 45 more > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > --------------------------------------------------------------------- > > > >>>>>>>>> To unsubscribe, e-mail: > users-unsubscribe@tapestry.apache.org > > > >>>>>>>>> For additional commands, e-mail: users- > > help@tapestry.apache.org > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>> > > > --------------------------------------------------------------------- > > > >>>>>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org > > > >>>>>>> For additional commands, e-mail: > users-help@tapestry.apache.org > > > >>>>>>> > > > >>>>>>> > > > >>>>>> > > > >>>>> > ------------------------------------------------------------------ > > --- > > > >>>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org > > > >>>>> For additional commands, e-mail: users-help@tapestry.apache.org > > > >>>>> > > > >>>>> > > > >>>> > > > >>>> > > > >>> > -------------------------------------------------------------------- > > - > > > >>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org > > > >>> For additional commands, e-mail: users-help@tapestry.apache.org > > > >>> > > > >>> > > > >> > > > >> > > > >> > > > > > > > > --------------------------------------------------------------------- > > > > To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org > > > > For additional commands, e-mail: users-help@tapestry.apache.org > > > > > > > > > > > > > > > > > > > > -- > > > Howard M. Lewis Ship > > > > > > Creator Apache Tapestry and Apache HiveMind > > > > > > --------------------------------------------------------------------- > > > To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org > > > For additional commands, e-mail: users-help@tapestry.apache.org > > > > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org > For additional commands, e-mail: users-help@tapestry.apache.org > > ------=_Part_201039_24094879.1231061160924--