velocity-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrew Mason <and...@assertis.co.uk>
Subject Re: VelocityServlet and Properties file
Date Sun, 16 Oct 2005 12:48:14 GMT
Sorry if i seem a bit dense but i'm still having alot of trouble getting this 
to work. 

in my loadConfiguration() i tried
{
   Properties p = super.loadConfiguration(config);
 
Velocity.setApplicationAttribute("javax.servlet.ServletContext",config.getServletContext());
         
p.setProperty(RuntimeConstants.RESOURCE_LOADER, "webapp");        
p.setProperty("webapp.resource.loader.class",WebappLoader.class.getName());


}
but then i would get the following errors

    [javac] Compiling 1 source file 
to /home/am/OnlineBizBuilder/obb/WEB-INF/classes
    
[javac] /home/am/OnlineBizBuilder/source/com/assertis/obb/LinkManager.java:52: 
cannot find symbol
    [javac] symbol  : variable RuntimeConstants
    [javac] location: class com.assertis.obb.LinkManager
    [javac]         p.setProperty(RuntimeConstants.RESOURCE_LOADER, "webapp");
    [javac]                              ^
    
[javac] /home/am/OnlineBizBuilder/source/com/assertis/obb/LinkManager.java:53: 
cannot find symbol
    [javac] symbol  : class WebappLoader
    [javac] location: class com.assertis.obb.LinkManager
    [javac]         
p.setProperty("webapp.resource.loader.class",WebappLoader.class.getName());
    [javac]                                                         ^
    [javac] 2 errors



This is my properties file which is located 
in /obb/WEB-INF/velocity.properties

resource.loader = class
class.resource.loader.class = 
org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader
runtime.log = velocity2.log
file.resource.loader.cache = false
file.resource.manager.logwhenfound = false

i would like to be able to set all of the velocity options from this file , 
and IF possible, allow my webapp to use it for its properties too, since i am 
loading it up for velocity anyway (which all of my servlets use).

Many thanks

Andrew M







