[jboss-cvs] JBossAS SVN: r111550 - in projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/org/jboss/com/sun/corba/se/spi: transport and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Jun 7 15:56:26 EDT 2011


Author: sguilhen at redhat.com
Date: 2011-06-07 15:56:26 -0400 (Tue, 07 Jun 2011)
New Revision: 111550

Added:
   projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/org/jboss/com/sun/corba/se/spi/legacy/connection/GetEndPointInfoAgainException.java
   projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/org/jboss/com/sun/corba/se/spi/legacy/connection/ORBSocketFactory.java
   projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/org/jboss/com/sun/corba/se/spi/transport/ORBSocketFactory.java
   projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/org/jboss/com/sun/corba/se/spi/transport/SocketInfo.java
Log:
Adding dependecy classes

Added: projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/org/jboss/com/sun/corba/se/spi/legacy/connection/GetEndPointInfoAgainException.java
===================================================================
--- projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/org/jboss/com/sun/corba/se/spi/legacy/connection/GetEndPointInfoAgainException.java	                        (rev 0)
+++ projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/org/jboss/com/sun/corba/se/spi/legacy/connection/GetEndPointInfoAgainException.java	2011-06-07 19:56:26 UTC (rev 111550)
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package org.jboss.com.sun.corba.se.spi.legacy.connection;
+
+import org.jboss.com.sun.corba.se.spi.transport.SocketInfo;
+
+/**
+ * This exception is raised by <code>ORBSocketFactory.createSocket</code>. It informs the ORB that it should call
+ * <code>ORBSocketFactory.getEndPointInfo</code> again with the given <code>socketInfo</code> object as an argument
+ * (i.e., a cookie).
+ * 
+ */
+
+public class GetEndPointInfoAgainException extends Exception
+{
+    private static final long serialVersionUID = -7561363089777958598L;
+
+    private SocketInfo socketInfo;
+
+    public GetEndPointInfoAgainException(SocketInfo socketInfo)
+    {
+        this.socketInfo = socketInfo;
+    }
+
+    public SocketInfo getEndPointInfo()
+    {
+        return socketInfo;
+    }
+}

