KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jboss > security > ssl > ClientSocketFactory


1 /*
2  * JBoss, the OpenSource EJB server
3  *
4  * Distributable under LGPL license.
5  * See terms of license at gnu.org.
6  */

7 package org.jboss.security.ssl;
8
9 import java.io.IOException JavaDoc;
10 import java.io.Serializable JavaDoc;
11 import java.net.InetAddress JavaDoc;
12 import java.net.Socket JavaDoc;
13 import java.net.UnknownHostException JavaDoc;
14 import javax.net.SocketFactory;
15 import javax.net.ssl.HandshakeCompletedEvent;
16 import javax.net.ssl.HandshakeCompletedListener;
17 import javax.net.ssl.SSLSession;
18 import javax.net.ssl.SSLSocketFactory;
19 import javax.net.ssl.SSLSocket;
20
21 import org.jboss.logging.Logger;
22
23 /** An implementation of SocketFactory that uses the JSSE
24  default SSLSocketFactory to create a client SSLSocket.
25  *
26  * @author Scott.Stark@jboss.org
27  * @version $Revision: 1.4.6.1 $
28  */

29 public class ClientSocketFactory extends SocketFactory
30    implements HandshakeCompletedListener, Serializable JavaDoc
31 {
32    static final long serialVersionUID = -2762336418317218104L;
33
34    /** Creates new RMISSLClientSocketFactory */
35    public ClientSocketFactory()
36    {
37    }
38
39    /** Create a client socket connected to the specified host and port.
40    * @param serverHost - the host name
41    * @param serverPort - the port number
42    * @return a socket connected to the specified host and port.
43    * @exception IOException if an I/O error occurs during socket creation.
44    */

45    public Socket JavaDoc createSocket(String JavaDoc serverHost, int serverPort)
46       throws IOException JavaDoc, UnknownHostException JavaDoc
47    {
48       InetAddress JavaDoc serverAddr = InetAddress.getByName(serverHost);
49       return this.createSocket(serverAddr, serverPort);
50    }
51
52    public Socket JavaDoc createSocket(String JavaDoc serverHost, int serverPort,
53       InetAddress JavaDoc clientAddr, int clientPort)
54       throws IOException JavaDoc, UnknownHostException JavaDoc
55    {
56       InetAddress JavaDoc serverAddr = InetAddress.getByName(serverHost);
57       return this.createSocket(serverAddr, serverPort, clientAddr, clientPort);
58    }
59    public Socket JavaDoc createSocket(InetAddress JavaDoc serverAddr, int serverPort)
60       throws IOException JavaDoc
61    {
62       return this.createSocket(serverAddr, serverPort, null, 0);
63    }
64    public Socket JavaDoc createSocket(InetAddress JavaDoc serverAddr, int serverPort,
65       InetAddress JavaDoc clientAddr, int clientPort)
66       throws IOException JavaDoc
67    {
68       SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();
69       SSLSocket socket = (SSLSocket) factory.createSocket(serverAddr, serverPort, clientAddr, clientPort);
70       socket.addHandshakeCompletedListener(this);
71       return socket;
72    }
73
74    public boolean equals(Object JavaDoc obj)
75    {
76       return obj instanceof ClientSocketFactory;
77    }
78    public int hashCode()
79    {
80       return getClass().getName().hashCode();
81    }
82
83    public void handshakeCompleted(HandshakeCompletedEvent handshakeCompletedEvent)
84    {
85       Logger log = Logger.getLogger(ClientSocketFactory.class);
86       if( log.isTraceEnabled() )
87       {
88          String JavaDoc cipher = handshakeCompletedEvent.getCipherSuite();
89          SSLSession session = handshakeCompletedEvent.getSession();
90          String JavaDoc peerHost = session.getPeerHost();
91          log.debug("SSL handshakeCompleted, cipher="+cipher
92             +", peerHost="+peerHost);
93       }
94    }
95
96 }
97
Popular Tags