本文整理汇总了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()
+ "\".");
}
}
示例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);
}
}
示例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;
}
示例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();
}
}
示例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);
}
示例6: getEjbName
import javax.ejb.MessageDriven; //导入依赖的package包/类
private String getEjbName(final MessageDriven mdb, final Class<?> beanClass) {
return mdb.name().isEmpty() ? beanClass.getSimpleName() : mdb.name();
}
示例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;
}
示例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);
}
}