velocity-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Will Glass-Husain <wglasshus...@gmail.com>
Subject Re: Inconsistent and strange NPE when initializing Velocity
Date Wed, 06 Jun 2012 22:34:04 GMT
You only need to initialize Velocity once.  Performance is much better that
way.

WILL

On Wed, Jun 6, 2012 at 2:37 PM, Bradley Wagner <
bradley.wagner@hannonhill.com> wrote:

> The odd part about that is that while I could see this being a race
> condition... once Velocity gets into this state it doesn't matter how many
> times we call Velocity.init, it returns the NPE every time. I guess I
> should have mentioned that in the original post. Basically once it starts
> returning NPE our only recourse is to restart Tomcat, which fixes the
> problem, until  it pops up again.
>
> On Wed, Jun 6, 2012 at 5:35 PM, Bradley Wagner <
> bradley.wagner@hannonhill.com> wrote:
>
> > 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