On Tue October 11 2005 3:37 pm, Nathan Bubna wrote:
> On 10/11/05, Andrew Mason <andrew@assertis.co.uk> wrote:
> > Is this done in  handleRequest() ?
>
> no, no, no.  this should be handled only once during servlet init via
> the overridden loadConfiguration method that Jason suggested.  and
> though i didn't include it in my example, the first part of his
> suggestion should still be included:
>
>        //Configuration file to be read is specified as
>        //the init param 'org.apache.velocity.properties'
>        Properties p = super.loadConfiguration(config);
>
> > >        
> > > Velocity.setApplicationAttribute("javax.servlet.ServletContext",
> > > config.getServletContext());
> > >
> > >         // by default, load resources with webapp resource loader
> > >         p.setProperty(RuntimeConstants.RESOURCE_LOADER, "webapp");
> > >         p.setProperty("webapp.resource.loader.class",
> > > WebappLoader.class.getName());
> > >
> > >
> > > this will make the webapp root the default search path, but you can
> > > specify others (relative to the webapp root) using as many
> > > "webapp.resource.loader.path" properties as you like.
> > >
> > > > The only other thing you'll need is that you tell the servlet in your
> > > > web.xml where to find the default properties bundle:
> > > >
> > > >   <servlet>
> > > >     <servlet-name>getter</servlet-name>
> > > >    
> > > > <servlet-class>org.foo.bar.MyCustomVelocityServlet</servlet-class>
> > > > <init-param>
> > > >         <param-name>org.apache.velocity.properties</param-name>
> > > >         <param-value>/WEB-INF/velocity.properties</param-value>
> > > >     </init-param>
> > > >     <load-on-startup>2</load-on-startup>
> > > >   </servlet>
> >
> > Do i have to do this on a  / servlet basis ? or can i just use a context
> > param since its the same for all my servlets ?
>
> both VelocityServlet and VelocityViewServlet will first search the
> servlet config's init-params, then search the servlet context's
> init-params.  so the answers to your questions are no and yes,
> respectively.
>
> > > > And the only thing I need in my velocity.properties is:
> > > >
> > > > runtime.log.logsystem.class=org.foo.bar.VelocityLogger
> > > >
> > > > Since I have a custom logger.  The rest of the file loader stuff
> > > > except for the modfication interval you should just remove since I
> > > > think those are the defaults anyway, except for the path, which we're
> > > > setting with our loadConfiguration method.
> > > >
> > > > You might look at the implementation for the super loadConfiguration
> > > > method-- but it may require that velocity.properties actually end
> > > > with a ".properties" extension.  I doubt it, but if you do all this
> > > > and it still seems your file is being ignored, try that.
> > > >
> > > > --jason
> > > >
> > > > Andrew Mason wrote:
> > > > >Ok, I know VelocityServlet is depricated in favour of the
> > > > > VelocityViewServlet but i started my web-app before VelocityServlet
> > > > > became deprecated so to keep consistency (for now) i'm using it.
> > > > >
> > > > >Anyway my problem is that my servlet can't seem to find my template.
> > > > > I've tried putting it in / , /obb, /obb/WEB-INF but it doesn't seem
> > > > > like it wants to pick it up at all. Also i'm not sure that its
> > > > > picking up the velocity.properties.fileloader file.
> > > > >
> > > > >I got around this problem in the other servlets by overwriting the
> > > > >loadConfig() and making a new instance of Property. This was fine
> > > > > until i actually wanted to specify some of my own and it would be
> > > > > handy to have them all in one place.
> > > > >
> > > > >thanks in advance
> > > > >
> > > > >public class EditPage extends VelocityServlet{
> > > > >
> > > > >
> > > > >       public Template handleRequest(HttpServletRequest request,
> > > > >               HttpServletResponse response,Context context) {
> > > > >
> > > > >               // stuff in here
> > > > >               //Merge the Template now
> > > > >                       try{
> > > > >                               String templateName="edit.vm";
> > > > >                               template = getTemplate(templateName);
> > > > >                       }
> > > > >                       catch(ResourceNotFoundException rnfe){
> > > > >                               System.out.println(templateName);
> > > > >                               rnfe.printStackTrace();
> > > > >                       }
> > > > >                       catch(Exception e){
> > > > >                               e.printStackTrace();
> > > > >                       }
> > > > >               return template;
> > > > >
> > > > >       }
> > > > >}
> > > > >
> > > > >and my directory structure works like this (slightly different to
> > > > > normal as it allows me to use mod_jk to map www.domain.com to / )
> > > > >
> > > > >       -/myapp/
> > > > >                       /obb/
> > > > >                               WEB-INF/
> > > > >                                               classes/
> > > > >                                               lib/
> > > > >                                               -
> > > > > velocity.properties.fileloader - web.xml
> > > > >       - obb.war
> > > > >       - edit.vm
> > > > >       - index.vm
> > > > >
> > > > >
> > > > >velocity.properties.fileloader
> > > > >----------------
> > > > >
> > > > >resource.loader = file
> > > > >file.resource.loader.description = Velocity File Resource Loader
> > > > >file.resource.loader.class =
> > > > >org.apache.velocity.runtime.resource.loader.FileResourceLoader
> > > > >file.resource.loader.path = .
> > > > >file.resource.loader.cache = false
> > > > >file.resource.loader.modificationCheckInterval = 0
> > > > >
> > > > >--------------------------------------------------------------------
> > > > >- To unsubscribe, e-mail:
> > > > > velocity-user-unsubscribe@jakarta.apache.org For additional
> > > > > commands, e-mail: velocity-user-help@jakarta.apache.org
> > > >
> > > > ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: velocity-user-unsubscribe@jakarta.apache.org
> > > > For additional commands, e-mail:
> > > > velocity-user-help@jakarta.apache.org
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: velocity-user-unsubscribe@jakarta.apache.org
> > > For additional commands, e-mail: velocity-user-help@jakarta.apache.org
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: velocity-user-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail: velocity-user-help@jakarta.apache.org
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: velocity-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: velocity-user-help@jakarta.apache.org

---------------------------------------------------------------------
To unsubscribe, e-mail: velocity-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: velocity-user-help@jakarta.apache.org


Mime
View raw message