Discussion:
velocityengine in cdi applicationscoped
Matthew Broadhead
2018-03-08 17:48:05 UTC
Permalink
TomEE 7.0.3 (i cannot upgrade to 7.0.4)

i am trying to switch from using XSLT to using velocity templates. i
noticed that velocity was included as a lib in TomEE

if i declare VelocityEngine inside a CDI @ApplicationScoped
try {
            VelocityEngine velocityEngine = new VelocityEngine();
            velocityEngine.init();
            Template t =
velocityEngine.getTemplate("velocity/reports/note.vm");
            VelocityContext context = new VelocityContext();
            context.put("note", note);
            StringWriter writer = new StringWriter();
            t.merge(context, writer);
            System.out.println(writer.toString());
        } catch (ResourceNotFoundException e1) {
            e1.printStackTrace();
        } catch (ParseErrorException e1) {
            e1.printStackTrace();
        } catch (MethodInvocationException e1) {
            e1.printStackTrace();
        } catch (IOException e1) {
            e1.printStackTrace();
        } catch (Exception e1) {
            e1.printStackTrace();
        }

then i get
08-Mar-2018 18:47:07.931 SEVERE [localhost-startStop-1]
org.apache.openejb.cdi.OpenEJBLifecycle.startApplication CDI Beans
module deployment failed
 org.apache.webbeans.exception.WebBeansDeploymentException:
javax.enterprise.inject.UnsatisfiedResolutionException: Api type
[uk.me.kissy.file.dao.NoteDao] is not found with the qualifiers
Qualifiers: [@javax.enterprise.inject.Default()]
for injection into Field Injection Point, field name :  noteDao, Bean
Owner : [FileRS, WebBeansType:MANAGED, Name:null, API
Types:[java.lang.Object,uk.me.kissy.file.rs.FileRS],
Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
    at
org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:327)
    at
org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:196)
    at
org.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize(ThreadSingletonServiceImpl.java:189)
    at org.apache.openejb.cdi.CdiBuilder.build(CdiBuilder.java:41)
    at
org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:914)
    at
org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:718)
    at
org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(TomcatWebAppBuilder.java:1298)
    at
org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart(TomcatWebAppBuilder.java:1124)
    at
org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:133)
    at
org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:94)
    at
org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5087)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419)
    at
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:748)
Caused by: javax.enterprise.inject.UnsatisfiedResolutionException: Api
type [uk.me.kissy.file.dao.NoteDao] is not found with the qualifiers
Qualifiers: [@javax.enterprise.inject.Default()]
for injection into Field Injection Point, field name :  noteDao, Bean
Owner : [FileRS, WebBeansType:MANAGED, Name:null, API
Types:[java.lang.Object,uk.me.kissy.file.rs.FileRS],
Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
    at
org.apache.webbeans.util.InjectionExceptionUtil.throwUnsatisfiedResolutionException(InjectionExceptionUtil.java:65)
    at
org.apache.webbeans.container.InjectionResolver.checkInjectionPoint(InjectionResolver.java:234)
    at
org.apache.webbeans.container.BeanManagerImpl.validate(BeanManagerImpl.java:1209)
    at
org.apache.webbeans.util.WebBeansUtil.validate(WebBeansUtil.java:1709)
    at
org.apache.webbeans.config.BeansDeployer.validate(BeansDeployer.java:913)
    at
org.apache.webbeans.config.BeansDeployer.validateInjectionPoints(BeansDeployer.java:824)
    at
org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:307)
    ... 17 more

is VelocityEngine not allowed in there?  or is there somewhere else i
can be defining it for general use inside the container?
Romain Manni-Bucau
2018-03-08 18:15:52 UTC
Permalink
Hi

