1 46 47 package org.mr.ra.inbound; 48 49 import java.lang.reflect.Method ; 50 51 import javax.jms.Connection ; 52 import javax.jms.ConnectionConsumer ; 53 import javax.jms.JMSException ; 54 import javax.jms.Message ; 55 import javax.jms.MessageListener ; 56 import javax.jms.Session ; 57 import javax.resource.ResourceException ; 58 import javax.resource.spi.endpoint.MessageEndpointFactory ; 59 import javax.resource.spi.work.WorkException ; 60 import javax.resource.spi.work.WorkManager ; 61 62 import org.apache.commons.logging.Log; 63 import org.apache.commons.logging.LogFactory; 64 65 import org.mr.ra.ResourceAdapterImpl; 66 67 70 public abstract class MantaBaseEndpointWorker { 71 72 private static final Log log = LogFactory.getLog(MantaBaseEndpointWorker.class); 73 public static final Method ON_MESSAGE_METHOD; 74 75 static { 76 try { 77 ON_MESSAGE_METHOD = MessageListener .class.getMethod("onMessage", new Class []{Message .class}); 78 } 79 catch (Exception e) { 80 throw new ExceptionInInitializerError (e); 81 } 82 } 83 84 protected ResourceAdapterImpl adapter; 85 protected EndpointKey endpointActivationKey; 86 protected MessageEndpointFactory endpointFactory; 87 protected WorkManager workManager; 88 protected boolean transacted; 89 90 93 public static void safeClose(Session s) { 94 try { 95 if (s != null) { 96 s.close(); 97 } 98 } 99 catch (JMSException e) { 100 } 101 } 102 103 106 public static void safeClose(Connection c) { 107 try { 108 if (c != null) { 109 c.close(); 110 } 111 } 112 catch (JMSException e) { 113 } 114 } 115 116 119 public static void safeClose(ConnectionConsumer cc) { 120 try { 121 if (cc != null) { 122 cc.close(); 123 } 124 } 125 catch (JMSException e) { 126 } 127 } 128 129 public MantaBaseEndpointWorker(ResourceAdapterImpl adapter, EndpointKey key) throws ResourceException { 130 this.endpointActivationKey = key; 131 this.adapter = adapter; 132 this.endpointFactory = endpointActivationKey.getMessageEndpointFactory(); 133 this.workManager = adapter.getBootstrapContext().getWorkManager(); 134 try { 135 this.transacted = endpointFactory.isDeliveryTransacted(ON_MESSAGE_METHOD); 136 } 137 catch (NoSuchMethodException e) { 138 throw new ResourceException ("Endpoint does not implement the onMessage method."); 139 } 140 } 141 142 public abstract void start() throws WorkException , ResourceException ; 143 144 public abstract void stop() throws InterruptedException ; 145 146 147 } 148 | Popular Tags |