001: /*
002: * JBoss, Home of Professional Open Source.
003: * Copyright 2006, Red Hat Middleware LLC, and individual contributors
004: * as indicated by the @author tags. See the copyright.txt file in the
005: * distribution for a full listing of individual contributors.
006: *
007: * This is free software; you can redistribute it and/or modify it
008: * under the terms of the GNU Lesser General Public License as
009: * published by the Free Software Foundation; either version 2.1 of
010: * the License, or (at your option) any later version.
011: *
012: * This software is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * Lesser General Public License for more details.
016: *
017: * You should have received a copy of the GNU Lesser General Public
018: * License along with this software; if not, write to the Free
019: * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
021: */
022: package org.jboss.remoting.security.domain;
023:
024: import java.io.IOException;
025: import java.net.InetAddress;
026: import java.net.ServerSocket;
027: import javax.naming.InitialContext;
028: import org.jboss.security.SecurityDomain;
029: import org.jboss.security.ssl.DomainServerSocketFactory;
030:
031: /**
032: * @author <a href="mailto:tom.elrod@jboss.com">Tom Elrod</a>
033: */
034: public class DomainServerSocketFactoryService implements
035: DomainServerSocketFactoryServiceMBean {
036: private String securityDomain = null;
037: private DomainServerSocketFactory serverSocketFactory = null;
038:
039: /**
040: * Returns an unbound server socket. The socket is configured with the socket
041: * options (such as accept timeout) given to this factory.
042: *
043: * @return
044: * @throws java.io.IOException
045: */
046: public ServerSocket createServerSocket() throws IOException {
047: return serverSocketFactory.createServerSocket();
048: }
049:
050: /**
051: * Returns a server socket bound to the specified port. The socket is configured
052: * with the socket options (such as accept timeout) given to this factory.
053: *
054: * @param i
055: * @return
056: * @throws java.io.IOException
057: */
058: public ServerSocket createServerSocket(int i) throws IOException {
059: return serverSocketFactory.createServerSocket(i);
060: }
061:
062: /**
063: * Returns a server socket bound to the specified port,
064: * and uses the specified connection backlog. The socket is configured
065: * with the socket options (such as accept timeout) given to this factory.
066: *
067: * @param i
068: * @param i1
069: * @return
070: * @throws java.io.IOException
071: */
072: public ServerSocket createServerSocket(int i, int i1)
073: throws IOException {
074: return serverSocketFactory.createServerSocket(i, i1);
075: }
076:
077: /**
078: * Returns a server socket bound to the specified port, with a specified
079: * listen backlog and local IP. The bindAddr argument can be used on a multi-homed
080: * host for a ServerSocket that will only accept connect requests to one of its addresses.
081: * The socket is configured with the socket options (such as accept timeout) given to this factory.
082: *
083: * @param i
084: * @param i1
085: * @param inetAddress
086: * @return
087: * @throws java.io.IOException
088: */
089: public ServerSocket createServerSocket(int i, int i1,
090: InetAddress inetAddress) throws IOException {
091: return serverSocketFactory.createServerSocket(i, i1,
092: inetAddress);
093: }
094:
095: public void setSecurityDomain(String securityDomain) {
096: this .securityDomain = securityDomain;
097: }
098:
099: public String getSecurityDomain() {
100: return securityDomain;
101: }
102:
103: /**
104: * start the service, create is already called
105: */
106: public void start() throws Exception {
107: if (securityDomain != null) {
108: InitialContext ctx = new InitialContext();
109: SecurityDomain domain = (SecurityDomain) ctx
110: .lookup(securityDomain);
111: serverSocketFactory = new DomainServerSocketFactory();
112: serverSocketFactory.setSecurityDomain(domain);
113: } else {
114: throw new Exception(
115: "Can not create server socket factory due to the SecurityDomain not being set.");
116: }
117: }
118:
119: /**
120: * create the service, do expensive operations etc
121: */
122: public void create() throws Exception {
123: //NOOP
124: }
125:
126: /**
127: * stop the service
128: */
129: public void stop() {
130: //NOOP
131: }
132:
133: /**
134: * destroy the service, tear down
135: */
136: public void destroy() {
137: //NOOP
138: }
139:
140: }
|