public static bindingTemplate start(UDDIClient client, String cfg_node_name, String endpoint, String keydomain, bool autoregister, String serviceKey, SignatureBehavior behavior) { if (instance == null) { instance = new SubscriptionCallbackListener(); } if (ep != null && ep.State == CommunicationState.Opened) { throw new ServiceAlreadyStartedException(); } Uri url = null; try { url = new Uri(endpoint); } catch (Exception ex) { log.warn("Callback endpoint couldn't be parsed, generating a random one: " + ex.Message); url = new Uri("http://" + GetHostname() + ":" + GetRandomPort(4000) + "/" + Guid.NewGuid().ToString()); } endpoint = url.ToString(); //if (endpoint == null || endpoint.equals("")) { // endpoint = "http://" + GetHostname() + ":" + GetRandomPort(url.getPort()) + "/" + UUID.randomUUID().toString(); int attempts = 5; if (ep == null) { while ((ep == null || ep.State != CommunicationState.Opened) && attempts > 0) { try { if (endpoint.Contains("localhost")) { endpoint = endpoint.Replace("localhost", GetHostname()); } ep = new ServiceHost(instance, new Uri[] { new Uri(endpoint) }); //ep = Endpoint.publish(endpoint, instance); ep.Open(); callback = endpoint; } catch (Exception be) { log.info("trouble starting callback at " + endpoint + ", trying again with a random port: " + be.Message); log.debug(be); attempts--; //if (be instanceof java.net.BindException) { url = new Uri("http://" + url.Host + ":" + GetRandomPort(url.Port) + "/" + url.PathAndQuery); endpoint = url.ToString(); } } } if (ep == null || ep.State != CommunicationState.Opened) { log.warn("Unable to start callback endpoint, aborting"); throw new SecurityException("unable to start endpoint, view previous errors for reason"); } log.info("Endpoint started at " + callback); bindingTemplate bt = new bindingTemplate(); bt.Item = (new accessPoint(callback, "endPoint")); tModelInstanceInfo instanceInfo = new tModelInstanceInfo(); instanceInfo.tModelKey = ("uddi:uddi.org:transport:http"); bt.tModelInstanceDetails = new tModelInstanceInfo[] { instanceInfo }; bt.serviceKey = (serviceKey); if (keydomain.EndsWith(":")) { bt.bindingKey = (keydomain + GetHostname() + "_Subscription_Callback"); } else { bt.bindingKey = (keydomain + ":" + GetHostname() + "_Subscription_Callback"); } if (autoregister) { bt = registerBinding(client, cfg_node_name, bt, behavior); } return(bt); }
public static bindingTemplate start(UDDIClient client, String cfg_node_name, String endpoint, String keydomain, bool autoregister, String serviceKey, SignatureBehavior behavior) { if (instance == null) { instance = new SubscriptionCallbackListener(); } if (ep != null && ep.State == CommunicationState.Opened) { throw new ServiceAlreadyStartedException(); } Uri url = null; try { url = new Uri(endpoint); } catch (Exception ex) { log.warn("Callback endpoint couldn't be parsed, generating a random one: " + ex.Message); url = new Uri("http://" + GetHostname() + ":" + GetRandomPort(4000) + "/" + Guid.NewGuid().ToString()); } endpoint = url.ToString(); //if (endpoint == null || endpoint.equals("")) { // endpoint = "http://" + GetHostname() + ":" + GetRandomPort(url.getPort()) + "/" + UUID.randomUUID().toString(); int attempts = 5; if (ep == null) { while ((ep == null || ep.State != CommunicationState.Opened) && attempts > 0) { try { if (endpoint.Contains("localhost")) endpoint = endpoint.Replace("localhost", GetHostname()); ep = new ServiceHost(instance, new Uri[] { new Uri(endpoint) }); //ep = Endpoint.publish(endpoint, instance); ep.Open(); callback = endpoint; } catch (Exception be) { log.info("trouble starting callback at " + endpoint + ", trying again with a random port: " + be.Message); log.debug(be); attempts--; //if (be instanceof java.net.BindException) { url = new Uri("http://" + url.Host + ":" + GetRandomPort(url.Port) + "/" + url.PathAndQuery); endpoint = url.ToString(); } } } if (ep == null || ep.State != CommunicationState.Opened) { log.warn("Unable to start callback endpoint, aborting"); throw new SecurityException("unable to start endpoint, view previous errors for reason"); } log.info("Endpoint started at " + callback); bindingTemplate bt = new bindingTemplate(); bt.Item = (new accessPoint(callback, "endPoint")); tModelInstanceInfo instanceInfo = new tModelInstanceInfo(); instanceInfo.tModelKey = ("uddi:uddi.org:transport:http"); bt.tModelInstanceDetails = new tModelInstanceInfo[] { instanceInfo }; bt.serviceKey = (serviceKey); if (keydomain.EndsWith(":")) { bt.bindingKey = (keydomain + GetHostname() + "_Subscription_Callback"); } else { bt.bindingKey = (keydomain + ":" + GetHostname() + "_Subscription_Callback"); } if (autoregister) { bt = registerBinding(client, cfg_node_name, bt, behavior); } return bt; }