You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by ri...@apache.org on 2007/01/17 19:51:32 UTC

svn commit: r497125 - in /incubator/openejb/trunk/openejb2/modules: openejb-corba/src/main/java/org/apache/openejb/corba/ openejb-yoko/src/main/java/org/apache/openejb/yoko/

Author: rickmcguire
Date: Wed Jan 17 10:51:30 2007
New Revision: 497125

URL: http://svn.apache.org/viewvc?view=rev&rev=497125
Log:
OPENEJB-445 Generated IORs do not have a zero IIOP profile port value when SSL transports are used.


Modified:
    incubator/openejb/trunk/openejb2/modules/openejb-corba/src/main/java/org/apache/openejb/corba/Adapter.java
    incubator/openejb/trunk/openejb2/modules/openejb-corba/src/main/java/org/apache/openejb/corba/AdapterEntity.java
    incubator/openejb/trunk/openejb2/modules/openejb-corba/src/main/java/org/apache/openejb/corba/AdapterStateful.java
    incubator/openejb/trunk/openejb2/modules/openejb-corba/src/main/java/org/apache/openejb/corba/AdapterStateless.java
    incubator/openejb/trunk/openejb2/modules/openejb-corba/src/main/java/org/apache/openejb/corba/CORBABean.java
    incubator/openejb/trunk/openejb2/modules/openejb-corba/src/main/java/org/apache/openejb/corba/TSSBean.java
    incubator/openejb/trunk/openejb2/modules/openejb-corba/src/main/java/org/apache/openejb/corba/TSSLink.java
    incubator/openejb/trunk/openejb2/modules/openejb-yoko/src/main/java/org/apache/openejb/yoko/ORBConfigAdapter.java

Modified: incubator/openejb/trunk/openejb2/modules/openejb-corba/src/main/java/org/apache/openejb/corba/Adapter.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb2/modules/openejb-corba/src/main/java/org/apache/openejb/corba/Adapter.java?view=diff&rev=497125&r1=497124&r2=497125
==============================================================================
--- incubator/openejb/trunk/openejb2/modules/openejb-corba/src/main/java/org/apache/openejb/corba/Adapter.java (original)
+++ incubator/openejb/trunk/openejb2/modules/openejb-corba/src/main/java/org/apache/openejb/corba/Adapter.java Wed Jan 17 10:51:30 2007
@@ -65,6 +65,8 @@
                 parentPOA.create_id_assignment_policy(IdAssignmentPolicyValue.USER_ID),
                 parentPOA.create_implicit_activation_policy(ImplicitActivationPolicyValue.NO_IMPLICIT_ACTIVATION),
             };
+            // make sure we create this with the appropriate ORB-specific policies. 
+            policies = tssLink.addPolicyOverrides(policies); 
             homePOA = parentPOA.create_POA(tssLink.getContainerId(), parentPOA.the_POAManager(), policies);
 
             homePOA.the_POAManager().activate();

Modified: incubator/openejb/trunk/openejb2/modules/openejb-corba/src/main/java/org/apache/openejb/corba/AdapterEntity.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb2/modules/openejb-corba/src/main/java/org/apache/openejb/corba/AdapterEntity.java?view=diff&rev=497125&r1=497124&r2=497125
==============================================================================
--- incubator/openejb/trunk/openejb2/modules/openejb-corba/src/main/java/org/apache/openejb/corba/AdapterEntity.java (original)
+++ incubator/openejb/trunk/openejb2/modules/openejb-corba/src/main/java/org/apache/openejb/corba/AdapterEntity.java Wed Jan 17 10:51:30 2007
@@ -68,6 +68,10 @@
                 homePOA.create_id_assignment_policy(IdAssignmentPolicyValue.USER_ID),
                 homePOA.create_implicit_activation_policy(ImplicitActivationPolicyValue.NO_IMPLICIT_ACTIVATION),
             };
+            
+            // make sure we create this with the appropriate ORB-specific policies. 
+            policies = tssLink.addPolicyOverrides(policies); 
+            
             poa = homePOA.create_POA(tssLink.getContainerId(), homePOA.the_POAManager(), policies);
             poa.set_servant_manager(new ObjectActivator());
 

