RemoteDeliverySocketFactorypublic class RemoteDeliverySocketFactory extends SocketFactory It is used by RemoteDelivery in order to make possible to bind the client
socket to a specific ip address.
This is not a nice solution because the ip address must be shared by all
RemoteDelivery instances. It would be better to modify JavaMail
(current version 1.3) to support a corresonding property, e.g.
mail.smtp.bindAdress.
This used to not extend javax.net.SocketFactory descendant, because
1. it was not necessary because JavaMail 1.2 uses reflection when accessing
this class;
2. it was not desirable because it would require java 1.4.
But since James 2.3.0a1:
1. we require Java 1.4 so the dependency on SocketFactory is
not really an issue;
2. Javamail 1.4 cast the object returned by getDefault to SocketFactory and
fails to create the socket if we don't extend SocketFactory.
Note: Javamail 1.4 should correctly support mail.smtp.localaddr so we could
probably get rid of this class and simply add that property to the Session. |
Fields Summary |
---|
private static InetAddress | bindAddressit should be set by setBindAdress(). Null means the socket is bind to
the default address. |
Methods Summary |
---|
public java.net.Socket | createSocket()the same as the similarly named javax.net.SocketFactory operation.
Just to be safe, it is not used by JavaMail 1.3.
This is the only method used by JavaMail 1.4.
Socket s = new Socket();
s.bind(new InetSocketAddress(bindAddress, 0));
return s;
| public java.net.Socket | createSocket(java.lang.String host, int port)the same as the similarly named javax.net.SocketFactory operation.
This is the one which is used by JavaMail 1.3.
This is not used by JavaMail 1.4.
return new Socket(host, port, bindAddress, 0);
| public java.net.Socket | createSocket(java.lang.String host, int port, java.net.InetAddress clientHost, int clientPort)the same as the similarly named javax.net.SocketFactory operation.
Just to be safe, it is not used by JavaMail 1.3.
This is not used by JavaMail 1.4.
return new Socket(host, port,
clientHost == null ? bindAddress : clientHost, clientPort);
| public java.net.Socket | createSocket(java.net.InetAddress host, int port)the same as the similarly named javax.net.SocketFactory operation.
Just to be safe, it is not used by JavaMail 1.3.
This is not used by JavaMail 1.4.
return new Socket(host, port, bindAddress, 0);
| public java.net.Socket | createSocket(java.net.InetAddress address, int port, java.net.InetAddress clientAddress, int clientPort)the same as the similarly named javax.net.SocketFactory operation.
Just to be safe, it is not used by JavaMail 1.3.
This is not used by JavaMail 1.4.
return new Socket(address, port,
clientAddress == null ? bindAddress : clientAddress,
clientPort);
| public static javax.net.SocketFactory | getDefault()the same as the similarly named javax.net.SocketFactory operation.
return new RemoteDeliverySocketFactory();
| static void | setBindAdress(java.lang.String addr)
if (addr == null) bindAddress = null;
else bindAddress = InetAddress.getByName(addr);
|
|