当前位置: 首页>>代码示例>>Java>>正文


Java MessageDriven类代码示例

本文整理汇总了Java中javax.ejb.MessageDriven的典型用法代码示例。如果您正苦于以下问题:Java MessageDriven类的具体用法?Java MessageDriven怎么用?Java MessageDriven使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


MessageDriven类属于javax.ejb包,在下文中一共展示了MessageDriven类的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: messageDrivenBean

import javax.ejb.MessageDriven; //导入依赖的package包/类
private static <T> JMSContextMock messageDrivenBean(T bean, Class<? extends T> beanType) {
    if (MessageListener.class.isAssignableFrom(beanType)) {
        MessageDriven md = beanType.getAnnotation(MessageDriven.class);
        Collection<ActivationConfigProperty> properties = asList(md.activationConfig());
        ActiveMQDestination destination = lookupDestination(properties);
        CTX.startBrokerIfAbsent();
        try {
            JMSContextMock ctx = new JMSContextMock(CTX.getConnectionFactory(),
                    lookupClientId(properties, destination.getPhysicalName()),
                    false,
                    lookupAcknowledgeMode(properties));
            createConsumer(properties, ctx.getSession(), destination)
                    .setMessageListener(new JMS20MessageListenerDecorator<>((MessageListener) bean));
            return ctx;
        } catch (JMSException e) {
            throw new EJBException(e.getLocalizedMessage(), e);
        }
    } else {
        throw new EJBException("The message driven bean \""
                + beanType.getName()
                + "\" must implement the appropriate message listener interface \""
                + MessageDriven.class.getName()
                + "\".");
    }
}
 
开发者ID:Tibor17,项目名称:javaee-samples,代码行数:26,代码来源:MessageDrivenContext.java

示例2: beans

import javax.ejb.MessageDriven; //导入依赖的package包/类
public <X> void beans(
        final @Observes ProcessAnnotatedType<X> processBean
) {
    final MessageDriven annotation = processBean.getAnnotatedType().getAnnotation(MessageDriven.class);
    if (annotation != null) {
        final Class<X> javaClass = processBean.getAnnotatedType().getJavaClass();
        if (!MessageListener.class.isAssignableFrom(javaClass)) {
            throw new TestEEfiException("The @MessageDriven bean " + javaClass.getName()
                    + " does not implement MessageListener"
            );
        }
        registry.register(annotation, (Class<? extends MessageListener>) javaClass);
    }
}
 
开发者ID:dajudge,项目名称:testee.fi,代码行数:15,代码来源:JmsExtension.java

示例3: bindContext

import javax.ejb.MessageDriven; //导入依赖的package包/类
@Override
public <T> T bindContext(T bean, Class<?> beanType) {
    if (beanType.isAnnotationPresent(MessageDriven.class)) {
        MDCTX.get().computeIfAbsent(bean, b -> messageDrivenBean(bean, beanType));
    }
    return bean;
}
 
开发者ID:Tibor17,项目名称:javaee-samples,代码行数:8,代码来源:MessageDrivenContext.java

示例4: lookupOf

import javax.ejb.MessageDriven; //导入依赖的package包/类
@Override
public <T> Optional<Object> lookupOf(Class<?> declaredInjectionType, Resource injectionAnnotation, T bean, Class<? extends T> beanType) {
    String mapping = injectionAnnotation.mappedName();
    if (mapping == null) mapping = injectionAnnotation.lookup();
    switch (mapping) {
        case "jms/ConnectionFactory": // Java EE spec
        case "java:/ConnectionFactory": // Java EE spec
        case "/ConnectionFactory": // JBoss
        case "java:comp/DefaultJMSConnectionFactory": // JBoss
        case "java:jboss/DefaultJMSConnectionFactory": // JBoss
        case "java:/JmsXA":
            return of(connectionFactory);

        case "java:jms/queue/test": // Java EE spec
        case "jms/queue/test": // Java EE spec
        case "queue/test": // JBoss
        case "/jms/queue/test": // JBoss
        case "/queue/test": // JBoss
            sanityCheckQueue(injectionAnnotation.type(), mapping, beanType);
            if (beanType.isAnnotationPresent(MessageDriven.class)) {
                if (MessageListener.class.isAssignableFrom(beanType)) {
                    try {
                        consumer.getMessageConsumer().setMessageListener((MessageListener) bean);
                    } catch (JMSException e) {
                        throw new IllegalStateException(e.getLocalizedMessage(), e);
                    }
                } else {
                    throw new EJBException("The message driven bean \""
                            + beanType.getName()
                            + "\" must implement the appropriate message listener interface \""
                            + MessageDriven.class.getName()
                            + "\".");
                }
            }
            return of(producer.getDestination());

        default:
            return empty();
    }
}
 
