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)