将cxf与spring-boot结合使用时,是否可以列出所有REST服务?我创建了ApplicationListener<ContextRefreshedEvent>,并在其中列出了为我的cxf servlet注册的所有REST服务URL。我试图在CXFServletServletContext,cxf Endpoint和cxf Server类中四处摸索,但我无法弄清楚。我也尝试过审查wadl generator(功能)和swagger2功能,但是当请求到来时它们会创建url和内容。可能吗?

谢谢。

最佳答案

我会扫描类路径上的@WebService批注,也许它将对您有所帮助:

    @Autowired
    private ClassPathScanningCandidateComponentProvider annotationScanner;

    public List<ClassDocument> generate(String basePackage) throws ClassNotFoundException {
       Set<BeanDefinition> candidateComponents = annotationScanner.findCandidateComponents(basePackage);

       List<ClassDocument> classDocuments = new ArrayList<>();

       for (BeanDefinition component : candidateComponents) {
           ClassDocument classDocument = new ClassDocument();

           Class<?> beanClass = Class.forName(component.getBeanClassName());

           classDocument.setClassName(beanClass.getName());

           String[] baseUrl = beanClass.getAnnotation(javax.jws.WebService.class).value();

           addMethods(classDocument, beanClass, baseUrl);

           classDocuments.add(classDocument);
       }

       return classDocuments;
   }

10-06 15:58