KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jboss > resource > adapter > jms > JmsResourceAdapter


1 /*
2 * JBoss, Home of Professional Open Source
3 * Copyright 2005, JBoss Inc., and individual contributors as indicated
4 * by the @authors tag. See the copyright.txt in the distribution for a
5 * full listing of individual contributors.
6 *
7 * This is free software; you can redistribute it and/or modify it
8 * under the terms of the GNU Lesser General Public License as
9 * published by the Free Software Foundation; either version 2.1 of
10 * the License, or (at your option) any later version.
11 *
12 * This software is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this software; if not, write to the Free
19 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
21 */

22 package org.jboss.resource.adapter.jms;
23
24 import java.util.Iterator JavaDoc;
25 import java.util.Map JavaDoc;
26
27 import javax.resource.ResourceException JavaDoc;
28 import javax.resource.spi.ActivationSpec JavaDoc;
29 import javax.resource.spi.BootstrapContext JavaDoc;
30 import javax.resource.spi.ResourceAdapter JavaDoc;
31 import javax.resource.spi.ResourceAdapterInternalException JavaDoc;
32 import javax.resource.spi.XATerminator JavaDoc;
33 import javax.resource.spi.endpoint.MessageEndpointFactory JavaDoc;
34 import javax.resource.spi.work.WorkManager JavaDoc;
35 import javax.transaction.xa.XAResource JavaDoc;
36
37 import org.jboss.logging.Logger;
38 import org.jboss.resource.adapter.jms.inflow.JmsActivation;
39 import org.jboss.resource.adapter.jms.inflow.JmsActivationSpec;
40
41 import EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap;
42
43 /**
44  * A generic resource adapter for any JMS server.
45  *
46  * @author <a HREF="adrian@jboss.com">Adrian Brock</a>
47  * @version $Revision: 56483 $
48  */

49 public class JmsResourceAdapter implements ResourceAdapter JavaDoc
50 {
51    /** The logger */
52    private static final Logger log = Logger.getLogger(JmsResourceAdapter.class);
53
54    /** The bootstrap context */
55    private BootstrapContext JavaDoc ctx;
56
57    /** The activations by activation spec */
58    private ConcurrentReaderHashMap activations = new ConcurrentReaderHashMap();
59    
60    /**
61     * Get the work manager
62     *
63     * @return the work manager
64     */

65    public WorkManager JavaDoc getWorkManager()
66    {
67       return ctx.getWorkManager();
68    }
69    
70    public XATerminator JavaDoc getTerminator()
71    {
72       return ctx.getXATerminator();
73    }
74    public void endpointActivation(MessageEndpointFactory JavaDoc endpointFactory, ActivationSpec JavaDoc spec) throws ResourceException JavaDoc
75    {
76       JmsActivation activation = new JmsActivation(this, endpointFactory, (JmsActivationSpec) spec);
77       activations.put(spec, activation);
78       activation.start();
79    }
80
81    public void endpointDeactivation(MessageEndpointFactory JavaDoc endpointFactory, ActivationSpec JavaDoc spec)
82    {
83       JmsActivation activation = (JmsActivation) activations.remove(spec);
84       if (activation != null)
85          activation.stop();
86    }
87    
88    public XAResource JavaDoc[] getXAResources(ActivationSpec JavaDoc[] specs) throws ResourceException JavaDoc
89    {
90       // TODO getXAResources
91
return null;
92    }
93    
94    public void start(BootstrapContext JavaDoc ctx) throws ResourceAdapterInternalException JavaDoc
95    {
96       this.ctx = ctx;
97    }
98
99    public void stop()
100    {
101       for (Iterator JavaDoc i = activations.entrySet().iterator(); i.hasNext();)
102       {
103          Map.Entry JavaDoc entry = (Map.Entry JavaDoc) i.next();
104          try
105          {
106             JmsActivation activation = (JmsActivation) entry.getValue();
107             if (activation != null)
108                activation.stop();
109          }
110          catch (Exception JavaDoc ignored)
111          {
112             log.debug("Ignored", ignored);
113          }
114          i.remove();
115       }
116    }
117 }
118
Popular Tags