Today I will show you a more flyweight approach to Web Services Registry. I will use Apache CXF for it.
Bean configuration
Let's start with beans.xml configuration:
:) Simple isn't it?
The implementation
Assume our registry service expects
Summary
I think no comments are required, but if you have any questions give me a shout.
cheers,
Łukasz
Let's start with beans.xml configuration:
<bean id="RegistryServiceBean" class="pl.gda.pg.eti.nuntius.testcases.orders_local_business_process_services.registry.RegistryServiceImpl " /> <jaxws:endpoint id="RegistryService" implementor="#RegistryServiceBean" address="/Registry" />
:) Simple isn't it?
The implementation
Assume our registry service expects
namespace and portType arguments, and returns a list of W3CEndpointReference (WS-Addressing) endpoints:@WebService(name = "Registry", serviceName = "RegistryService")
public class RegistryServiceImpl implements ApplicationContextAware {
private ServletTransportFactory servletTransportFactory;
public List<W3CEndpointReference> findWebServices(
@WebParam(name = "namespace") String namespace,
@WebParam(name = "portType") String portType) {
QName portTypeQName = new QName(namespace, portType);
List<W3CEndpointReference> endpointReferences = new ArrayList<W3CEndpointReference>();
for (ServletDestination servletDestination : servletTransportFactory
.getDestinations()) {
EndpointInfo endpointInfo = servletDestination.getEndpointInfo();
if (portTypeQName.equals(endpointInfo.getInterface().getName())) {
String address = endpointInfo.getAddress();
W3CEndpointReference endpointReference = new W3CEndpointReferenceBuilder()
.address(address).build();
endpointReferences.add(endpointReference);
}
}
return endpointReferences;
}
@Override
@WebMethod(exclude = true)
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
servletTransportFactory = (ServletTransportFactory) applicationContext
.getBean(ServletTransportFactory.class.getCanonicalName());
}
}Summary
I think no comments are required, but if you have any questions give me a shout.
cheers,
Łukasz

0 comments:
Post a Comment