Modified: incubator/openejb/trunk/openejb2/modules/openejb-corba/src/main/java/org/apache/openejb/corba/AdapterStateful.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb2/modules/openejb-corba/src/main/java/org/apache/openejb/corba/AdapterStateful.java?view=diff&rev=497125&r1=497124&r2=497125
==============================================================================
--- incubator/openejb/trunk/openejb2/modules/openejb-corba/src/main/java/org/apache/openejb/corba/AdapterStateful.java (original)
+++ incubator/openejb/trunk/openejb2/modules/openejb-corba/src/main/java/org/apache/openejb/corba/AdapterStateful.java Wed Jan 17 10:51:30 2007
@@ -68,6 +68,8 @@
                 homePOA.create_id_assignment_policy(IdAssignmentPolicyValue.USER_ID),
                 homePOA.create_implicit_activation_policy(ImplicitActivationPolicyValue.NO_IMPLICIT_ACTIVATION),
             };
+            // make sure we create this with the appropriate ORB-specific policies. 
+            policies = tssLink.addPolicyOverrides(policies); 
             poa = homePOA.create_POA(tssLink.getContainerId(), homePOA.the_POAManager(), policies);
             poa.set_servant_manager(new ObjectActivator());
 

Modified: incubator/openejb/trunk/openejb2/modules/openejb-corba/src/main/java/org/apache/openejb/corba/AdapterStateless.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb2/modules/openejb-corba/src/main/java/org/apache/openejb/corba/AdapterStateless.java?view=diff&rev=497125&r1=497124&r2=497125
==============================================================================
--- incubator/openejb/trunk/openejb2/modules/openejb-corba/src/main/java/org/apache/openejb/corba/AdapterStateless.java (original)
+++ incubator/openejb/trunk/openejb2/modules/openejb-corba/src/main/java/org/apache/openejb/corba/AdapterStateless.java Wed Jan 17 10:51:30 2007
@@ -53,6 +53,8 @@
                 homePOA.create_id_assignment_policy(IdAssignmentPolicyValue.USER_ID),
                 homePOA.create_implicit_activation_policy(ImplicitActivationPolicyValue.NO_IMPLICIT_ACTIVATION),
             };
+            // make sure we create this with the appropriate ORB-specific policies. 
+            policies = tssLink.addPolicyOverrides(policies); 
             poa = homePOA.create_POA(tssLink.getContainerId(), homePOA.the_POAManager(), policies);
 
             poa.the_POAManager().activate();

Modified: incubator/openejb/trunk/openejb2/modules/openejb-corba/src/main/java/org/apache/openejb/corba/CORBABean.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb2/modules/openejb-corba/src/main/java/org/apache/openejb/corba/CORBABean.java?view=diff&rev=497125&r1=497124&r2=497125
==============================================================================
--- incubator/openejb/trunk/openejb2/modules/openejb-corba/src/main/java/org/apache/openejb/corba/CORBABean.java (original)
+++ incubator/openejb/trunk/openejb2/modules/openejb-corba/src/main/java/org/apache/openejb/corba/CORBABean.java Wed Jan 17 10:51:30 2007
@@ -33,6 +33,7 @@
 import org.apache.openejb.corba.security.config.tss.TSSTransportMechConfig;
 import org.apache.openejb.corba.util.Util;
 import org.omg.CORBA.ORB;
+import org.omg.CORBA.Policy;
 import org.omg.PortableServer.POA;
 import org.omg.PortableServer.POAHelper;
 
@@ -62,6 +63,9 @@
     private POA rootPOA;
     private NameService nameService;
     private AbstractName abstractName;
+    // ORB-specific policy overrides we need to add to POA policies created by 
+    // child TSSBeans.  
+    private Policy[] policyOverrides = null; 
 
     public CORBABean() {
         this.classLoader = null;
@@ -70,6 +74,7 @@
         this.listenerPort = -1;
         this.host = null;
         this.abstractName = null;
+        this.policyOverrides = null; 
     }
 
     /**
@@ -99,6 +104,7 @@
         this.nameService = nameService;
         this.host = host;
         this.listenerPort = listenerPort;
+        this.policyOverrides = null; 
     }
 
     /**
@@ -299,5 +305,40 @@
      */
     public String getHost() {
         return host;
+    }
+    
+    /**
+     * Set a set of policy overrides to be used with 
+     * this ORB instance.  These are normally set by 
+     * the ORBConfigAdapter instance when the ORB 
+     * is created. 
+     * 
+     * @param overrides The new override list.
+     */
+    public void setPolicyOverrides(Policy[] overrides) {
+        policyOverrides = overrides; 
+    }
+    
+    /**
+     * Add the policy overrides (if any) to the list 
+     * of policies used to create a POA instance.
+     * 
+     * @param policies The base set of policies.
+     * 
+     * @return A new Policy array with the overrides added.  Returns
+     *         the same array if no overrides are required.
+     */
+    public Policy[] addPolicyOverrides(Policy[] policies) {
+        // just return the same list of no overrides exist 
+        if (policyOverrides == null) {
+            return policies; 
+        }
+        
+        Policy[] newPolicies = new Policy[policies.length + policyOverrides.length]; 
+        
+        System.arraycopy(policies, 0, newPolicies, 0, policies.length); 
+        System.arraycopy(policyOverrides, 0, newPolicies, policies.length, policyOverrides.length); 
+        
+        return newPolicies; 
     }
 }

