java - 在 Wildfly 中安装自定义 JAX-RS JSON 反/序列化

标签 java module jax-rs wildfly

假设我们的情况是 .ear 应用程序包含多个 .war.jar,我们在其中控制 JSON 反/序列化我们的 REST 端点中的对象通过自定义 javax.ws.rs.ext.Provider 打包在一个特定 .jar 中,并使用我们的 .ear 部署为 lib .

现在,当我们即将使用上述自定义反/序列化来扩展部署数量时,我们寻找一种减少工件大小的方法,我基本上想到了三种可能性,其中只有两种可行,一种似乎也可行冗长才是真正的解决方案:

  • 部署 javax.ws.rs.ext.Provider-artifact,每个 .ear 都引用它(缺点:多个 .ear-包含相同 .jar 库的工件)。

  • javax.ws.rs.ext.Provider-artifact 安装为全局 Wildfly 模块,并通过 jboss-deployment-struct.xml 添加依赖项> (缺点:.ear-artifact 可以部署,但反序列化/序列化无法按预期工作,因为 Wildfly 模块不是已部署的 .ear 类路径的一部分code>-application 和 javax.ws.rs.ext.Provider 不会在部署时自动注册)。

  • javax.ws.rs.ext.Provider-artifact 安装为“普通”Wildfly 模块并引用自定义 javax.ws.rs.ext.Provider 在 REST 配置类的 getClasses 方法中,该方法扩展了 javax.ws.rs.core.Application (缺点:我们必须列出每个 javax .ws.rs.ext.Provider 和 REST 端点显式地代替目前使用的自动发现)。

是否有第四种可能性来完成此任务,或者是否对上述三种可能性进行了任何调整?我没有找到任何解决方案来解决这个(我认为)在 Wildfly 中安装“全局”自定义 javax.ws.rs.ext.Provider 的基本任务。

最佳答案

解决方案非常容易找到,很难正确找到:

或者:

  1. javax.ws.rs.ext.Provider -artifact 正在由名为 javax.ws.rs.ext.Providers 的文件扩展放置于 /META-INF/services其中所有类都用 javax.ws.rs.ext.Provider 注释列出了它们的完全限定类名。
  2. .ear - Artifact jboss-deployment-structure.xml由两个依赖项扩展:
    1. <module name="<module-name>" slot="main" />对于<deployment> -元素。
    2. <module name="<module-name>" slot="main" services="import" />对于.war -文物<sub-deployment> -(隐式)使用 javax.ws.rs.ext.Provider 的类的元素- Artifact 。

或者:

  1. 离开javax.ws.rs.ext.Provider - 与以前一样的 Artifact 。
  2. .ear - Artifact jboss-deployment-structure.xml由两个依赖项扩展:
    1. <module name="<module-name>" slot="main" annotations="true" />对于<deployment> -元素。
    2. <module name="<module-name>" slot="main" />对于.war -文物<sub-deployment> -(隐式)使用 javax.ws.rs.ext.Provider 的类的元素- Artifact 。

关于java - 在 Wildfly 中安装自定义 JAX-RS JSON 反/序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40148156/

相关文章:

vb.net - 如何在类和模块中定义 Main 方法?

java - 将参数传递给 Jersey 资源

java - 等待数据准备好(Java)

java - SWT:获取 "settings"的系统镜像(cog?)

macros - Julia ·朗 : Change value of module level global at import time

android - 尝试将新模块添加到项目中。无法读取脚本

java - Jersey 的动态实例级授权(基于 id)

web-services - 如何使用 JAX-RS Web 服务打开 JSF 页面?

java - 在哪里可以下载 Java SE 的源代码(java.lang、java.util 等)?

java - JPG 与 Android 上的 WebP 性能对比