001 /**
002 *
003 * Copyright 2004 The Apache Software Foundation
004 *
005 * Licensed under the Apache License, Version 2.0 (the "License");
006 * you may not use this file except in compliance with the License.
007 * You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017
018 package org.apache.geronimo.security.remoting.jmx;
019
020 import java.io.IOException;
021 import java.net.URI;
022 import java.net.URISyntaxException;
023 import java.lang.reflect.Proxy;
024
025 import org.apache.geronimo.security.jaas.server.JaasLoginServiceMBean;
026
027
028 /**
029 * A client-side utility that connects to a remote login service.
030 *
031 * @version $Rev: 417891 $ $Date: 2006-06-28 15:45:07 -0700 (Wed, 28 Jun 2006) $
032 */
033 public class JaasLoginServiceRemotingClient {
034 static public JaasLoginServiceMBean create(String host, int port) throws IllegalArgumentException {
035 URI target;
036 try {
037 target = new URI("async", null, host, port, "/JMX", null, JaasLoginServiceRemotingServer.REQUIRED_OBJECT_NAME.getCanonicalName());
038 return create(target);
039 } catch (URISyntaxException e) {
040 throw new IllegalArgumentException("Bad host or port.");
041 } catch (IOException e) {
042 throw new RuntimeException("IOException: "+e.getMessage(), e);
043 }
044 }
045
046 static public JaasLoginServiceMBean create(URI target) throws IOException, URISyntaxException {
047
048 ClassLoader cl = JaasLoginServiceMBean.class.getClassLoader();
049
050 // Setup the client side container..
051 RequestChannelInterceptor remoteInterceptor = new RequestChannelInterceptor(target, cl);
052 Class[] interfaces = new Class[]{JaasLoginServiceMBean.class};
053 return (JaasLoginServiceMBean) Proxy.newProxyInstance(cl, interfaces, remoteInterceptor);
054 }
055
056 }