Modified: incubator/openejb/trunk/openejb2/modules/openejb-corba/src/main/java/org/apache/openejb/corba/TSSBean.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb2/modules/openejb-corba/src/main/java/org/apache/openejb/corba/TSSBean.java?view=diff&rev=497125&r1=497124&r2=497125
==============================================================================
--- incubator/openejb/trunk/openejb2/modules/openejb-corba/src/main/java/org/apache/openejb/corba/TSSBean.java (original)
+++ incubator/openejb/trunk/openejb2/modules/openejb-corba/src/main/java/org/apache/openejb/corba/TSSBean.java Wed Jan 17 10:51:30 2007
@@ -121,6 +121,9 @@
                     rootPOA.create_id_assignment_policy(IdAssignmentPolicyValue.USER_ID),
                     rootPOA.create_implicit_activation_policy(ImplicitActivationPolicyValue.NO_IMPLICIT_ACTIVATION),
             };
+            // there may be ORB-specific policy overrides required. 
+            policies = server.addPolicyOverrides(policies); 
+            
             localPOA = rootPOA.create_POA(POAName, rootPOA.the_POAManager(), policies);
 
             localPOA.the_POAManager().activate();
@@ -191,5 +194,17 @@
             }
         }
     }
-
+    
+    /**
+     * Add the policy overrides (if any) to the list 
+     * of policies used to create a POA instance.
+     * 
+     * @param policies The base set of policies.
+     * 
+     * @return A new Policy array with the overrides added.  Returns
+     *         the same array if no overrides are required.
+     */
+    public Policy[] addPolicyOverrides(Policy[] policies) {
+        return server.addPolicyOverrides(policies); 
+    }
 }

Modified: incubator/openejb/trunk/openejb2/modules/openejb-corba/src/main/java/org/apache/openejb/corba/TSSLink.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb2/modules/openejb-corba/src/main/java/org/apache/openejb/corba/TSSLink.java?view=diff&rev=497125&r1=497124&r2=497125
==============================================================================
--- incubator/openejb/trunk/openejb2/modules/openejb-corba/src/main/java/org/apache/openejb/corba/TSSLink.java (original)
+++ incubator/openejb/trunk/openejb2/modules/openejb-corba/src/main/java/org/apache/openejb/corba/TSSLink.java Wed Jan 17 10:51:30 2007
@@ -37,6 +37,8 @@
 import org.apache.openejb.transaction.TransactionPolicyType;
 import org.apache.geronimo.gbean.GBeanLifecycle;
 
+import org.omg.CORBA.Policy;
+
 /**
  * @version $Rev$ $Date$
  */
@@ -144,5 +146,17 @@
     ProxyInfo getProxyInfo() {
         return ejb.getProxyInfo();
     }
-
+    
+    /**
+     * Add the policy overrides (if any) to the list 
+     * of policies used to create a POA instance.
+     * 
+     * @param policies The base set of policies.
+     * 
+     * @return A new Policy array with the overrides added.  Returns
+     *         the same array if no overrides are required.
+     */
+    public Policy[] addPolicyOverrides(Policy[] policies) {
+        return tssBean.addPolicyOverrides(policies); 
+    }
 }

Modified: incubator/openejb/trunk/openejb2/modules/openejb-yoko/src/main/java/org/apache/openejb/yoko/ORBConfigAdapter.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb2/modules/openejb-yoko/src/main/java/org/apache/openejb/yoko/ORBConfigAdapter.java?view=diff&rev=497125&r1=497124&r2=497125
==============================================================================
--- incubator/openejb/trunk/openejb2/modules/openejb-yoko/src/main/java/org/apache/openejb/yoko/ORBConfigAdapter.java (original)
+++ incubator/openejb/trunk/openejb2/modules/openejb-yoko/src/main/java/org/apache/openejb/yoko/ORBConfigAdapter.java Wed Jan 17 10:51:30 2007
@@ -16,30 +16,22 @@
   */
 package org.apache.openejb.yoko;
 
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
+import java.net.UnknownHostException;
 import java.util.ArrayList;
 import java.util.Enumeration;
