velocity-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Bradley Wagner <bradley.wag...@hannonhill.com>
Subject Re: Inconsistent and strange NPE when initializing Velocity
Date Wed, 06 Jun 2012 21:35:09 GMT
Ha, that's a good question. Yes, we're initializing Velocity LOTS of times.
Basically every time we use it to create these messages in our message
util. I'm guessing that's not recommended?

On Wed, Jun 6, 2012 at 1:53 PM, Will Glass-Husain <wglasshusain@gmail.com>wrote:

> Hi Bradley,
>
> Are you initializing Velocity multiple times?
>
> Though I haven't heard of this issue before, it sounds like a race
> condition, perhaps if the initialization is called twice at the same time.
>
> WILL
>
> On Wed, Jun 6, 2012 at 8:37 AM, Bradley Wagner <
> bradley.wagner@hannonhill.com> wrote:
>
> > Hi,
> >
> > I sent this message before I had subscribed to the list so I wasn't sure
> if
> > the original made it. My apologies if this is a duplicate.
> >
> > One of our clients running our software is *occasionally* running into
> the
> > stack trace at the bottom when Velocity is initialized. A restart tends
> to
> > fix this problem. But it pops back up after running the system for a
> while.
> >
> > They're running:
> >
> >   - Velocity 1.7
> >   - Tomcat 6.0.35
> >   - Using the 3.2 of the Apache Commons Collections library
> >   - Running Java 1.6.0_31 in Mac OS X 10.6.8
> >
> > Unfortunately we don't have the ability to debug this problem remotely,
> so
> > we can't see exactly what's going on, but having looked a bit at the
> > Extended Properties class, it doesn't seem like it should be possible to
> > get an NPE at that line, because of the containsKey() check a few lines
> > before.
> >
> > java.lang.NullPointerException
> > at
> >
> org.apache.commons.collections.ExtendedProperties.clearProperty(ExtendedProperties.java:797)
> > at
> >
> org.apache.commons.collections.ExtendedProperties.setProperty(ExtendedProperties.java:722)
> > at
> >
> org.apache.commons.collections.ExtendedProperties.combine(ExtendedProperties.java:783)
> > at
> >
> org.apache.velocity.runtime.RuntimeInstance.setProperties(RuntimeInstance.java:657)
> > at
> >
> org.apache.velocity.runtime.RuntimeInstance.init(RuntimeInstance.java:645)
> > at
> >
> org.apache.velocity.runtime.RuntimeSingleton.init(RuntimeSingleton.java:226)
> > at org.apache.velocity.app.Velocity.init(Velocity.java:97)
> > at
> >
> com.hannonhill.cascade.velocity.VelocityEngineUtil.generateMessage(VelocityEngineUtil.java:66)
> >
> > Also, here's the code that's calling the Velocity.init:
> >
> >        Properties velocityProps = VelocityProperties.getProperties();
> >
> >        Velocity.init(velocityProps);
> >
> > Velocity Properties are just loading the following file contents into a
> > properties object:
> >
> >
> >
> #----------------------------------------------------------------------------
> > # This controls if Runtime.error(), info() and warn() messages include
> the
> > # whole stack trace. The last property controls whether invalid
> references
> > # are logged.
> >
> >
> #----------------------------------------------------------------------------
> > runtime.log.error.stacktrace = false
> > runtime.log.warn.stacktrace = false
> > runtime.log.info.stacktrace = false
> > runtime.log.invalid.reference = true
> >
> >
> #----------------------------------------------------------------------------
> > # Configuration for the Log4JLogSystem.
> > # You must define the runtime.log.logsystem.class property to be:
> > #   org.apache.velocity.runtime.log.Log4JLogSystem
> > #
> > # You must also include Log4J's .jar files into your classpath. They are
> > # included with the Velocity distribution in the build/lib directory.
> > #
> > # There are several different options that you can configure.
> > # Uncomment the ones that you want and also define their settings.
> >
> >
> #----------------------------------------------------------------------------
> >
> >
> #----------------------------------------------------------------------------
> > # T E M P L A T E  E N C O D I N G
> >
> >
> #----------------------------------------------------------------------------
> > input.encoding=UTF-8
> > output.encoding=UTF-8
> >
> >
> #----------------------------------------------------------------------------
> > # F O R E A C H  P R O P E R T I E S
> >
> >
> #----------------------------------------------------------------------------
> > # These properties control how the counter is accessed in the #foreach
> > # directive. By default the reference $velocityCount will be available
> > # in the body of the #foreach directive. The default starting value
> > # for this reference is 1.
> >
> >
> #----------------------------------------------------------------------------
> > directive.foreach.counter.name = velocityCount
> > directive.foreach.counter.initial.value = 1
> >
> >
> #----------------------------------------------------------------------------
> > # T E M P L A T E  L O A D E R S
> >
> >
> #----------------------------------------------------------------------------
> > resource.loader = class
> > class.resource.loader.description = Velocity Classpath Resource Loader
> > class.resource.loader.class =
> > org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message