2017-02-14 40 views
0

當使用cxf和spring-boot時,是否可以列出所有REST服務?我創建了ApplicationListener<ContextRefreshedEvent>,並且在那裏我想列出爲我的cxf servlet註冊的所有REST服務URL。我試圖戳CXFServlet,ServletContext,cxf Endpoint和cxf Server類,但我無法弄清楚。我也試着回顧wadl生成器(功能)和swagger2功能,但他們創建網址和請求時的內容。可能嗎?在春季開機時列出所有休息服務網址cxf

謝謝。

+0

基本上你只想要URL端點,以顯示?不是內容? –

+0

是的。只是一個像http:// localhost:8080/rest/someService之類的列表 – viliam

回答

0

我會掃描類路徑的@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; 
    }