-import java.util.Iterator;
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Properties;
-import java.net.InetSocketAddress;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.omg.CORBA.ORB;
-import org.omg.CSIIOP.EstablishTrustInClient;
-import org.omg.Security.Confidentiality;
-import org.omg.Security.EstablishTrustInTarget;
-import org.omg.Security.NoProtection;
-
 import org.apache.geronimo.gbean.GBeanLifecycle;
-
 import org.apache.geronimo.security.deploy.DefaultDomainPrincipal;
 import org.apache.geronimo.security.deploy.DefaultPrincipal;
 import org.apache.geronimo.security.deploy.DefaultRealmPrincipal;
-
 import org.apache.openejb.corba.CORBABean;
 import org.apache.openejb.corba.CSSBean;
 import org.apache.openejb.corba.NameService;
@@ -49,13 +41,21 @@
 import org.apache.openejb.corba.security.config.css.CSSCompoundSecMechConfig;
 import org.apache.openejb.corba.security.config.css.CSSCompoundSecMechListConfig;
 import org.apache.openejb.corba.security.config.css.CSSConfig;
-import org.apache.openejb.corba.security.config.tss.TSSConfig;
 import org.apache.openejb.corba.security.config.ssl.SSLConfig;
+import org.apache.openejb.corba.security.config.tss.TSSConfig;
 import org.apache.openejb.corba.security.config.tss.TSSSSLTransportConfig;
 import org.apache.openejb.corba.security.config.tss.TSSTransportMechConfig;
-
 import org.apache.yoko.orb.CosNaming.tnaming.TransientNameService;
 import org.apache.yoko.orb.CosNaming.tnaming.TransientServiceException;
+import org.apache.yoko.orb.OB.ZERO_PORT_POLICY_ID; 
+import org.omg.CORBA.Any;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.Policy;
+import org.omg.CORBA.PolicyError;
+import org.omg.CSIIOP.EstablishTrustInClient;
+import org.omg.Security.Confidentiality;
+import org.omg.Security.EstablishTrustInTarget;
+import org.omg.Security.NoProtection;
 
 
 /**
@@ -124,7 +124,30 @@
      * @exception ConfigException
      */
     public ORB createServerORB(CORBABean server)  throws ConfigException {
-        return createORB(server.getURI(), (ORBConfiguration)server, translateToArgs(server), translateToProps(server));
+        ORB orb = createORB(server.getURI(), (ORBConfiguration)server, translateToArgs(server), translateToProps(server));
+        
+        // check the tss config for a transport mech definition.  If we have one, then 
+        // the port information will be passed in that config, and the port in the IIOP profile 
+        // needs to be zero. 
+        TSSConfig config = server.getTssConfig();
+        TSSTransportMechConfig transportMech = config.getTransport_mech();
+        if (transportMech != null) {
+            if (transportMech instanceof TSSSSLTransportConfig) {
+                Any any = orb.create_any();
+                any.insert_boolean(true);
+
+                try {
+                    Policy portPolicy = orb.create_policy(ZERO_PORT_POLICY_ID.value, any);
+                    Policy[] overrides = new Policy [] { portPolicy }; 
+                    server.setPolicyOverrides(overrides); 
+                } catch (org.omg.CORBA.PolicyError e) {
+                    // shouldn't happen, but we'll let things continue with no policy set. 
+                }
+                
+            }
+        }
+        
+        return orb; 
     }
 
     /**
@@ -294,6 +317,17 @@
         }
         else {
             result.put("yoko.orb.oa.endpoint", "iiop --host " + server.getHost());
+        }
+        
+        // check the tss config for a transport mech definition.  If we have one, then 
+        // the port information will be passed in that config, and the port in the IIOP profile 
+        // needs to be zero. 
+        TSSConfig config = server.getTssConfig();
+        TSSTransportMechConfig transportMech = config.getTransport_mech();
+        if (transportMech != null) {
+            if (transportMech instanceof TSSSSLTransportConfig) {
+                result.put("yoko.orb.policy.zero_port", "true"); 
+            }
         }
 
         if (log.isDebugEnabled()) {