If you keep the bean and remove velocity you will probably get the same
error until its classloader is not correctly set and you have extensions in
your webapp but it should fail at runtime.
Post by Matthew Broadhead
TomEE 7.0.3 (i cannot upgrade to 7.0.4)
i am trying to switch from using XSLT to using velocity templates. i
noticed that velocity was included as a lib in TomEE
try {
VelocityEngine velocityEngine = new VelocityEngine();
velocityEngine.init();
Template t = velocityEngine.getTemplate("ve
locity/reports/note.vm");
VelocityContext context = new VelocityContext();
context.put("note", note);
StringWriter writer = new StringWriter();
t.merge(context, writer);
System.out.println(writer.toString());
} catch (ResourceNotFoundException e1) {
e1.printStackTrace();
} catch (ParseErrorException e1) {
e1.printStackTrace();
} catch (MethodInvocationException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
} catch (Exception e1) {
e1.printStackTrace();
}
then i get
08-Mar-2018 18:47:07.931 SEVERE [localhost-startStop-1]
org.apache.openejb.cdi.OpenEJBLifecycle.startApplication CDI Beans module
deployment failed
javax.enterprise.inject.UnsatisfiedResolutionException: Api type
[uk.me.kissy.file.dao.NoteDao] is not found with the qualifiers
for injection into Field Injection Point, field name : noteDao, Bean
Owner : [FileRS, WebBeansType:MANAGED, Name:null, API
Types:[java.lang.Object,uk.me.kissy.file.rs.FileRS],
Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
at org.apache.webbeans.config.BeansDeployer.deploy(BeansDeploye
r.java:327)
at org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(Ope
nEJBLifecycle.java:196)
at org.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize
(ThreadSingletonServiceImpl.java:189)
at org.apache.openejb.cdi.CdiBuilder.build(CdiBuilder.java:41)
at org.apache.openejb.assembler.classic.Assembler.createApplica
tion(Assembler.java:914)
at org.apache.openejb.assembler.classic.Assembler.createApplica
tion(Assembler.java:718)
at org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(
TomcatWebAppBuilder.java:1298)
at org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart
(TomcatWebAppBuilder.java:1124)
at org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEve
nt(GlobalListenerSupport.java:133)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(Li
fecycleBase.java:94)
at org.apache.catalina.core.StandardContext.startInternal(Stand
ardContext.java:5087)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.
java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(Conta
inerBase.java:1419)
at org.apache.catalina.core.ContainerBase$StartChild.call(Conta
inerBase.java:1409)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPool
Executor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoo
lExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
Caused by: javax.enterprise.inject.UnsatisfiedResolutionException: Api
type [uk.me.kissy.file.dao.NoteDao] is not found with the qualifiers
for injection into Field Injection Point, field name : noteDao, Bean
Owner : [FileRS, WebBeansType:MANAGED, Name:null, API
Types:[java.lang.Object,uk.me.kissy.file.rs.FileRS],
Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
at org.apache.webbeans.util.InjectionExceptionUtil.throwUnsatis
fiedResolutionException(InjectionExceptionUtil.java:65)
at org.apache.webbeans.container.InjectionResolver.checkInjecti
onPoint(InjectionResolver.java:234)
at org.apache.webbeans.container.BeanManagerImpl.validate(BeanM
anagerImpl.java:1209)
at org.apache.webbeans.util.WebBeansUtil.validate(WebBeansUtil.
java:1709)
at org.apache.webbeans.config.BeansDeployer.validate(BeansDeplo
yer.java:913)
at org.apache.webbeans.config.BeansDeployer.validateInjectionPo
ints(BeansDeployer.java:824)
at org.apache.webbeans.config.BeansDeployer.deploy(BeansDeploye
r.java:307)
... 17 more
is VelocityEngine not allowed in there? or is there somewhere else i can
be defining it for general use inside the container?
Matthew Broadhead
2018-03-08 18:18:53 UTC
Permalink
if i remove velocity from NoteDao then TomEE starts fine
Post by Romain Manni-Bucau
Hi
If you keep the bean and remove velocity you will probably get the same
error until its classloader is not correctly set and you have extensions in
your webapp but it should fail at runtime.
Post by Matthew Broadhead
TomEE 7.0.3 (i cannot upgrade to 7.0.4)
i am trying to switch from using XSLT to using velocity templates. i
noticed that velocity was included as a lib in TomEE
try {
VelocityEngine velocityEngine = new VelocityEngine();
velocityEngine.init();
Template t = velocityEngine.getTemplate("ve
locity/reports/note.vm");
VelocityContext context = new VelocityContext();
context.put("note", note);
StringWriter writer = new StringWriter();
t.merge(context, writer);
System.out.println(writer.toString());
} catch (ResourceNotFoundException e1) {
e1.printStackTrace();
} catch (ParseErrorException e1) {
e1.printStackTrace();
} catch (MethodInvocationException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
} catch (Exception e1) {
e1.printStackTrace();
}
then i get
08-Mar-2018 18:47:07.931 SEVERE [localhost-startStop-1]
org.apache.openejb.cdi.OpenEJBLifecycle.startApplication CDI Beans module
deployment failed
javax.enterprise.inject.UnsatisfiedResolutionException: Api type
[uk.me.kissy.file.dao.NoteDao] is not found with the qualifiers
for injection into Field Injection Point, field name : noteDao, Bean
Owner : [FileRS, WebBeansType:MANAGED, Name:null, API
Types:[java.lang.Object,uk.me.kissy.file.rs.FileRS],
Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
at org.apache.webbeans.config.BeansDeployer.deploy(BeansDeploye
r.java:327)
at org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(Ope
nEJBLifecycle.java:196)
at org.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize
(ThreadSingletonServiceImpl.java:189)
at org.apache.openejb.cdi.CdiBuilder.build(CdiBuilder.java:41)
at org.apache.openejb.assembler.classic.Assembler.createApplica
tion(Assembler.java:914)
at org.apache.openejb.assembler.classic.Assembler.createApplica
tion(Assembler.java:718)
at org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(
TomcatWebAppBuilder.java:1298)
at org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart
(TomcatWebAppBuilder.java:1124)
at org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEve
nt(GlobalListenerSupport.java:133)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(Li
fecycleBase.java:94)
at org.apache.catalina.core.StandardContext.startInternal(Stand
ardContext.java:5087)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.
java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(Conta
inerBase.java:1419)
at org.apache.catalina.core.ContainerBase$StartChild.call(Conta
inerBase.java:1409)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPool
Executor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoo
lExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
Caused by: javax.enterprise.inject.UnsatisfiedResolutionException: Api
type [uk.me.kissy.file.dao.NoteDao] is not found with the qualifiers
for injection into Field Injection Point, field name : noteDao, Bean
Owner : [FileRS, WebBeansType:MANAGED, Name:null, API
Types:[java.lang.Object,uk.me.kissy.file.rs.FileRS],
Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
at org.apache.webbeans.util.InjectionExceptionUtil.throwUnsatis
fiedResolutionException(InjectionExceptionUtil.java:65)
at org.apache.webbeans.container.InjectionResolver.checkInjecti
onPoint(InjectionResolver.java:234)
at org.apache.webbeans.container.BeanManagerImpl.validate(BeanM
anagerImpl.java:1209)
at org.apache.webbeans.util.WebBeansUtil.validate(WebBeansUtil.
java:1709)
at org.apache.webbeans.config.BeansDeployer.validate(BeansDeplo
yer.java:913)
at org.apache.webbeans.config.BeansDeployer.validateInjectionPo
ints(BeansDeployer.java:824)
at org.apache.webbeans.config.BeansDeployer.deploy(BeansDeploye
r.java:307)
... 17 more
is VelocityEngine not allowed in there? or is there somewhere else i can
be defining it for general use inside the container?
Matthew Broadhead
2018-03-08 18:21:22 UTC
Permalink
btw is there some way to define VelocityEngine as a Resource in
tomee.xml so it doesn't have to be loaded each time?
Post by Romain Manni-Bucau
Hi
If you keep the bean and remove velocity you will probably get the same
error until its classloader is not correctly set and you have extensions in
your webapp but it should fail at runtime.
Post by Matthew Broadhead
TomEE 7.0.3 (i cannot upgrade to 7.0.4)
i am trying to switch from using XSLT to using velocity templates. i
noticed that velocity was included as a lib in TomEE
try {
VelocityEngine velocityEngine = new VelocityEngine();
velocityEngine.init();
Template t = velocityEngine.getTemplate("ve
locity/reports/note.vm");
VelocityContext context = new VelocityContext();
context.put("note", note);
StringWriter writer = new StringWriter();
t.merge(context, writer);
System.out.println(writer.toString());
} catch (ResourceNotFoundException e1) {
e1.printStackTrace();
} catch (ParseErrorException e1) {
e1.printStackTrace();
} catch (MethodInvocationException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
} catch (Exception e1) {
e1.printStackTrace();
}
then i get
08-Mar-2018 18:47:07.931 SEVERE [localhost-startStop-1]
org.apache.openejb.cdi.OpenEJBLifecycle.startApplication CDI Beans module
deployment failed
javax.enterprise.inject.UnsatisfiedResolutionException: Api type
[uk.me.kissy.file.dao.NoteDao] is not found with the qualifiers
for injection into Field Injection Point, field name : noteDao, Bean
Owner : [FileRS, WebBeansType:MANAGED, Name:null, API
Types:[java.lang.Object,uk.me.kissy.file.rs.FileRS],
Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
at org.apache.webbeans.config.BeansDeployer.deploy(BeansDeploye
r.java:327)
at org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(Ope
nEJBLifecycle.java:196)
at org.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize
(ThreadSingletonServiceImpl.java:189)
at org.apache.openejb.cdi.CdiBuilder.build(CdiBuilder.java:41)
at org.apache.openejb.assembler.classic.Assembler.createApplica
tion(Assembler.java:914)
at org.apache.openejb.assembler.classic.Assembler.createApplica
tion(Assembler.java:718)
at org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(
TomcatWebAppBuilder.java:1298)
at org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart
(TomcatWebAppBuilder.java:1124)
at org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEve
nt(GlobalListenerSupport.java:133)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(Li
fecycleBase.java:94)
at org.apache.catalina.core.StandardContext.startInternal(Stand
ardContext.java:5087)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.
java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(Conta
inerBase.java:1419)
at org.apache.catalina.core.ContainerBase$StartChild.call(Conta
inerBase.java:1409)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPool
Executor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoo
lExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
Caused by: javax.enterprise.inject.UnsatisfiedResolutionException: Api
type [uk.me.kissy.file.dao.NoteDao] is not found with the qualifiers
for injection into Field Injection Point, field name : noteDao, Bean
Owner : [FileRS, WebBeansType:MANAGED, Name:null, API
Types:[java.lang.Object,uk.me.kissy.file.rs.FileRS],
Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
at org.apache.webbeans.util.InjectionExceptionUtil.throwUnsatis
fiedResolutionException(InjectionExceptionUtil.java:65)
at org.apache.webbeans.container.InjectionResolver.checkInjecti
onPoint(InjectionResolver.java:234)
at org.apache.webbeans.container.BeanManagerImpl.validate(BeanM
anagerImpl.java:1209)
at org.apache.webbeans.util.WebBeansUtil.validate(WebBeansUtil.
java:1709)
at org.apache.webbeans.config.BeansDeployer.validate(BeansDeplo
yer.java:913)
at org.apache.webbeans.config.BeansDeployer.validateInjectionPo
ints(BeansDeployer.java:824)
at org.apache.webbeans.config.BeansDeployer.deploy(BeansDeploye
r.java:307)
... 17 more
is VelocityEngine not allowed in there? or is there somewhere else i can
be defining it for general use inside the container?
Romain Manni-Bucau
2018-03-08 20:38:45 UTC
Permalink
Then you can use the force-load option if you have velocity in your app or
remove it from here to use tomee one

That said tomee should only need velocity in embedded mode and not others
so maybe a dependency leak to fix if not already.
btw is there some way to define VelocityEngine as a Resource in tomee.xml
so it doesn't have to be loaded each time?
Post by Romain Manni-Bucau
Hi
If you keep the bean and remove velocity you will probably get the same
error until its classloader is not correctly set and you have extensions in
your webapp but it should fail at runtime.
TomEE 7.0.3 (i cannot upgrade to 7.0.4)
Post by Matthew Broadhead
i am trying to switch from using XSLT to using velocity templates. i
noticed that velocity was included as a lib in TomEE
try {
VelocityEngine velocityEngine = new VelocityEngine();
velocityEngine.init();
Template t = velocityEngine.getTemplate("ve
locity/reports/note.vm");
VelocityContext context = new VelocityContext();
context.put("note", note);
StringWriter writer = new StringWriter();
t.merge(context, writer);
System.out.println(writer.toString());
} catch (ResourceNotFoundException e1) {
e1.printStackTrace();
} catch (ParseErrorException e1) {
e1.printStackTrace();
} catch (MethodInvocationException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
} catch (Exception e1) {
e1.printStackTrace();
}
then i get
08-Mar-2018 18:47:07.931 SEVERE [localhost-startStop-1]
org.apache.openejb.cdi.OpenEJBLifecycle.startApplication CDI Beans module
deployment failed
javax.enterprise.inject.UnsatisfiedResolutionException: Api type
[uk.me.kissy.file.dao.NoteDao] is not found with the qualifiers
for injection into Field Injection Point, field name : noteDao, Bean
Owner : [FileRS, WebBeansType:MANAGED, Name:null, API
Types:[java.lang.Object,uk.me.kissy.file.rs.FileRS],
Qualifiers:[javax.enterprise.inject.Default,javax.enterprise
.inject.Any]]
at org.apache.webbeans.config.BeansDeployer.deploy(BeansDeploye
r.java:327)
at org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(Ope
nEJBLifecycle.java:196)
at org.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize
(ThreadSingletonServiceImpl.java:189)
at org.apache.openejb.cdi.CdiBuilder.build(CdiBuilder.java:41)
at org.apache.openejb.assembler.classic.Assembler.createApplica
tion(Assembler.java:914)
at org.apache.openejb.assembler.classic.Assembler.createApplica
tion(Assembler.java:718)
at org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(
TomcatWebAppBuilder.java:1298)
at org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart
(TomcatWebAppBuilder.java:1124)
at org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEve
nt(GlobalListenerSupport.java:133)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(Li
fecycleBase.java:94)
at org.apache.catalina.core.StandardContext.startInternal(Stand
ardContext.java:5087)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.
java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(Conta
inerBase.java:1419)
at org.apache.catalina.core.ContainerBase$StartChild.call(Conta
inerBase.java:1409)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPool
Executor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoo
lExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
Caused by: javax.enterprise.inject.UnsatisfiedResolutionException: Api
type [uk.me.kissy.file.dao.NoteDao] is not found with the qualifiers
for injection into Field Injection Point, field name : noteDao, Bean
Owner : [FileRS, WebBeansType:MANAGED, Name:null, API
Types:[java.lang.Object,uk.me.kissy.file.rs.FileRS],
Qualifiers:[javax.enterprise.inject.Default,javax.enterprise
.inject.Any]]
at org.apache.webbeans.util.InjectionExceptionUtil.throwUnsatis
fiedResolutionException(InjectionExceptionUtil.java:65)
at org.apache.webbeans.container.InjectionResolver.checkInjecti
onPoint(InjectionResolver.java:234)
at org.apache.webbeans.container.BeanManagerImpl.validate(BeanM
anagerImpl.java:1209)
at org.apache.webbeans.util.WebBeansUtil.validate(WebBeansUtil.
java:1709)
at org.apache.webbeans.config.BeansDeployer.validate(BeansDeplo
yer.java:913)
at org.apache.webbeans.config.BeansDeployer.validateInjectionPo
ints(BeansDeployer.java:824)
at org.apache.webbeans.config.BeansDeployer.deploy(BeansDeploye
r.java:307)
... 17 more
is VelocityEngine not allowed in there? or is there somewhere else i can
be defining it for general use inside the container?
Matthew Broadhead
2018-03-08 20:58:08 UTC
Permalink
i didn't add velocity in my app i was trying to use the TomEE one. i
moved the code out of the @ApplicationScoped and into a @Named and the
container started but then the @Named bean resolved to null
javax.el.PropertyNotFoundException: Target Unreachable, identifier
'eventsBean' resolved to null
Post by Romain Manni-Bucau
Then you can use the force-load option if you have velocity in your app or
remove it from here to use tomee one
That said tomee should only need velocity in embedded mode and not others
so maybe a dependency leak to fix if not already.
btw is there some way to define VelocityEngine as a Resource in tomee.xml
so it doesn't have to be loaded each time?
Post by Romain Manni-Bucau
Hi
If you keep the bean and remove velocity you will probably get the same
error until its classloader is not correctly set and you have extensions in
your webapp but it should fail at runtime.
TomEE 7.0.3 (i cannot upgrade to 7.0.4)
Post by Matthew Broadhead
i am trying to switch from using XSLT to using velocity templates. i
noticed that velocity was included as a lib in TomEE
try {
VelocityEngine velocityEngine = new VelocityEngine();
velocityEngine.init();
Template t = velocityEngine.getTemplate("ve
locity/reports/note.vm");
VelocityContext context = new VelocityContext();
context.put("note", note);
StringWriter writer = new StringWriter();
t.merge(context, writer);
System.out.println(writer.toString());
} catch (ResourceNotFoundException e1) {
e1.printStackTrace();
} catch (ParseErrorException e1) {
e1.printStackTrace();
} catch (MethodInvocationException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
} catch (Exception e1) {
e1.printStackTrace();
}
then i get
08-Mar-2018 18:47:07.931 SEVERE [localhost-startStop-1]
org.apache.openejb.cdi.OpenEJBLifecycle.startApplication CDI Beans module
deployment failed
javax.enterprise.inject.UnsatisfiedResolutionException: Api type
[uk.me.kissy.file.dao.NoteDao] is not found with the qualifiers
for injection into Field Injection Point, field name : noteDao, Bean
Owner : [FileRS, WebBeansType:MANAGED, Name:null, API
Types:[java.lang.Object,uk.me.kissy.file.rs.FileRS],
Qualifiers:[javax.enterprise.inject.Default,javax.enterprise
.inject.Any]]
at org.apache.webbeans.config.BeansDeployer.deploy(BeansDeploye
r.java:327)
at org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(Ope
nEJBLifecycle.java:196)
at org.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize
(ThreadSingletonServiceImpl.java:189)
at org.apache.openejb.cdi.CdiBuilder.build(CdiBuilder.java:41)
at org.apache.openejb.assembler.classic.Assembler.createApplica
tion(Assembler.java:914)
at org.apache.openejb.assembler.classic.Assembler.createApplica
tion(Assembler.java:718)
at org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(
TomcatWebAppBuilder.java:1298)
at org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart
(TomcatWebAppBuilder.java:1124)
at org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEve
nt(GlobalListenerSupport.java:133)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(Li
fecycleBase.java:94)
at org.apache.catalina.core.StandardContext.startInternal(Stand
ardContext.java:5087)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.
java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(Conta
inerBase.java:1419)
at org.apache.catalina.core.ContainerBase$StartChild.call(Conta
inerBase.java:1409)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPool
Executor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoo
lExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
Caused by: javax.enterprise.inject.UnsatisfiedResolutionException: Api
type [uk.me.kissy.file.dao.NoteDao] is not found with the qualifiers
for injection into Field Injection Point, field name : noteDao, Bean
Owner : [FileRS, WebBeansType:MANAGED, Name:null, API
Types:[java.lang.Object,uk.me.kissy.file.rs.FileRS],
Qualifiers:[javax.enterprise.inject.Default,javax.enterprise
.inject.Any]]
at org.apache.webbeans.util.InjectionExceptionUtil.throwUnsatis
fiedResolutionException(InjectionExceptionUtil.java:65)
at org.apache.webbeans.container.InjectionResolver.checkInjecti
onPoint(InjectionResolver.java:234)
at org.apache.webbeans.container.BeanManagerImpl.validate(BeanM
anagerImpl.java:1209)
at org.apache.webbeans.util.WebBeansUtil.validate(WebBeansUtil.
java:1709)
at org.apache.webbeans.config.BeansDeployer.validate(BeansDeplo
yer.java:913)
at org.apache.webbeans.config.BeansDeployer.validateInjectionPo
ints(BeansDeployer.java:824)
at org.apache.webbeans.config.BeansDeployer.deploy(BeansDeploye
r.java:307)
... 17 more
is VelocityEngine not allowed in there? or is there somewhere else i can
be defining it for general use inside the container?
Romain Manni-Bucau
2018-03-08 21:10:20 UTC
Permalink
Means the bean is vetoed, probably cause the class cannot be loaded
surprisingly.
i didn't add velocity in my app i was trying to use the TomEE one. i moved
javax.el.PropertyNotFoundException: Target Unreachable, identifier
'eventsBean' resolved to null
Post by Romain Manni-Bucau
Then you can use the force-load option if you have velocity in your app or
remove it from here to use tomee one
That said tomee should only need velocity in embedded mode and not others
so maybe a dependency leak to fix if not already.
btw is there some way to define VelocityEngine as a Resource in tomee.xml
Post by Matthew Broadhead
so it doesn't have to be loaded each time?
Hi
Post by Romain Manni-Bucau
If you keep the bean and remove velocity you will probably get the same
error until its classloader is not correctly set and you have extensions in
your webapp but it should fail at runtime.
Le 8 mars 2018 18:48, "Matthew Broadhead" <
TomEE 7.0.3 (i cannot upgrade to 7.0.4)
Post by Matthew Broadhead
i am trying to switch from using XSLT to using velocity templates. i
noticed that velocity was included as a lib in TomEE
try {
VelocityEngine velocityEngine = new VelocityEngine();
velocityEngine.init();
Template t = velocityEngine.getTemplate("ve
locity/reports/note.vm");
VelocityContext context = new VelocityContext();
context.put("note", note);
StringWriter writer = new StringWriter();
t.merge(context, writer);
System.out.println(writer.toString());
} catch (ResourceNotFoundException e1) {
e1.printStackTrace();
} catch (ParseErrorException e1) {
e1.printStackTrace();
} catch (MethodInvocationException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
} catch (Exception e1) {
e1.printStackTrace();
}
then i get
08-Mar-2018 18:47:07.931 SEVERE [localhost-startStop-1]
org.apache.openejb.cdi.OpenEJBLifecycle.startApplication CDI Beans module
deployment failed
javax.enterprise.inject.UnsatisfiedResolutionException: Api type
[uk.me.kissy.file.dao.NoteDao] is not found with the qualifiers
for injection into Field Injection Point, field name : noteDao, Bean
Owner : [FileRS, WebBeansType:MANAGED, Name:null, API
Types:[java.lang.Object,uk.me.kissy.file.rs.FileRS],
Qualifiers:[javax.enterprise.inject.Default,javax.enterprise
.inject.Any]]
at org.apache.webbeans.config.BeansDeployer.deploy(BeansDeploye
r.java:327)
at org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(Ope
nEJBLifecycle.java:196)
at org.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize
(ThreadSingletonServiceImpl.java:189)
at org.apache.openejb.cdi.CdiBuilder.build(CdiBuilder.java:41)
at org.apache.openejb.assembler.classic.Assembler.createApplica
tion(Assembler.java:914)
at org.apache.openejb.assembler.classic.Assembler.createApplica
tion(Assembler.java:718)
at org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(
TomcatWebAppBuilder.java:1298)
at org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart
(TomcatWebAppBuilder.java:1124)
at org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEve
nt(GlobalListenerSupport.java:133)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(Li
fecycleBase.java:94)
at org.apache.catalina.core.StandardContext.startInternal(Stand
ardContext.java:5087)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.
java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(Conta
inerBase.java:1419)
at org.apache.catalina.core.ContainerBase$StartChild.call(Conta
inerBase.java:1409)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPool
Executor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoo
lExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
Caused by: javax.enterprise.inject.UnsatisfiedResolutionException: Api
type [uk.me.kissy.file.dao.NoteDao] is not found with the qualifiers
for injection into Field Injection Point, field name : noteDao, Bean
Owner : [FileRS, WebBeansType:MANAGED, Name:null, API
Types:[java.lang.Object,uk.me.kissy.file.rs.FileRS],
Qualifiers:[javax.enterprise.inject.Default,javax.enterprise
.inject.Any]]
at org.apache.webbeans.util.InjectionExceptionUtil.throwUnsatis
fiedResolutionException(InjectionExceptionUtil.java:65)
at org.apache.webbeans.container.InjectionResolver.checkInjecti
onPoint(InjectionResolver.java:234)
at org.apache.webbeans.container.BeanManagerImpl.validate(BeanM
anagerImpl.java:1209)
at org.apache.webbeans.util.WebBeansUtil.validate(WebBeansUtil.
java:1709)
at org.apache.webbeans.config.BeansDeployer.validate(BeansDeplo
yer.java:913)
at org.apache.webbeans.config.BeansDeployer.validateInjectionPo
ints(BeansDeployer.java:824)
at org.apache.webbeans.config.BeansDeployer.deploy(BeansDeploye
r.java:307)
... 17 more
is VelocityEngine not allowed in there? or is there somewhere else i can
be defining it for general use inside the container?
Loading...