开发者ID:Tibor17,项目名称:javaee-samples,代码行数:41,代码来源:JmsResource.java

示例5: register

import javax.ejb.MessageDriven; //导入依赖的package包/类
public <X extends  MessageListener> void register(final MessageDriven annotation, final Class<X> javaClass) {
    LOG.info("{} -> {}", annotation.mappedName(), javaClass.getName());
    messageDrivenBeans.put(annotation.mappedName(), javaClass);
}
 
开发者ID:dajudge,项目名称:testee.fi,代码行数:5,代码来源:MessageDrivenBeanRegistry.java

示例6: getEjbName

import javax.ejb.MessageDriven; //导入依赖的package包/类
private String getEjbName(final MessageDriven mdb, final Class<?> beanClass) {
    return mdb.name().isEmpty() ? beanClass.getSimpleName() : mdb.name();
}
 
开发者ID:apache,项目名称:tomee,代码行数:4,代码来源:AnnotationDeployer.java

示例7: isValidEjbAnnotationUsage

import javax.ejb.MessageDriven; //导入依赖的package包/类
private boolean isValidEjbAnnotationUsage(final Class annotationClass, final Annotated<Class<?>> beanClass, final String ejbName, final EjbModule ejbModule) {
    final List<Class<? extends Annotation>> annotations = new ArrayList(Arrays.asList(Singleton.class, Stateless.class, Stateful.class, MessageDriven.class));
    annotations.remove(annotationClass);

    final boolean b = true;
    for (final Class<? extends Annotation> secondAnnotation : annotations) {
        final Annotation annotation = beanClass.getAnnotation(secondAnnotation);

        if (annotation == null) {
            continue;
        }

        String secondEjbName = null;
        if (annotation instanceof Stateful) {
            secondEjbName = getEjbName((Stateful) annotation, beanClass.get());
        } else if (annotation instanceof Stateless) {
            secondEjbName = getEjbName((Stateless) annotation, beanClass.get());
        } else if (annotation instanceof Singleton) {
            secondEjbName = getEjbName((Singleton) annotation, beanClass.get());
        } else if (annotation instanceof MessageDriven) {
            secondEjbName = getEjbName((MessageDriven) annotation, beanClass.get());
        }

        if (ejbName.equals(secondEjbName)) {
            ejbModule.getValidation().fail(ejbName, "multiplyAnnotatedAsBean", annotationClass.getSimpleName(), secondAnnotation.getSimpleName(), ejbName, beanClass.get().getName());
        }
    }

    if (beanClass.get().isInterface()) {
        if (!CheckClasses.isAbstractAllowed(beanClass.get())) {
            ejbModule.getValidation().fail(ejbName, "interfaceAnnotatedAsBean", annotationClass.getSimpleName(), beanClass.get().getName());
            return false;
        }
    } else if (Modifier.isAbstract(beanClass.get().getModifiers())) {
        if (!CheckClasses.isAbstractAllowed(beanClass.get())) {
            ejbModule.getValidation().fail(ejbName, "abstractAnnotatedAsBean", annotationClass.getSimpleName(), beanClass.get().getName());
            return false;
        }
    }

    return b;
}
 
开发者ID:apache,项目名称:tomee,代码行数:43,代码来源:AnnotationDeployer.java

示例8: processInjectionTarget

import javax.ejb.MessageDriven; //导入依赖的package包/类
/**
 * Replaces the meta data of the {@link ProcessAnnotatedType}.
 * 
 * <p>
 * The ProcessAnnotatedType's meta data will be replaced, if the annotated type has one of the following annotations:
 * <ul>
 * <li> {@link Stateless}
 * <li> {@link MessageDriven}
 * <li> {@link Interceptor}
 * <li> {@link Singleton}
 * </ul>
 *
 * @param <X> the type of the ProcessAnnotatedType
 * @param pat the annotated type representing the class being processed
 */
public <X> void processInjectionTarget(@Observes @WithAnnotations({Stateless.class, MessageDriven.class, Interceptor.class, Singleton.class}) ProcessAnnotatedType<X> pat) {
    if (pat.getAnnotatedType().isAnnotationPresent(Stateless.class) || pat.getAnnotatedType().isAnnotationPresent(MessageDriven.class)) {
        modifiyAnnotatedTypeMetadata(pat);
    } else if (pat.getAnnotatedType().isAnnotationPresent(Interceptor.class)) {
        processInterceptorDependencies(pat);
    } else if(pat.getAnnotatedType().isAnnotationPresent(Singleton.class)) {
        addApplicationScopedAndTransactionalToSingleton(pat);
    }
}
 
开发者ID:NovaTecConsulting,项目名称:BeanTest,代码行数:25,代码来源:BeanTestExtension.java


注:本文中的javax.ejb.MessageDriven类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。