reimplemented bean lookup to avoid getBeanNamesForType(Object.class)

This commit is contained in:
Juergen Hoeller 2009-12-13 23:30:07 +00:00
parent dc6c1dc727
commit 1b8a67d5d7
1 changed files with 30 additions and 18 deletions

View File

@ -16,6 +16,7 @@
package org.springframework.remoting.jaxws;
import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
@ -26,9 +27,11 @@ import javax.xml.ws.WebServiceProvider;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.BeanFactoryAware;
import org.springframework.beans.factory.CannotLoadBeanClassException;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.ListableBeanFactory;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
/**
* Abstract exporter for JAX-WS services, autodetecting annotated service beans
@ -99,8 +102,13 @@ public abstract class AbstractJaxWsServiceExporter implements BeanFactoryAware,
* @see #publishEndpoint
*/
public void publishEndpoints() {
String[] beanNames = this.beanFactory.getBeanNamesForType(Object.class, false, false);
Set<String> beanNames = new LinkedHashSet<String>(this.beanFactory.getBeanDefinitionCount());
beanNames.addAll(Arrays.asList(this.beanFactory.getBeanDefinitionNames()));
if (this.beanFactory instanceof ConfigurableBeanFactory) {
beanNames.addAll(Arrays.asList(((ConfigurableBeanFactory) this.beanFactory).getSingletonNames()));
}
for (String beanName : beanNames) {
try {
Class<?> type = this.beanFactory.getType(beanName);
WebService wsAnnotation = type.getAnnotation(WebService.class);
WebServiceProvider wsProviderAnnotation = type.getAnnotation(WebServiceProvider.class);
@ -121,6 +129,10 @@ public abstract class AbstractJaxWsServiceExporter implements BeanFactoryAware,
this.publishedEndpoints.add(endpoint);
}
}
catch (CannotLoadBeanClassException ex) {
// ignore beans where the class is not resolvable
}
}
}
/**