Added: projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/org/jboss/com/sun/corba/se/spi/legacy/connection/ORBSocketFactory.java
===================================================================
--- projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/org/jboss/com/sun/corba/se/spi/legacy/connection/ORBSocketFactory.java	                        (rev 0)
+++ projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/org/jboss/com/sun/corba/se/spi/legacy/connection/ORBSocketFactory.java	2011-06-07 19:56:26 UTC (rev 111550)
@@ -0,0 +1,355 @@
+/*
+ * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package org.jboss.com.sun.corba.se.spi.legacy.connection;
+
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.io.IOException;
+
+import org.jboss.com.sun.corba.se.spi.ior.IOR;
+import org.jboss.com.sun.corba.se.spi.transport.SocketInfo;
+
+/**
+ * 
+ * DEPRECATED. DEPRECATED. DEPRECATED. DEPRECATED.
+ * <p>
+ * DEPRECATED. DEPRECATED. DEPRECATED. DEPRECATED.
+ * <p>
+ * 
+ * This interface gives one the ability to plug in their own socket factory class to an ORB.
+ * <p>
+ * 
+ * Usage:
+ * <p>
+ * 
+ * One specifies a class which implements this interface via the
+ * 
+ * <code>ORBConstants.SOCKET_FACTORY_CLASS_PROPERTY</code>
+ * 
+ * property.
+ * <p>
+ * 
+ * Example:
+ * <p>
+ * 
+ * <pre>
+ *   -Dorg.jboss.com.sun.CORBA.connection.ORBSocketFactoryClass=MySocketFactory
+ * </pre>
+ * <p>
+ * 
+ * Typically one would use the same socket factory class on both the server side and the client side (but this is not
+ * required).
+ * <p>
+ * 
+ * A <code>ORBSocketFactory</code> class should have a public default constructor which is called once per instantiating
+ * ORB.init call. That ORB then calls the methods of that <code>ORBSocketFactory</code> to obtain client and server
+ * sockets.
+ * <p>
+ * 
+ * This interface also supports multiple server end points. See the documentation on <code>createServerSocket</code>
+ * below.
+ * 
+ */
+
+public interface ORBSocketFactory
+{
+    /**
+     * DEPRECATED. DEPRECATED. DEPRECATED. DEPRECATED.
+     * <p>
+     * 
+     * A server ORB always creates an "IIOP_CLEAR_TEXT" listening port. That port is put into IOP profiles of object
+     * references exported by an ORB.
+     * <p>
+     * 
+     * If
+     * 
+     * <code>createServerSocket(String type, int port)</code>
+     * 
+     * is passed <code>IIOP_CLEAR_TEXT</code> as a <code>type</code> argument it should then call and return
+     * 
+     * <code>new java.net.ServerSocket(int port)</code>
+     * <p>
+     * 
+     * If
+     * 
+     * <code>createSocket(SocketInfo socketInfo)</code>
+     * 
+     * is passed <code>IIOP_CLEAR_TEXT</code> in <code>socketInfo.getType()</code> it should then call and return
+     * 
+     * <pre>
+     * new java.net.Socket(socketInfo.getHost(), socketInfo.getPort())
+     * </pre>
+     * 
+     */
+    public static final String IIOP_CLEAR_TEXT = "IIOP_CLEAR_TEXT";
+
+    /**
+     * DEPRECATED. DEPRECATED. DEPRECATED. DEPRECATED.
+     * <p>
+     * 
+     * This method is used by a server side ORB.
+     * <p>
+     * 
+     * When an ORB needs to create a listen socket on which connection requests are accepted it calls
+     * 
+     * <code>createServerSocket(String type, int port)</code>.
+     * 
+     * The type argument says which type of socket should be created.
+     * <p>
+     * 
+     * The interpretation of the type argument is the responsibility of an instance of <code>ORBSocketFactory</code>,
+     * except in the case of <code>IIOP_CLEAR_TEXT</code>, in which case a standard server socket should be created.
+     * <p>
+     * 
+     * 
+     * Multiple Server Port API:
+     * <p>
+     * 
+     * In addition to the IIOP_CLEAR_TEXT listening port, it is possible to specify that an ORB listen on additional
+     * port of specific types.
+     * <p>
+     * 
+     * This API allows one to specify that an ORB should create an X, or an X and a Y listen socket.
+     * <p>
+     * 
+     * If X, to the user, means SSL, then one just plugs in an SSL socket factory.
+     * <p>
+     * 
+     * Or, another example, if X and Y, to the user, means SSL without authentication and SSL with authentication
+     * respectively, then they plug in a factory which will either create an X or a Y socket depending on the type given
+     * to
+     * 
+     * <code>createServerSocket(String type, int port)</code>.
+     * <p>
+     * 
+     * One specifies multiple listening ports (in addition to the default IIOP_CLEAR_TEXT port) using the
+     * 
+     * <code>ORBConstants.LISTEN_SOCKET_PROPERTY</code>
+     * 
+     * property.
+     * <p>
+     * 
+     * Example usage:
+     * <p>
+     * 
+     * <pre>
+     *    ... \
+     *    -Dorg.jboss.com.sun.CORBA.connection.ORBSocketFactoryClass=com.my.MySockFact \
+     *    -Dorg.jboss.com.sun.CORBA.connection.ORBListenSocket=SSL:0,foo:1 \
+     *    ...
+     * </pre>
+     * 
+     * The meaning of the "type" (SSL and foo above) is controlled by the user.
+     * <p>
+     * 
+     * ORBListenSocket is only meaningful for servers.
+     * <p>
+     * 
+     * The property value is interpreted as follows. For each type/number pair:
+     * <p>
+     * 
+     * If number is 0 then use an emphemeral port for the listener of the associated type.
+     * <p>
+     * 
+     * If number is greater then 0 use that port number.
+     * <p>
+     * 
+     * An ORB creates a listener socket for each type specified by the user by calling
+     * 
+     * <code>createServerSocket(String type, int port)</code>
+     * 
+     * with the type specified by the user.
+     * <p>
+     * 
+     * After an ORB is initialized and the RootPOA has been resolved, it is then listening on all the end points which
+     * were specified. It may be necessary to add this additional end point information to object references exported by
+     * this ORB.
+     * <p>
+     * 
+     * Each object reference will contain the ORB's default IIOP_CLEAR_TEXT end point in its IOP profile. To add
+     * additional end point information (i.e., an SSL port) to an IOR (i.e., an object reference) one needs to intercept
+     * IOR creation using an <code>PortableInterceptor::IORInterceptor</code>.
+     * <p>
+     * 
+     * Using PortableInterceptors (with a non-standard extension):
+     * <p>
+     * 
+     * Register an <code>IORInterceptor</code>. Inside its <code>establish_components</code> operation:
+     * 
+     * <pre>
+     * 
+     * org.jboss.com.sun.corba.se.spi.legacy.interceptor.IORInfoExt ext;
+     * ext = (org.jboss.com.sun.corba.se.spi.legacy.interceptor.IORInfoExt) info;
+     * 
+     * int port = ext.getServerPort(&quot;myType&quot;);
+     * 
+     * </pre>
+     * 
+     * Once you have the port you may add information to references created by the associated adapter by calling
+     * 
+     * <code>IORInfo::add_ior_component</code>
+     * <p>
+     * <p>
+     * 
+     * 
+     * Note: if one is using a POA and the lifespan policy of that POA is persistent then the port number returned by
+     * <code>getServerPort</code> <em>may</em> be the corresponding ORBD port, depending on whether the POA/ORBD
+     * protocol is the present port exchange or if, in the future, the protocol is based on object reference template
+     * exchange. In either case, the port returned will be correct for the protocol. (In more detail, if the port
+     * exchange protocol is used then getServerPort will return the ORBD's port since the port exchange happens before,
+     * at ORB initialization. If object reference exchange is used then the server's transient port will be returned
+     * since the templates are exchanged after adding components.)
+     * <p>
+     * 
+     * 
+     * Persistent object reference support:
+     * <p>
+     * 
+     * When creating persistent object references with alternate type/port info, ones needs to configure the ORBD to
+     * also support this alternate info. This is done as follows:
+     * <p>
+     * 
+     * - Give the ORBD the same socket factory you gave to the client and server.
+     * <p>
+     * 
+     * - specify ORBListenSocket ports of the same types that your servers support. You should probably specify explicit
+     * port numbers for ORBD if you embed these numbers inside IORs.
+     * <p>
+     * 
+     * Note: when using the port exchange protocol the ORBD and servers will exchange port numbers for each given type
+     * so they know about each other. When using object reference template exchange the server's transient ports are
+     * contained in the template.
+     * <p>
+     * 
+     * 
+     * - specify your <code>BadServerIdHandler</code> (discussed below) using the
+     * 
+     * <code>ORBConstants.BAD_SERVER_ID_HANDLER_CLASS_PROPERTY</code>
+     * <p>
+     * 
+     * Example:
+     * <p>
+     * 
+     * <pre>
+     * 
+     * -Dorg.jboss.com.sun.CORBA.POA.ORBBadServerIdHandlerClass=corba.socketPersistent.MyBadServerIdHandler
+     * 
+     * </pre>
+     * 
+     * The <code>BadServerIdHandler</code> ...
+     * <p>
+     * 
+     * See <code>org.jboss.com.sun.corba.se.impl.activation.ServerManagerImpl.handle</code> for example code on writing
+     * a bad server id handler. NOTE: This is an unsupported internal API. It will not exist in future releases.
+     * <p>
+     * 
+     * 
+     * Secure connections to other services:
+     * <p>
+     * 
+     * If one wants secure connections to other services such as Naming then one should configure them with the same
+     * 
+     * <code>SOCKET_FACTORY_CLASS_PROPERTY</code> and <code>LISTEN_SOCKET_PROPERTY</code>
+     * 
+     * as used by other clients and servers in your distributed system.
+     * <p>
+     * 
+     */
+    public ServerSocket createServerSocket(String type, int port) throws IOException;
+
+    /**
+     * DEPRECATED. DEPRECATED. DEPRECATED. DEPRECATED.
+     * <p>
+     * 
+     * This method is used by a client side ORB.
+     * <p>
+     * 
+     * Each time a client invokes on an object reference, the reference's associated ORB will call
+     * 
+     * <pre>
+     *    getEndPointInfo(ORB orb,
+     *                    IOR ior,
+     *                    SocketInfo socketInfo)
+     * </pre>
+     * 
+     * NOTE: The type of the <code>ior</code> argument is an internal representation for efficiency. If the
+     * <code>ORBSocketFactory</code> interface ever becomes standardized then the <code>ior</code> will most likely
+     * change to a standard type (e.g., a stringified ior, an <code>org.omg.IOP.IOR</code>, or ...).
+     * <p>
+     * 
+     * Typically, this method will look at tagged components in the given <code>ior</code> to determine what type of
+     * socket to create.
+     * <p>
+     * 
+     * Typically, the <code>ior</code> will contain a tagged component specifying an alternate port type and number.
+     * <p>
+     * 
+     * This method should return an <code>SocketInfo</code> object containing the type/host/port to be used for the
+     * connection.
+     * 
+     * If there are no appropriate tagged components then this method should return an <code>SocketInfo</code> object
+     * with the type <code>IIOP_CLEAR_TEXT</code> and host/port from the ior's IOP profile.
+     * <p>
+     * 
+     * If the ORB already has an existing connection to the returned type/host/port, then that connection is used.
+     * Otherwise the ORB calls
+     * 
+     * <code>createSocket(SocketInfo socketInfo)</code>
+     * <p>
+     * 
+     * The <code>orb</code> argument is useful for handling the <code>ior</code> argument.
+     * <p>
+     * 
+     * The <code>SocketInfo</code> given to <code>getEndPointInfo</code> is either null or an object obtained from
+     * <code>GetEndPointInfoAgainException</code>
+     * <p>
+     * 
+     */
+    public SocketInfo getEndPointInfo(org.omg.CORBA.ORB orb, IOR ior, SocketInfo socketInfo);
+
+    /**
+     * DEPRECATED. DEPRECATED. DEPRECATED. DEPRECATED.
+     * <p
+     * 
+     * This method is used by a client side ORB.
+     * <p>
+     * 
+     * This method should return a client socket of the given type/host/port.
+     * <p>
+     * 
+     * Note: the <code>SocketInfo</code> is the same instance as was returned by <code>getSocketInfo</code> so extra
+     * cookie info may be attached.
+     * <p>
+     * 
+     * If this method throws GetEndPointInfoAgainException then the ORB calls <code>getEndPointInfo</code> again,
+     * passing it the <code>SocketInfo</code> object contained in the exception.
+     * <p>
+     * 
+     */
+    public Socket createSocket(SocketInfo socketInfo) throws IOException, GetEndPointInfoAgainException;
+}
+
+// End of file.

