You are viewing a plain text version of this content. The canonical link for it is here.
Posted to yoko-commits@incubator.apache.org by dm...@apache.org on 2006/06/20 18:11:45 UTC
svn commit: r415752 -
/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaServerBinding.java
Author: dmiddlem
Date: Tue Jun 20 11:11:44 2006
New Revision: 415752
URL: http://svn.apache.org/viewvc?rev=415752&view=rev
Log:
Adding support to handle additional object reference types.
Modified:
incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaServerBinding.java
Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaServerBinding.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaServerBinding.java?rev=415752&r1=415751&r2=415752&view=diff
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaServerBinding.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaServerBinding.java Tue Jun 20 11:11:44 2006
@@ -19,6 +19,7 @@
package org.apache.yoko.bindings.corba;
import java.io.IOException;
+import java.util.logging.Logger;
import javax.wsdl.WSDLException;
@@ -30,6 +31,7 @@
import org.objectweb.celtix.bindings.DataBindingCallback;
import org.objectweb.celtix.bindings.ServerBinding;
import org.objectweb.celtix.bindings.ServerBindingEndpointCallback;
+import org.objectweb.celtix.common.logging.LogUtils;
import org.objectweb.celtix.context.OutputStreamMessageContext;
import org.objectweb.celtix.ws.addressing.EndpointReferenceType;
@@ -41,6 +43,8 @@
public class CorbaServerBinding extends AbstractBindingBase implements ServerBinding {
+ private static final Logger LOG = LogUtils.getL7dLogger(CorbaBindingImpl.class);
+
protected final CorbaBindingImpl corbaBinding;
protected ServerBindingEndpointCallback sbeCallback;
private ORB orb;
@@ -50,11 +54,41 @@
sbeCallback = cbFactory;
+ String location = "";
+ AddressType address = CorbaUtils.getCorbaAddressType(bus, ref);
+ if (address != null) {
+ location = address.getLocation();
+ }
+ LOG.info("Service address retrieved: " + location);
+
// TODO: Get any configuration options for the ORB and set the appropriate properties.
java.util.Properties props = System.getProperties();
props.put("org.omg.CORBA.ORBClass", "org.apache.yoko.orb.CORBA.ORB");
props.put("org.omg.CORBA.ORBSingletonClass", "org.apache.yoko.orb.CORBA.ORBSingleton");
props.put("yoko.orb.id", "Yoko-Server-Binding");
+
+ // If we have one of these two types of addresses, we should specify the address
+ // and port information as properties to the ORB during initialization.
+ if (location.startsWith("IOR:")) {
+ // TODO: How to handle this? Can we obtain port/host information from the IOR
+ // or do we just want to let the ORB pick the port and export the IOR to the
+ // Logs?
+ } else if (location.startsWith("corbaloc")) {
+ int corbalocIndex = location.indexOf(":");
+ int protocolIndex = location.indexOf(":", corbalocIndex + 1);
+ String protocol = location.substring(corbalocIndex + 1, protocolIndex);
+ int hostIndex = location.indexOf(":", protocolIndex + 1);
+ String host = location.substring(protocolIndex + 1, hostIndex);
+ // the port number should be followed by a '/' character
+ int portIndex = location.indexOf("/", hostIndex + 1);
+ String port = location.substring(hostIndex + 1, portIndex);
+ if (protocol.length() == 0) {
+ // This means no protocol was defined. Default to iiop
+ protocol = "iiop";
+ }
+ props.put("yoko.orb.oa.endpoint", new String(protocol + " --host " + host + " --port " + port));
+ LOG.info("Set server endpoint: " + protocol + " --host " + host + " --port " + port);
+ }
orb = ORB.init(new String[0], props);
corbaBinding = new CorbaBindingImpl(b, ref, orb, true);
@@ -69,7 +103,8 @@
// TODO - add support for files which contain IORs
return address.startsWith("IOR:")
|| address.startsWith("corbaloc:")
- || address.startsWith("relfile");
+ || address.startsWith("relfile")
+ || address.startsWith("file");
}
// -- from ServerBinding interface --
@@ -109,9 +144,17 @@
if (location.startsWith("relfile:/")) {
String iorFile = location.substring("relfile:/".length(), location.length());
CorbaUtils.exportObjectReferenceToFile(obj, orb, iorFile);
+ } else if (location.startsWith("file:/")) {
+ String iorFile = location.substring("file:/".length(), location.length());
+ CorbaUtils.exportObjectReferenceToFile(obj, orb, iorFile);
} else {
- // TODO: Provide other export mechanisms
+ String ior = orb.object_to_string(obj);
+ address.setLocation(ior);
+ String iorFile = "endpoint.ior";
+ CorbaUtils.exportObjectReferenceToFile(obj, orb, iorFile);
+ LOG.info("Object Reference: " + orb.object_to_string(obj));
}
+ // TODO: Provide other export mechanisms?
poaManager.activate();
} catch (Exception ex) {