You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by "Jonathan S Fisher (JIRA)" <ji...@apache.org> on 2018/09/26 14:58:00 UTC

[jira] [Resolved] (TOMEE-2003) TomEE does not autocreate a JMS Connection factory when using JMSContext

     [ https://issues.apache.org/jira/browse/TOMEE-2003?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jonathan S Fisher resolved TOMEE-2003.
--------------------------------------
    Resolution: Fixed

> TomEE does not autocreate a JMS Connection factory when using JMSContext
> ------------------------------------------------------------------------
>
>                 Key: TOMEE-2003
>                 URL: https://issues.apache.org/jira/browse/TOMEE-2003
>             Project: TomEE
>          Issue Type: Bug
>    Affects Versions: 7.0.2
>            Reporter: Jonathan S Fisher
>            Priority: Minor
>
> TomEE generally autocreates missing resources by default. This piece of code will fail:
> {code}
> @Singleton
> @Startup
> @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
> public class JMSSender {
>     @Inject
>     private JMSContext jmsContext;
>     @PostConstruct
>     public void test() {
>         Destination destination = jmsContext
>                 .createQueue("org.apache.tomee.test");
>         Message message = jmsContext.createTextMessage("test message");
>         jmsContext.createProducer().send(destination, message);
>     }
> }
> {code}
> This also fails, but if the user is going to the trouble of declaring the {{@JMSConnectionFactory}} they should also probably also be smart enough to declare {{@JMSConnectionFactoryDefintion}}. In this particular case, we should probably just give a validation message or warning.
> {code}
>     @Inject
>     @JMSConnectionFactory("jms/connectionFactory")
>     private JMSContext jmsContext;
> {code}
> Here is the stack trace:
> {code}
> INFO: Started Ejb(deployment-id=MessageCollector, ejb-name=MessageCollector, container=Default Singleton Container)
> Jan 25, 2017 11:58:18 AM org.apache.openejb.core.transaction.EjbTransactionUtil handleSystemException
> SEVERE: EjbTransactionUtil.handleSystemException: Name "Resource/DefaultJMSConnectionFactory" not found.
> javax.jms.JMSRuntimeException: Name "Resource/DefaultJMSConnectionFactory" not found.
> 	at org.apache.openejb.resource.activemq.jms2.cdi.JMS2CDIExtension$Key.connectionFactory(JMS2CDIExtension.java:186)
> 	at org.apache.openejb.resource.activemq.jms2.cdi.JMS2CDIExtension$Key.create(JMS2CDIExtension.java:199)
> 	at org.apache.openejb.resource.activemq.jms2.cdi.JMS2CDIExtension$InternalJMSContext.findOrCreateContext(JMS2CDIExtension.java:246)
> 	at org.apache.openejb.resource.activemq.jms2.cdi.JMS2CDIExtension$InternalJMSContext.context(JMS2CDIExtension.java:238)
> 	at org.apache.openejb.resource.activemq.jms2.cdi.JMS2CDIExtension$InternalJMSContext.createQueue(JMS2CDIExtension.java:349)
> 	at com.tomitribe.training.jms.JMSSender.test(JMSSender.java:27)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:498)
> 	at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:205)
> 	at org.apache.openejb.core.interceptor.ReflectionInvocationContext$LifecycleInvocation.invoke(ReflectionInvocationContext.java:237)
> 	at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:186)
> 	at org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.java:181)
> 	at org.apache.openejb.monitoring.StatsInterceptor.PostConstruct(StatsInterceptor.java:109)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:498)
> 	at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:205)
> 	at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:186)
> 	at org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:85)
> 	at org.apache.openejb.BeanContext.newInstance(BeanContext.java:1708)
> 	at org.apache.openejb.core.singleton.SingletonInstanceManager.createInstance(SingletonInstanceManager.java:179)
> 	at org.apache.openejb.core.singleton.SingletonInstanceManager.access$100(SingletonInstanceManager.java:69)
> 	at org.apache.openejb.core.singleton.SingletonInstanceManager$1.call(SingletonInstanceManager.java:120)
> 	at org.apache.openejb.core.singleton.SingletonInstanceManager$1.call(SingletonInstanceManager.java:118)
> 	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
> 	at org.apache.openejb.core.singleton.SingletonInstanceManager.getInstance(SingletonInstanceManager.java:129)
> 	at org.apache.openejb.core.singleton.SingletonInstanceManager.initialize(SingletonInstanceManager.java:93)
> 	at org.apache.openejb.core.singleton.SingletonInstanceManager.start(SingletonInstanceManager.java:84)
> 	at org.apache.openejb.core.singleton.SingletonContainer.start(SingletonContainer.java:127)
> 	at org.apache.openejb.assembler.classic.Assembler.startEjbs(Assembler.java:1604)
> 	at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:947)
> 	at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:717)
> 	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:745)
> Caused by: javax.naming.NameNotFoundException: Name "Resource/DefaultJMSConnectionFactory" not found.
> 	at org.apache.openejb.core.ivm.naming.IvmContext.federate(IvmContext.java:199)
> 	at org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:151)
> 	at org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:119)
> 	at org.apache.openejb.resource.activemq.jms2.cdi.JMS2CDIExtension$Key.connectionFactory(JMS2CDIExtension.java:184)
> 	... 46 more
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)