Velocity (1.7) падает когда начинает испытывать значительную нагрузку :
когда надо генерировать много много писем (как пример - отсылаем все пользователям форума - сообщение поменять пароль)
вот такая вот ошибка :
| Код | java.lang.RuntimeException: this should not happen at org.apache.velocity.util.MapFactory.create(MapFactory.java:108) at org.apache.velocity.runtime.resource.ResourceCacheImpl.<init>(ResourceCacheImpl.java:50) at sun.reflect.GeneratedConstructorAccessor16.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at java.lang.Class.newInstance0(Class.java:355) at java.lang.Class.newInstance(Class.java:308) at org.apache.velocity.util.ClassUtils.getNewInstance(ClassUtils.java:105) at org.apache.velocity.runtime.resource.ResourceManagerImpl.initialize(ResourceManagerImpl.java:165) at org.apache.velocity.runtime.RuntimeInstance.initializeResourceManager(RuntimeInstance.java:730) at org.apache.velocity.runtime.RuntimeInstance.init(RuntimeInstance.java:263) at org.apache.velocity.app.VelocityEngine.init(VelocityEngine.java:93)
....
Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.GeneratedConstructorAccessor12.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at org.apache.velocity.util.MapFactory.create(MapFactory.java:103) ... 31 more Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
|
или так
| Код | org.apache.velocity.exception.VelocityException: Error loading directive.properties! Something is very wrong if these properties aren't being located. Either your Velocity distribution is incomplete or your Velocity jar file is corrupted!
at org.apache.velocity.runtime.RuntimeInstance.initializeDirectives(RuntimeInstance.java:904) at org.apache.velocity.runtime.RuntimeInstance.init(RuntimeInstance.java:264) at org.apache.velocity.app.VelocityEngine.init(VelocityEngine.java:93) ....
|
java.lang.OutOfMemoryError: GC overhead limit exceeded
именно каждый раз падает на VelocityEngine.init
как настроить Velocity чтобы этого не происходило ?
шаблон самый простой :
| Код | VelocityEngine ve = new VelocityEngine(); ve.setProperty("resource.loader", "class"); ve.setProperty("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); ve.init(); ...
|
в чем может быть проблема ? |