Added: projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/org/jboss/com/sun/corba/se/spi/transport/ORBSocketFactory.java
===================================================================
--- projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/org/jboss/com/sun/corba/se/spi/transport/ORBSocketFactory.java	                        (rev 0)
+++ projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/org/jboss/com/sun/corba/se/spi/transport/ORBSocketFactory.java	2011-06-07 19:56:26 UTC (rev 111550)
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package org.jboss.com.sun.corba.se.spi.transport;
+
+import java.io.IOException;
+import java.net.InetSocketAddress;
+import java.net.Socket;
+import java.net.SocketException;
+import java.net.ServerSocket;
+
+import org.jboss.com.sun.corba.se.pept.transport.Acceptor;
+import org.jboss.com.sun.corba.se.spi.orb.ORB;
+
+/**
+ * @author Harold Carr
+ */
+public interface ORBSocketFactory
+{
+    public void setORB(ORB orb);
+
+    public ServerSocket createServerSocket(String type, InetSocketAddress inetSocketAddress) throws IOException;
+
+    public Socket createSocket(String type, InetSocketAddress inetSocketAddress) throws IOException;
+
+    public void setAcceptedSocketOptions(Acceptor acceptor, ServerSocket serverSocket, Socket socket)
+            throws SocketException;
+
+}
+
+// End of file.

Added: projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/org/jboss/com/sun/corba/se/spi/transport/SocketInfo.java
===================================================================
--- projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/org/jboss/com/sun/corba/se/spi/transport/SocketInfo.java	                        (rev 0)
+++ projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/org/jboss/com/sun/corba/se/spi/transport/SocketInfo.java	2011-06-07 19:56:26 UTC (rev 111550)
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package org.jboss.com.sun.corba.se.spi.transport;
+
+public interface SocketInfo
+{
+    // Endpoint types known in advance.
+    // If you change the value of this constant then update
+    // activation.idl accordingly. It has a duplicate definition
+    // to avoid a compilation dependency.
+
+    public static final String IIOP_CLEAR_TEXT = "IIOP_CLEAR_TEXT";
+
+    public String getType();
+
+    public String getHost();
+
+    public int getPort();
+}



More information about the jboss-cvs-commits mailing list