Swordfish Documentation: Architecture: Internal Service Proxy
From Eclipsepedia
Contents |
Overview
The internal service proxy allows plugins to access the NMR inside Swordfish.
Description
Component diagrams
Sketch of сomponent сlasses for internal Service Proxy Plugin
Example of ServiceProxy usage:
- proxy injection (at runtime available as OSGi service):
<osgi:reference id="serviceProxy"
interface="org.eclipse.swordfish.core.proxy.ServiceProxy" />
<bean id="ASFRegistryProvider"
class="org.eclipse.swordfish.internal.resolver.backend.remote.ASFRegistryProvider"
p:proxy-ref="serviceProxy"/>
public class ASFRegistryProvider extends AbstractDocumentProvider {
private ServiceProxy proxy;
@Override
public Collection<ServiceDescription<?>> getServiceProviderDescriptions(QName interfaceName) {
String res = null;
try {
res = proxy.invokeRequestResponseOperation(
QName.valueOf("{http://services.sopware.org/registry/ServiceRegistryProvider/1.0}ServiceRegistryProvider"),
QName.valueOf("{http://services.sopware.org/registry/ServiceRegistryProvider/1.0}xlookUp_serviceProvider"),
"<inMessage/>");
} catch (Exception e) {
e.printStackTrace();
}
// further processing...
return null;
}
public void setProxy(ServiceProxy proxy) {
this.proxy = proxy;
}
}
During invocation ServiceProxy performs the following steps:
- creates new NMR Exchange for provided operation;
- looks up outbound endpoint from the NMR using provided service name;
- sends exchange to NMR according to selected message exchange pattern (e.g. "http://www.w3.org/ns/wsdl/in-out").
NOTE: Current version of proxy assumes that outbound endpoint of target service is already registered within ServiceMix NMR.
