Author: jganoff
Date: 2010-05-06 22:25:15 -0400 (Thu, 06 May 2010)
New Revision: 12692
Modified:
modules/jms/branches/simple-forwarding/impl/src/main/java/org/jboss/seam/jms/BridgedObserver.java
modules/jms/branches/simple-forwarding/impl/src/test/java/org/jboss/seam/jms/test/bridge/simple/MyForwarding.java
Log:
Minor clean up of BridgedObserver. Fixed MyForwarding test to not try to inject topic
immediately (before the topic has been deployed via Arquillian).
Modified:
modules/jms/branches/simple-forwarding/impl/src/main/java/org/jboss/seam/jms/BridgedObserver.java
===================================================================
---
modules/jms/branches/simple-forwarding/impl/src/main/java/org/jboss/seam/jms/BridgedObserver.java 2010-05-07
02:11:48 UTC (rev 12691)
+++
modules/jms/branches/simple-forwarding/impl/src/main/java/org/jboss/seam/jms/BridgedObserver.java 2010-05-07
02:25:15 UTC (rev 12692)
@@ -74,37 +74,37 @@
private void forwardEvent(Object event, Set<Annotation> qualifiers)
{
- log.info("Forwarding event: {}", event);
- // p.forwardEvent(event, qualifiers);
-
- // for (EventPropagator p : ServiceLoader.load(EventPropagator.class))
- // {
- // p.forwardEvent(event, null);
- // }
-
+ Set<Bean<?>> beans = bm.getBeans(Session.class);
+ Bean<?> bean = bm.resolve(beans);
+ Session s = (Session) bm.getReference(bean, Session.class,
bm.createCreationalContext(bean));
try
{
- Set<Bean<?>> beans = bm.getBeans(Session.class);// , new
- // AnnotationLiteral<org.jboss.seam.jms.annotations.Session>()
- // {});
- Bean<?> bean = bm.resolve(beans);
- Session s = (Session) bm.getReference(bean, Session.class,
bm.createCreationalContext(bean));
- log.info("Forwarding with session {}", s);
- log.info("To destinations {}", config.getDestinations());
- // FIXME Cache producers
- for(Destination d : config.getDestinations())
+ for (Destination d : config.getDestinations())
{
- log.info("Forwarding to destination {}", d);
- Message m = s.createObjectMessage((Serializable) event);
- s.createProducer(d).send(m);
+ try
+ {
+ Message m = s.createObjectMessage((Serializable) event);
+ // Safe to create producers here always? In an app server these
+ // should be cached via JCA managed connection factory but what
+ // about other environments?
+ s.createProducer(d).send(m);
+ }
+ catch (JMSException ex)
+ {
+ log.error("Unable to forward event", ex);
+ }
}
-// s.close();
-
-
}
- catch (JMSException ex)
+ finally
{
- log.error("Unable to forward event", ex);
+ try
+ {
+ s.close();
+ }
+ catch (JMSException ex)
+ {
+ log.error("Unable to close session", ex);
+ }
}
}
}
Modified:
modules/jms/branches/simple-forwarding/impl/src/test/java/org/jboss/seam/jms/test/bridge/simple/MyForwarding.java
===================================================================
---
modules/jms/branches/simple-forwarding/impl/src/test/java/org/jboss/seam/jms/test/bridge/simple/MyForwarding.java 2010-05-07
02:11:48 UTC (rev 12691)
+++
modules/jms/branches/simple-forwarding/impl/src/test/java/org/jboss/seam/jms/test/bridge/simple/MyForwarding.java 2010-05-07
02:25:15 UTC (rev 12692)
@@ -6,6 +6,7 @@
import java.util.Set;
import javax.enterprise.context.ApplicationScoped;
+import javax.enterprise.inject.Instance;
import javax.enterprise.util.AnnotationLiteral;
import javax.inject.Inject;
import javax.inject.Named;
@@ -24,13 +25,15 @@
private static final long serialVersionUID = 1L;
});
+ // Use Instance<?> here to get around problem of topic not being deployed before
Weld processes
+ // deployment and tries to inject topics
@Inject
@JmsDestination(jndiName="jms/T")
- private Topic t;
+ private Instance<Topic> t;
public Set<? extends Destination> getDestinations()
{
- return Collections.singleton(t);
+ return Collections.singleton(t.get());
}
public Type getEventType()
Show replies by date