From 4c992115eb659a49506d19fbb8c116bc44f7421d Mon Sep 17 00:00:00 2001 From: rfeng Date: Thu, 11 Mar 2010 04:45:13 +0000 Subject: Allows RMIHost to return mapped uri git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@921690 13f79535-47bb-0310-9956-ffa450edef68 --- .../sca/binding/rmi/provider/RMIServiceBindingProvider.java | 4 +++- .../sca/provider/DefaultProviderFactoryExtensionPoint.java | 11 +++++++++++ .../tuscany/sca/provider/ProviderFactoryExtensionPoint.java | 10 ++++++++++ .../org/apache/tuscany/sca/host/rmi/DefaultRMIHost.java | 13 ++++++++++--- .../org/apache/tuscany/sca/host/rmi/ExtensibleRMIHost.java | 8 ++++---- .../main/java/org/apache/tuscany/sca/host/rmi/RMIHost.java | 3 ++- 6 files changed, 40 insertions(+), 9 deletions(-) (limited to 'sca-java-2.x/trunk/modules') diff --git a/sca-java-2.x/trunk/modules/binding-rmi-runtime/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIServiceBindingProvider.java b/sca-java-2.x/trunk/modules/binding-rmi-runtime/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIServiceBindingProvider.java index 2dbdbea67b..7e343e4413 100644 --- a/sca-java-2.x/trunk/modules/binding-rmi-runtime/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIServiceBindingProvider.java +++ b/sca-java-2.x/trunk/modules/binding-rmi-runtime/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIServiceBindingProvider.java @@ -77,7 +77,9 @@ public class RMIServiceBindingProvider implements ServiceBindingProvider { try { - rmiHost.registerService(binding.getURI(), rmiProxy); + String uri = rmiHost.registerService(binding.getURI(), rmiProxy); + // Update the binding with the physical URI + binding.setURI(uri); } catch (RMIHostException e) { throw new ServiceRuntimeException(e); diff --git a/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/DefaultProviderFactoryExtensionPoint.java b/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/DefaultProviderFactoryExtensionPoint.java index 8621baca2e..6aad6786e3 100644 --- a/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/DefaultProviderFactoryExtensionPoint.java +++ b/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/DefaultProviderFactoryExtensionPoint.java @@ -102,6 +102,17 @@ public class DefaultProviderFactoryExtensionPoint implements ProviderFactoryExte loadProviderFactories(); return policyProviderFactories; } + + public

Collection

getProviderFactories(Class

factoryType) { + loadProviderFactories(); + List

factories = new ArrayList

(); + for (ProviderFactory pf : providerFactories.values()) { + if (factoryType.isInstance(pf)) { + factories.add(factoryType.cast(pf)); + } + } + return factories; + } /** * Load provider factories declared under META-INF/services. diff --git a/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/ProviderFactoryExtensionPoint.java b/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/ProviderFactoryExtensionPoint.java index d8f9973338..54dd6cc912 100644 --- a/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/ProviderFactoryExtensionPoint.java +++ b/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/ProviderFactoryExtensionPoint.java @@ -19,6 +19,7 @@ package org.apache.tuscany.sca.provider; +import java.util.Collection; import java.util.List; @@ -60,4 +61,13 @@ public interface ProviderFactoryExtensionPoint { */ List getPolicyProviderFactories(); + /** + * Get a collection of provider factories by the factory type + * @param

+ * @param factoryType The factory type such as BindingProviderFactory + * @return a collection of provider factories of the factory type + */ +

Collection

getProviderFactories(Class

factoryType); + + } diff --git a/sca-java-2.x/trunk/modules/host-rmi/src/main/java/org/apache/tuscany/sca/host/rmi/DefaultRMIHost.java b/sca-java-2.x/trunk/modules/host-rmi/src/main/java/org/apache/tuscany/sca/host/rmi/DefaultRMIHost.java index cc819d194c..dade6ef7f3 100644 --- a/sca-java-2.x/trunk/modules/host-rmi/src/main/java/org/apache/tuscany/sca/host/rmi/DefaultRMIHost.java +++ b/sca-java-2.x/trunk/modules/host-rmi/src/main/java/org/apache/tuscany/sca/host/rmi/DefaultRMIHost.java @@ -19,7 +19,9 @@ package org.apache.tuscany.sca.host.rmi; +import java.net.InetAddress; import java.net.URI; +import java.net.UnknownHostException; import java.rmi.AlreadyBoundException; import java.rmi.NoSuchObjectException; import java.rmi.NotBoundException; @@ -53,7 +55,7 @@ public class DefaultRMIHost implements RMIHost { this.socketFactory = new RMISocketFactoryImpl(CONNECTION_TIMEOUT); } - public void registerService(String uri, Remote serviceObject) throws RMIHostException, RMIHostRuntimeException { + public String registerService(String uri, Remote serviceObject) throws RMIHostException, RMIHostRuntimeException { RMIURI rmiURI = new RMIURI(uri); Registry registry; @@ -69,6 +71,7 @@ public class DefaultRMIHost implements RMIHost { } registry.bind(rmiURI.serviceName, serviceObject); logger.info("RMI service registered: " + rmiURI); + return rmiURI.toString(); } catch (AlreadyBoundException e) { throw new RMIHostException(e); } catch (RemoteException e) { @@ -134,11 +137,14 @@ public class DefaultRMIHost implements RMIHost { private String serviceName; private RMIURI(String uriStr) { - this.uriStr = uriStr; URI uri = URI.create(uriStr); host = uri.getHost(); if (host == null) { - host = "localhost"; + try { + host = InetAddress.getLocalHost().getHostName(); + } catch (UnknownHostException e) { + host = "localhost"; + } } port = uri.getPort(); if (port <= 0) { @@ -149,6 +155,7 @@ public class DefaultRMIHost implements RMIHost { path = path.substring(1); } serviceName = path; + this.uriStr = "rmi://" + host + ":" + port + "/" + serviceName; } public String toString() { diff --git a/sca-java-2.x/trunk/modules/host-rmi/src/main/java/org/apache/tuscany/sca/host/rmi/ExtensibleRMIHost.java b/sca-java-2.x/trunk/modules/host-rmi/src/main/java/org/apache/tuscany/sca/host/rmi/ExtensibleRMIHost.java index 2f3e2311ed..d1936518ca 100644 --- a/sca-java-2.x/trunk/modules/host-rmi/src/main/java/org/apache/tuscany/sca/host/rmi/ExtensibleRMIHost.java +++ b/sca-java-2.x/trunk/modules/host-rmi/src/main/java/org/apache/tuscany/sca/host/rmi/ExtensibleRMIHost.java @@ -35,16 +35,16 @@ public class ExtensibleRMIHost implements RMIHost { this.rmiHosts = rmiHosts; } - public void registerService(String uri, Remote serviceObject) throws RMIHostException, RMIHostRuntimeException { + public String registerService(String uri, Remote serviceObject) throws RMIHostException, RMIHostRuntimeException { if (rmiHosts.getRMIHosts().isEmpty()) { - throw new RMIHostException("No RMI host available"); + throw new RMIHostException("No RMI host is available"); } - getDefaultHost().registerService(uri, serviceObject); + return getDefaultHost().registerService(uri, serviceObject); } public void unregisterService(String uri) throws RMIHostException, RMIHostRuntimeException { if (rmiHosts.getRMIHosts().isEmpty()) { - throw new RMIHostException("No RMI host available"); + throw new RMIHostException("No RMI host is available"); } getDefaultHost().unregisterService(uri); } diff --git a/sca-java-2.x/trunk/modules/host-rmi/src/main/java/org/apache/tuscany/sca/host/rmi/RMIHost.java b/sca-java-2.x/trunk/modules/host-rmi/src/main/java/org/apache/tuscany/sca/host/rmi/RMIHost.java index bf8659c254..df3f074168 100644 --- a/sca-java-2.x/trunk/modules/host-rmi/src/main/java/org/apache/tuscany/sca/host/rmi/RMIHost.java +++ b/sca-java-2.x/trunk/modules/host-rmi/src/main/java/org/apache/tuscany/sca/host/rmi/RMIHost.java @@ -34,10 +34,11 @@ public interface RMIHost { * * @param uri the URI against which the server is to be registered * @param serviceObject the server object to be registered + * @return TODO * @throws RMIHostException * @throws RMIHostRuntimeException */ - void registerService(String uri, Remote serviceObject) throws RMIHostException, RMIHostRuntimeException; + String registerService(String uri, Remote serviceObject) throws RMIHostException, RMIHostRuntimeException; /** * Unregister a service registered under the given service name and port number -- cgit v1.2.3