> -----Original Message----- > From: Olivier Lamy [mailto:ol...@apache.org] > Sent: Tuesday, August 28, 2012 2:17 PM > To: Tomcat Users List > Subject: Re: tomcat7-maven-plugin doesn't understand Maven filtering of > context files? > > Hi, > Inline > > 2012/8/28 Knute Snortum <ksnor...@catalystitservices.com>: > > If this is the wrong mailing list for tomcat7-maven-plugin, could > someone direct me to the right place? > > > > I'm developing a Vaadin web app in Eclipse Juno on Windows 7 and I'm > using the tomcat7-maven-plugin 2.0-beta-1 to help in development by > running the app in Tomcat inside of the IDE -- or I'm trying. The error > I'm getting is: > > > > org.springframework.beans.factory.BeanDefinitionStoreException: > > Invalid bean definition with name 'dataSource' defined in > > ServletContext resource [/WEB-INF/applicationContext.xml]: Could not > > resolve placeholder 'db.driverClassName' in string value > > [${db.driverClassName}] > > > > "applicationContext.xml" is my Spring context file. I have > placeholders in it to point to the correct database based on Maven > profiles and filtering. So a piece of applicationContext.xml looks like > this: > > > > <bean id="dataSource" > class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> > > <property name="driverClassName" > value="${db.driverClassName}" /> > > <property name="url" value="${db.url}" /> > > <property name="username" > value="${db.username}" /> > > <property name="password" > value="${db.password}" /> > > <property name="maxActive" value="10" /> > > <property name="maxIdle" value="1" /> > > </bean> > > > > As you can see, Tomcat (or Spring?) is finding the dataSource bean > that does not have the placeholders replaced yet. > > > > The odd thing is that in the war file and the directory under target > that the war file is created from, all the place holders have been > correctly substituted. I can see them in an editor. The context file > with the placeholders is the one still sitting in my development folder. > > > > So my question is, why isn't the Tomcat plugin seeing the context file > in the war file or folder? And if it looks in the development folder > for the file, can Maven filtering work with the plugin?. > > > as you are using gwt maven plugin, I'm not sure that works. > Something you can do is using sys properties in tomcat7/6-maven-plugin > (spring placeholder resolves against sys props too). > Add you sys props as it: > http://tomcat.apache.org/maven-plugin-2.0-SNAPSHOT/tomcat6-maven- > plugin/examples/add-system-properties.html
Well, I'm using Maven filtering, and the reason for that is my client requires that I use Maven profiling to set the development and the production environments. So I'd have to a Maven Tomcat plugin in each profile -- which maybe I'll do. I need the GWT plugin because this is a Vaadin project and Vaadin uses GWT. > > Below is part of the messages created by Maven et al in my IDE > console. I've left out the clean and testing messages and most of the > stacktrace, which I think is from Spring anyway: > > > > [INFO] > > [INFO] --- gwt-maven-plugin:2.4.0:compile (default) @ dpt --- [INFO] > > auto discovered modules > > [com.catalystitservices.nike.dpt.widgetset.DptWidgetset] > > [INFO] com.catalystitservices.nike.dpt.widgetset.DptWidgetset is up to > > date. GWT compilation skipped [INFO] [INFO] --- > > maven-war-plugin:2.2:war (default-war) @ dpt --- [INFO] Packaging > > webapp [INFO] Assembling webapp [dpt] in [C:\Projects\DPT\target\dpt] > > [INFO] Processing war project [INFO] Copying webapp webResources > > [C:\Projects\DPT\src/main/webapp/] to [C:\Projects\DPT\target\dpt] > > [INFO] Copying webapp resources [C:\Projects\DPT\src\main\webapp] > > [INFO] Webapp assembled in [1442 msecs] [INFO] Building war: > > C:\Projects\DPT\target\dpt.war [INFO] [INFO] --- > > tomcat7-maven-plugin:2.0-beta-1:exec-war-only (tomcat-run) @ dpt --- > > [INFO] [INFO] --- maven-install-plugin:2.3.1:install (default-install) > > @ dpt --- [INFO] Installing C:\Projects\DPT\target\dpt.war to > > C:\Users\ksnortum\.m2\repository\com\nike\dpt\dpt\1.1-SNAPSHOT\dpt-1.1 > > -SNAPSHOT.war [INFO] Installing C:\Projects\DPT\pom.xml to > > C:\Users\ksnortum\.m2\repository\com\nike\dpt\dpt\1.1-SNAPSHOT\dpt-1.1 > > -SNAPSHOT.pom [INFO] Installing > > C:\Projects\DPT\target\dpt-1.1-SNAPSHOT-war-exec.jar to > > C:\Users\ksnortum\.m2\repository\com\nike\dpt\dpt\1.1-SNAPSHOT\dpt-1.1 > > -SNAPSHOT-exec-war.jar > > [INFO] > > [INFO] >>> tomcat-maven-plugin:1.1:run (default-cli) @ dpt >>> > > you are using an old version here ? Don't you have duplicate entries in > your pom ? There's no duplicate. The one I have looks like this: <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>${tomcat7MavenPlugin}</version> ... And my properties look like: <tomcat7MavenPlugin>2.0-beta-1</tomcat7MavenPlugin> > > > [INFO] > > [INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ > > dpt --- [debug] execute contextualize [INFO] Using 'UTF-8' encoding to > > copy filtered resources. > > [INFO] Copying 3 resources > > [INFO] Copying 3 resources > > [INFO] > > [INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ dpt > > --- [INFO] Nothing to compile - all classes are up to date [INFO] > > [INFO] <<< tomcat-maven-plugin:1.1:run (default-cli) @ dpt <<< [INFO] > > [INFO] --- tomcat-maven-plugin:1.1:run (default-cli) @ dpt --- [INFO] > > Running war on http://localhost:8080/dpt [INFO] Creating Tomcat server > > configuration at C:\Projects\DPT\target\tomcat Aug 28, 2012 10:13:59 > > AM org.apache.catalina.startup.Embedded start > > INFO: Starting tomcat server > > Aug 28, 2012 10:14:00 AM org.apache.catalina.core.StandardEngine start > > INFO: Starting Servlet Engine: Apache Tomcat/6.0.29 Aug 28, 2012 > > 10:14:00 AM org.apache.catalina.core.ApplicationContext log > > INFO: Set web app root system property: 'webapp.root' = > > [C:\Projects\DPT\src\main\webapp\] > > Aug 28, 2012 10:14:00 AM org.apache.catalina.core.ApplicationContext > > log > > INFO: Initializing log4j from [classpath:log4j.properties] Aug 28, > > 2012 10:14:00 AM org.apache.catalina.core.ApplicationContext log > > INFO: Initializing Spring root WebApplicationContext > > 28.08.2012 10:14:00 INFO (ContextLoader.java:272) - Root > > WebApplicationContext: initialization started > > 28.08.2012 10:14:00 INFO (AbstractApplicationContext.java:500) - > > Refreshing Root WebApplicationContext: startup date [Tue Aug 28 > > 10:14:00 PDT 2012]; root of context hierarchy > > 28.08.2012 10:14:00 INFO (XmlBeanDefinitionReader.java:315) - Loading > > XML bean definitions from ServletContext resource > > [/WEB-INF/applicationContext.xml] > > 28.08.2012 10:14:01 INFO (XmlBeanDefinitionReader.java:315) - Loading > > XML bean definitions from ServletContext resource > > [/WEB-INF/applicationContext-security.xml] > > 28.08.2012 10:14:01 INFO (SpringSecurityCoreVersion.java:33) - You > > are running with Spring Security Core 3.1.0.RELEASE > > 28.08.2012 10:14:01 INFO (SecurityNamespaceHandler.java:57) - Spring > > Security 'config' module version is 3.1.0.RELEASE > > 28.08.2012 10:14:01 INFO (HttpSecurityBeanDefinitionParser.java:229) > > - Checking sorted filter chain: [Root bean: class > > [org.springframework.security.web.context.SecurityContextPersistenceFi > > lter]; scope=; abstract=false; lazyInit=false; autowireMode=0; > > dependencyCheck=0; autowireCandidate=true; primary=false; > > factoryBeanName=null; factoryMethodName=null; initMethodName=null; > > destroyMethodName=null, order = 300, Root bean: class > > [org.springframework.security.web.authentication.logout.LogoutFilter]; > > scope=; abstract=false; lazyInit=false; autowireMode=0; > > dependencyCheck=0; autowireCandidate=true; primary=false; > > factoryBeanName=null; factoryMethodName=null; initMethodName=null; > > destroyMethodName=null, order = 400, > > <org.springframework.security.web.authentication.UsernamePasswordAuthe > > nticationFilter#0>, order = 800, Root bean: class > > [org.springframework.security.web.authentication.www.BasicAuthenticati > > onFilter]; scope=; abstract=false; lazyInit=false; autowireMode=0; > > dependencyCheck=0; autowireCandidate=true; primary=false; > > factoryBeanName=null; factoryMethodName=null; initMethodName=null; > > destroyMethodName=null, order = 1200, Root bean: class > > [org.springframework.security.web.savedrequest.RequestCacheAwareFilter > > ]; scope=; abstract=false; lazyInit=false; autowireMode=0; > > dependencyCheck=0; autowireCandidate=true; primary=false; > > factoryBeanName=null; factoryMethodName=null; initMethodName=null; > > destroyMethodName=null, order = 1300, Root bean: class > > [org.springframework.security.web.servletapi.SecurityContextHolderAwar > > eRequestFilter]; scope=; abstract=false; lazyInit=false; > > autowireMode=0; dependencyCheck=0; autowireCandidate=true; > > primary=false; factoryBeanName=null; factoryMethodName=null; > > initMethodName=null; destroyMethodName=null, order = 1400, Root bean: > > class > > [org.springframework.security.web.authentication.AnonymousAuthenticati > > onFilter]; scope=; abstract=false; lazyInit=false; autowireMode=0; > > dependencyCheck=0; autowireCandidate=true; primary=false; > > factoryBeanName=null; factoryMethodName=null; initMethodName=null; > > destroyMethodName=null, order = 1700, Root bean: class > > [org.springframework.security.web.session.SessionManagementFilter]; > > scope=; abstract=false; lazyInit=false; autowireMode=0; > > dependencyCheck=0; autowireCandidate=true; primary=false; > > factoryBeanName=null; factoryMethodName=null; initMethodName=null; > > destroyMethodName=null, order = 1800, Root bean: class > > [org.springframework.security.web.access.ExceptionTranslationFilter]; > > scope=; abstract=false; lazyInit=false; autowireMode=0; > > dependencyCheck=0; autowireCandidate=true; primary=false; > > factoryBeanName=null; factoryMethodName=null; initMethodName=null; > > destroyMethodName=null, order = 1900, > > <org.springframework.security.web.access.intercept.FilterSecurityInter > > ceptor#0>, order = 2000] > > 28.08.2012 10:14:01 INFO (PropertiesLoaderSupport.java:177) - Loading > > properties file from file > > [C:\Projects\DPT\target\classes\log4j.properties] > > 28.08.2012 10:14:01 INFO (DefaultSingletonBeanRegistry.java:433) - > > Destroying singletons in > > org.springframework.beans.factory.support.DefaultListableBeanFactory@3 > > 78c3efb: defining beans > > [org.springframework.context.support.PropertySourcesPlaceholderConfigu > > rer#0,<long list of beans removed>]; root of factory hierarchy > > 28.08.2012 10:14:01 ERROR (ContextLoader.java:307) - Context > > initialization failed > > org.springframework.beans.factory.BeanDefinitionStoreException: > > Invalid bean definition with name 'dataSource' defined in > > ServletContext resource [/WEB-INF/applicationContext.xml]: Could not > > resolve placeholder 'db.driverClassName' in string value > > [${db.driverClassName}] > > > > --- > > Knute Snortum > > Developer > > Catalyst IT Services > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > > For additional commands, e-mail: users-h...@tomcat.apache.org > > > > > > -- > Olivier Lamy > Talend: http://coders.talend.com > http://twitter.com/olamy | http://linkedin.com/in/olamy > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > For additional commands, e-mail: users-h...@tomcat.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org