Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果在ear模块中使用,Swagger不会识别@Api注释,但在战争中部署了Swagger_Java_Swagger_Wildfly 10 - Fatal编程技术网

Java 如果在ear模块中使用,Swagger不会识别@Api注释,但在战争中部署了Swagger

Java 如果在ear模块中使用,Swagger不会识别@Api注释,但在战争中部署了Swagger,java,swagger,wildfly-10,Java,Swagger,Wildfly 10,我们正在使用Wildlfy 10和Swagger 1.5.12(Swagger 2.0规范) 在我们的应用程序中,我们正在ear中部署Web服务的契约和实现,以确保能够在此级别上交换实现。 暴露我们Web服务的war打包在同一个ear中,并且可以访问其所有模块 招摇过市定义放置在war文件中。当webservice端点按预期工作时,swagger.json只包含一般信息,不包含Api文档 调试一段时间后,我得到了以下结果: 扫描器使用reflections.getTypesAnnotatedW

我们正在使用Wildlfy 10和Swagger 1.5.12(Swagger 2.0规范) 在我们的应用程序中,我们正在ear中部署Web服务的契约和实现,以确保能够在此级别上交换实现。 暴露我们Web服务的war打包在同一个ear中,并且可以访问其所有模块

招摇过市定义放置在war文件中。当webservice端点按预期工作时,swagger.json只包含一般信息,不包含Api文档

调试一段时间后,我得到了以下结果:

  • 扫描器使用
    reflections.getTypesAnnotatedWith(Api.class)

  • 尝试生成配置之后,他们正在使用
    cls.getAnnotation(annotationClass)
    或者
    cls.getAnnotations()
    annotation=metaAnnotation.annotationType().GetAnnotationClass)两者都返回null

在进一步调试之后,我将其范围缩小到这样一个事实,即附加到类的注释由ear类加载器加载,而swagger使用war类加载器(因为它被放置在war中)。 这与war模块使用不同的类加载器是一致的

其他问题都得到了答复

我认为您最终会遇到多类加载器问题的其他问题

老实说,当您在多个类加载器中加载同一个类时,很容易产生其他副作用,如静态复制等。 这就是为什么我认为在异国情调的场景(比如构建系统集成)中使用swagger的开发人员应该被警告,库使用反射进行代码分析,因此类加载器很重要。

在我们的战争中部署契约和ejb模块解决了这个问题,但不幸的是,在我们的体系结构中没有有效的解决方案

问题:

  • 在war和ear模块中,是否有一种(非黑客的)方法可以使用相同的类加载器在ear模块中加载swagger注释jar

  • 有没有可能通过调整昂首阔步的配置来解决这个问题?(调整实现以不使用反射只是最后的手段)

  • 这能被看作是一种狂妄自大的错误吗