Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
bean初始化失败;嵌套异常为java.lang.NoClassDefFoundError:Ljavax/enterprise/concurrent/ManagedThreadFactory_Java_Multithreading_Spring_Jakarta Ee - Fatal编程技术网

bean初始化失败;嵌套异常为java.lang.NoClassDefFoundError:Ljavax/enterprise/concurrent/ManagedThreadFactory

bean初始化失败;嵌套异常为java.lang.NoClassDefFoundError:Ljavax/enterprise/concurrent/ManagedThreadFactory,java,multithreading,spring,jakarta-ee,Java,Multithreading,Spring,Jakarta Ee,我在WAR项目中添加了一些代码来使用javax.enterprise.concurrent.ManagedThreadFactory,现在我得到一个NoClassDefFoundError。我已经附上了错误消息和我的Maven pom更改。我在Java1.7中使用WebLogic12c ]] Root cause of ServletException. org.springframework.beans.factory.BeanCreationException: Error creating

我在WAR项目中添加了一些代码来使用javax.enterprise.concurrent.ManagedThreadFactory,现在我得到一个NoClassDefFoundError。我已经附上了错误消息和我的Maven pom更改。我在Java1.7中使用WebLogic12c

]] Root cause of ServletException.
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'myComponent' defined in class path resource [my/package/bean.xml]: Cannot resolve reference to bean 'careCoordinatorRecipientListComponentRouter' while setting bean property 'inboundRouter'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'myComponent': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [javax.enterprise.concurrent.ManagedThreadFactory] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@javax.annotation.Resource(shareable=true, mappedName=, description=, name=, type=class java.lang.Object, authenticationType=CONTAINER, lookup=)}
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1325)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1086)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
    Truncated. see log file for complete stacktrace
Caused By: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'careCoordinatorRecipientListComponentRouter': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [javax.enterprise.concurrent.ManagedThreadFactory] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@javax.annotation.Resource(shareable=true, mappedName=, description=, name=, type=class java.lang.Object, authenticationType=CONTAINER, lookup=)}
    at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:300)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1074)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
    Truncated. see log file for complete stacktrace
Caused By: org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [javax.enterprise.concurrent.ManagedThreadFactory] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@javax.annotation.Resource(shareable=true, mappedName=, description=, name=, type=class java.lang.Object, authenticationType=CONTAINER, lookup=)}
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:920)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:789)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:703)
    at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.autowireResource(CommonAnnotationBeanPostProcessor.java:431)
    at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor.java:409)
    Truncated. see log file for complete stacktrace


Maven change:
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>7.0</version>
        </dependency>
]]ServletException的根本原因。
org.springframework.beans.factory.BeanCreationException:创建名为“myComponent”的bean时出错,该名称在类路径资源[my/package/bean.xml]中定义:设置bean属性“inboundRouter”时无法解析对bean“CareCordinatorRecipientListComponentRouter”的引用;嵌套异常为org.springframework.beans.factory.BeanCreationException:创建名为“myComponent”的bean时出错:注入资源依赖项失败;嵌套异常为org.springframework.beans.factory.NoSuchBeanDefinitionException:未找到依赖项类型为[javax.enterprise.concurrent.ManagedThreadFactory]的匹配bean:应至少有1个bean符合此依赖项的autowire候选项的条件。依赖项注释:{@javax.annotation.Resource(shareable=true,mappedName=,description=,name=,type=class java.lang.Object,authenticationType=CONTAINER,lookup=)}
位于org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)
在org.springframework.beans.factory.support.BeanDefinitionValueResolver.ResolveValueIfNeeded上(BeanDefinitionValueResolver.java:106)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1325)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1086)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
截断的。有关完整的堆栈跟踪,请参阅日志文件
原因:org.springframework.beans.factory.BeanCreationException:创建名为“CareCordinatorRecipientListComponentRouter”的bean时出错:注入资源依赖项失败;嵌套异常为org.springframework.beans.factory.NoSuchBeanDefinitionException:未找到依赖项类型为[javax.enterprise.concurrent.ManagedThreadFactory]的匹配bean:应至少有1个bean符合此依赖项的autowire候选项的条件。依赖项注释:{@javax.annotation.Resource(shareable=true,mappedName=,description=,name=,type=class java.lang.Object,authenticationType=CONTAINER,lookup=)}
位于org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:300)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1074)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
位于org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
截断的。有关完整的堆栈跟踪,请参阅日志文件
原因:org.springframework.beans.factory.NoSuchBeanDefinitionException:找不到依赖项类型为[javax.enterprise.concurrent.ManagedThreadFactory]的匹配bean:至少需要1个符合此依赖项autowire候选项条件的bean。依赖项注释:{@javax.annotation.Resource(shareable=true,mappedName=,description=,name=,type=class java.lang.Object,authenticationType=CONTAINER,lookup=)}
位于org.springframework.beans.factory.support.DefaultListableBeanFactory.RaiseNouchBeanDefinitionException(DefaultListableBeanFactory.java:920)
位于org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:789)
位于org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:703)
位于org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.autowireResource(CommonAnnotationBeanPostProcessor.java:431)
位于org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor.java:409)
截断的。有关完整的堆栈跟踪,请参阅日志文件
Maven变更:
爪哇
JavaEEAPI
7
使用此代码的我的类:

public class AsynchronousLinkedComponentRouter implements
        MessageDispatcher<Object, Object> {

    /**
     * The components reference.
     * 
     * @uml.property name="component"
     * @uml.associationEnd
     */
    private List<Component<Object, Object>> components;

    /**
     * Logger for this class.
     */
    private static final Log LOG = LogFactory
            .getLog(AsynchronousLinkedComponentRouter.class);

    protected ConcurrentHashMap<String, Object> threadResultsMap;

    protected ConcurrentHashMap<String, ComponentException> componentExceptionsInThreads;

    @Resource
    private javax.enterprise.concurrent.ManagedThreadFactory threadFactory;

    /**
     * Set the components.
     * 
     * @param theComponent
     *            the component reference.
     */
    @Required
    public void setComponents(final List<Component<Object, Object>> components) {
        this.components = components;
    }

    /**
     * Route the message to the component.
     * 
     * @param message
     *            the message
     * @return the output after the component has processed the message
     * @throws RouterException
     *             if an error occurred when routing the message
     */
    @Override
    public Object route(final Object message) throws RouterException {
        try {
            threadResultsMap = new ConcurrentHashMap<String, Object>();
            List<Thread> producerThreads = new ArrayList<Thread>();
            for (final Component<Object, Object> component : this.components) {
                AsychronousMessageProcessorTask ampTask = this.new AsychronousMessageProcessorTask(
                        component, message);
                Thread producerThread = threadFactory.newThread(ampTask);
                producerThread.setName("Parent thread: "
                        + Thread.currentThread().getName() + " for component: "
                        + component.getName());
                producerThread.start();
                producerThreads.add(producerThread);
            }
            LOG.info("Created the producer threads, waiting to join the threads.");
            try {
                for (Thread thread : producerThreads) {
                    thread.join();
                }
            } catch (InterruptedException e) {
                throw new RouterException("Interruption while joining producer threads",e);
            }

            LOG.info("Joined all producer threads");
            if (componentExceptionsInThreads.size() > 0) {
                LOG.info("Detected exceptions thrown in "
                        + String.valueOf(componentExceptionsInThreads.size())
                        + " producer thread(s).");
                String oneExceptionKey = null;
                for (String k : componentExceptionsInThreads.keySet()) {
                    LOG.error(componentExceptionsInThreads.get(k));
                    oneExceptionKey = k;
                }
                // We can only throw one of the (possibly multiple) ComponentExceptions
                // The selected one to throw is not guaranteed to be the first.
                throw (componentExceptionsInThreads.get(oneExceptionKey));
            }
            List<Object> resultsList = new ArrayList<Object>(threadResultsMap.values());
            return resultsList;
        } catch (final ComponentException ex) {
            throw new RouterException(ex);
        }
    }

    private class AsychronousMessageProcessorTask implements Runnable {
        private Component<Object, Object> component;
        private Object message;

        public AsychronousMessageProcessorTask(Component<Object, Object> component,
                final Object message) {
            this.component = component;
            this.message = message;
        }

        public void run() {
            try {
                threadResultsMap.put(component.getName(),
                        component.processInbound(message));
            } catch (ComponentException e) {
                componentExceptionsInThreads.put(component.getName(), e);
            }
        }
    }

}
公共类异步LinkedComponentRouter实现
消息调度器{
/**
*组件引用。
* 
*@uml.property name=“组件”
*@uml.associationnd
*/
私有列表组件;
/**
*此类的记录器。
*/
私有静态最终日志=日志工厂
.getLog(AsynchronousLinkedComponentRouter.class);
受保护的ConcurrentHashMap threadResultsMap;
受保护的ConcurrentHashMap组件ExceptionsInthreads;
@资源
私有javax.enterprise.concurrent.ManagedThreadFactory线程工厂;
/**
*设置组件。
* 
*@param组件
*组件引用。
*/
@必需的
公共组件(最终列表组件){
这个。组件=组件;
}
/**
*将消息路由到组件。
* 
*@param消息
*信息
*@在组件处理消息后返回输出
*@RouterException
*如果在路由邮件时发生错误
*/
@凌驾
公共对象路由(最终对象消息)引发RouterException{
试一试{
threadResultsMap=新的ConcurrentHashMap();