001 package org.otfeed.j2ee.ra;
002
003 import java.io.Serializable;
004
005 import javax.naming.NamingException;
006 import javax.naming.Reference;
007 import javax.resource.Referenceable;
008 import javax.resource.ResourceException;
009 import javax.resource.spi.ConnectionManager;
010
011 import org.otfeed.OTConnectionSpec;
012 import org.otfeed.OTException;
013 import org.otfeed.support.alt.IOutboundConnection;
014 import org.otfeed.support.alt.IOutboundConnectionFactory;
015
016 public class OtfeedConnectionFactory implements
017 Referenceable, Serializable, IOutboundConnectionFactory {
018
019 private static final long serialVersionUID = -2261966417969117702L;
020
021 // JNDI Reference to this ConnectionFactory
022 private Reference reference;
023
024 private final OtfeedManagedConnectionFactory managedConnectionFactory;
025 private final ConnectionManager connectionManager;
026
027 public OtfeedConnectionFactory(
028 OtfeedManagedConnectionFactory mcf,
029 ConnectionManager cm) {
030 managedConnectionFactory = mcf;
031 connectionManager = cm;
032 }
033
034 public void setReference(Reference val) {
035 reference = val;
036 }
037
038 public Reference getReference() throws NamingException {
039 return reference;
040 }
041
042 public IOutboundConnection getConnection(OTConnectionSpec spec) throws OTException {
043 try {
044 OtfeedConnectionRequestInfo info = new OtfeedConnectionRequestInfo();
045 info.setHosts(spec.getHosts());
046 info.setUsername(spec.getUsername());
047 info.setPassword(spec.getPassword());
048 info.setHeartbeatInterval(spec.getHeartbeatInterval());
049
050 return (IOutboundConnection) connectionManager.allocateConnection(
051 managedConnectionFactory, info);
052 } catch(ResourceException ex) {
053 throw new OTException(ex);
054 }
055 }
056
057 public String toString() {
058 return getClass().getSimpleName();
059 }
060 }