Weblogic 12.2.1.3 从 Moxy 到 Jackson

2023-12-05

我想将 JSON 解析器从 Moxy 更改为 Jackson,并且我遵循了共享库方法但没有任何效果,还是用了Moxy。

Note:共享库不是必需的!

The shared library

我创建了一个具有以下依赖项和描述符的 Maven 项目。

pom.xml

 <properties>
    <jackson.annotations.release>2.8.6</jackson.annotations.release>
    <jersey.version>2.22.4</jersey.version>
 </properties>

 <dependencies>
    <dependency>
        <groupId>com.fasterxml.jackson.module</groupId>
        <artifactId>jackson-module-jaxb-annotations</artifactId>
        <version>${jackson.annotations.release}</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.jaxrs</groupId>
        <artifactId>jackson-jaxrs-json-provider</artifactId>
        <version>${jackson.annotations.release}</version>
    </dependency>

    <!-- Jersey dependencies -->
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet</artifactId>
        <version>${jersey.version}</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-client</artifactId>
        <version>${jersey.version}</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-multipart</artifactId>
        <version>${jersey.version}</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-json-jackson</artifactId>
        <version>${jersey.version}</version>
    </dependency>
</dependency>

weblogic.xml

 <container-descriptor>
    <prefer-application-packages>
        <!-- apis -->
        <package-name>javax.ws.rs.*</package-name>

        <!-- guava -->
        <package-name>com.google.common.*</package-name>

        <!-- jersey providers -->
        <package-name>org.glassfish.jersey.*</package-name>
        <package-name>jersey.repackaged.*</package-name>

        <!-- hk2 -->
        <package-name>org.jvnet.hk2.*</package-name>
        <package-name>org.jvnet.hk2.tiger_types.*</package-name>
        <package-name>org.glassfish.hk2.*</package-name>
        <package-name>javassist.*</package-name>

        <!-- media providers -->
        <!--<package-name>org.eclipse.persistence.jaxb.rs.*</package-name>-->
        <package-name>com.fasterxml.jackson.*</package-name>

        <!-- wls -->
        <package-name>weblogic.jaxrs.api.client.*</package-name>
        <package-name>weblogic.jaxrs.internal.api.client.*</package-name>
        <package-name>weblogic.jaxrs.dispatch.*</package-name>
        <package-name>weblogic.jaxrs.monitoring.util.*</package-name>
    </prefer-application-packages>
</container-descriptor>

MANIFEST.MF

Manifest-Version: 1.0
Implementation-Title: Jackson Weblogic
Implementation-Version: 1.0
Specification-Title: Jackson Weblogic
Extension-Name: jackson-weblogic
Specification-Version: 1.0

Web Application

我添加web.xmlweblogic.xml.

web.xml

<servlet>
    <servlet-name>com.dummy.MyApplication</servlet-name>
        <init-param>
            <param-name>jersey.config.server.provider.classnames</param-name>
            <param-value>com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider</param-value>
        </init-param>
</servlet>

<servlet-mapping>
    <servlet-name>com.dummy.MyApplication</servlet-name>
    <url-pattern>/api/*</url-pattern>
</servlet-mapping>

weblogic.xml

<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app">
    <library-ref>
        <library-name>jstl</library-name>
        <specification-version>1.2</specification-version>
        <implementation-version>1.2</implementation-version>
        <exact-match>false</exact-match>
    </library-ref>
    <library-ref>
        <library-name>jackson-weblogic</library-name>
        <specification-version>1.0</specification-version>
        <exact-match>false</exact-match>
    </library-ref>
</weblogic-web-app>

Then I reference in the weblogic.xml the shared library, but Moxy is still used. Have I done something wrong?

Update: I have added the web.xml and the weblogic.xml of the web application.

Solution

我已经检查了文件夹oracle_common\modules我已经找到了所有Jackson需要依赖。所以我更喜欢配置Jersey禁用MOXy如下:

import javax.ws.rs.core.Application;
public class MyApplication extends Application
{
    @Override
    public Map<String, Object> getProperties()
    {
        Map<String, Object> proprties = new HashMap<>();
        proprties.put("jersey.config.server.disableMoxyJson", true);

        return proprties;
    }
}

注意:

  • 该方法getProperties()附带javax.ws.rs 2.0;
  • no specific shared library is necessary for Jackson, but just for jstl and jax-rs 2.0;
  • 里面没有任何信息web.xml是必须的;
  • 据@abbas报道,JAX-RS 2.0默认带有Weblogic 12.2.1.3.0,在我的例子中,我有一个传递依赖javax.ws.rs:jsr311-api所以方法getProperties()没有被调用。

最终的 weblogic.xml

<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app">

    <context-root>/web-app</context-root>
    <container-descriptor>
        <prefer-application-packages>
            <package-name>org.apache.commons.net.*</package-name>
        </prefer-application-packages>
    </container-descriptor>

    <library-ref>
        <library-name>jstl</library-name>
        <specification-version>1.2</specification-version>
        <implementation-version>1.2</implementation-version>
        <exact-match>false</exact-match>
    </library-ref>
</weblogic-web-app>

在 pom.xml 中提及 JAX-RS 2.0 作为依赖项

<dependency>
    <groupId>javax.ws.rs</groupId>
    <artifactId>javax.ws.rs-api</artifactId>
    <version>2.0.1</version>
    <scope>provided</scope>
</dependency>

在 WebLogic 12.2.1 中,您不需要将其部署为共享库。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Weblogic 12.2.1.3 从 Moxy 到 Jackson 的相关文章

随机推荐

  • 为什么我的烧瓶表单验证返回不是有效的选择?

    我一直试图找出为什么我的 Flask 表单无法正确验证我的选择字段选择 即使这些选择来自选择字段选项 我的假设是 从服务器传回时的选择选项是 unicode 并且正在与作为字符串的选择进行比较 但是 我认为 coerce str 可以解决这
  • 为什么自动变量如果不设置就会包含垃圾?

    在 C 编程语言 第三版和第 32 页中 我看到了一些让我感到困惑的行 因为自动变量随着函数调用而出现和消失 所以它们 从一次调用到下一次调用 不保留它们的值 并且必须 在每个条目上明确设置 如果未设置 它们将包含 垃圾 是不是说对于下面的
  • sys.argv 在 python PyQt4 中的用途是什么

    在编程方面我还是个初学者 尤其在 GUI 编程方面我还是个新手 我正在使用 python 和 PyQt4 并且正在遵循教程指南 下面的代码块相对容易理解 import sys from PyQt4 import QtGui def wind
  • 使用 Swashbuckle.AspNetCore 设置 Swagger UI 的 syntaxHighlight 属性

    我正在一个项目中使用 Swashbuckle AspNetCore 我开始使用的版本是5 5 1当渲染大型主体 20k json 行 的结果时 速度非常合理 数据获取需要 50 毫秒 渲染需要不到一秒 当我升级到5 6 x 语法现在突出显示
  • 显示图像列表时应用程序小部件问题

    我浏览了以下 android 文档 带有集合的应用程序小部件 来创建一个显示文本列表的小部件 一切工作正常 并且正如我所希望的那样工作 现在 我想显示存储在 SD 卡中的图像列表 而不是显示文本列表 那么如何在我已经实现的代码中完成这一点呢
  • 从 C# 中的 vbscript 函数返回一个值

    我正在 C 代码中执行 vbs 文件 以检查用户的真实性 我正在传递用户名和密码值 登录时单击 vbs 将运行并对用户进行身份验证 如果用户不真实 则 vbs 中的函数返回一个值 我如何在 C 代码中获取该值并使用它在应用程序的 UI 中显
  • GWT 2.6 编译时出现 GXT-3.0.1 错误

    自从 GWT 2 6 0 版本放弃了对 ie6 浏览器的支持以来 我当前也使用 GXT 的项目无法编译并出现以下错误 Loading inherited module com sencha gxt ui GXT Loading inheri
  • 如何在 python 脚本中从 shell 脚本返回值

    我有一个 python 脚本 需要来自 shell 脚本的值 以下是 shell 脚本 a sh bin bash return value value some unix command echo value return value 以
  • mysql 哪里匹配

    我的 mysql 和 MATCH AGAINST 出现问题 我的数据库中有这一行 1 Czy jeste my tutaj sami 2 Margit Sanoemo 我想通过以下查询找到它 SELECT FROM data WHERE M
  • 具有意图过滤器的广播接收器?

    她就是我想要实现的目标 当用户尝试从任何应用程序共享某些文本 例如共享推文或链接 时 我的应用程序将出现在共享列表中 如果他选择我的应用程序 将会运行一些简单的代码 例如显示 Toast 就这样 不需要界面或用户界面 我是这样做的 Andr
  • 将静态 boost 构建链接到 VS2012 和 Win32/64 下的静态库

    我正在尝试构建一个静态库作为网络设备的 API 发布 我可以成功编译并链接该库以生成 lib 输出文件 并将它们重新定位到目录结构中 如下所示 EyeLib L Include L PublicInterface h L Lib L deb
  • Android Studio 未启动,无法创建子事件循环,无法锁定系统文件夹

    Android Studio 未启动 无法创建子事件循环 无法锁定系统文件夹 java lang IllegalStateException 无法创建子事件循环 在 io netty util concurrent MultithreadE
  • Javascript GeoLocation 无法在 Chrome 上运行

    我正在尝试获取用户的地理位置 然后进行查询 在 Mozilla Firefox 中它在 Safari 中也可以正常工作 但在 Chrome 中它根本不起作用 window onload function if navigator geolo
  • 有没有办法将当前时间戳添加到 Google Data Studio 报告中?

    我创建了一份简单的报告来跟踪为我们小学筹集的资金 只是一个饼图 从财务主管维护的 Google 表格中选取数据 现在有一个请求在屏幕上添加时间戳 该报告正在通过截图并在各个社交媒体平台上分享来报告进度 经过一番谷歌搜索后 我找不到返回当前时
  • Camel发送多部分/表单数据请求

    我有一个应用程序 它发送多部分 表单数据和一个接收多部分 表单数据请求的应用程序 接收器中的处理 InputStreamCache postBody exchange getIn getBody InputStreamCache class
  • Dojo 1.9:Dijit:禁用使用商店填充的 dijit/Form/FilteringSelect 中的选项项

    我正在尝试禁用 dijit Form FilteringSelect 控件中的选项项 该控件使用store 遵循本指南 http dojotoolkit org documentation tutorials 1 9 selects usi
  • 在 ASP.NET MVC3 中将复杂对象作为参数发送到 Post Action

    我尝试发送一个参数submit按钮来发布操作 所以这是我的示例 using Html BeginForm actionName Search controllerName MyController routeValues new rv 10
  • Visual C++ 2010无法添加资源文件

    i want to add to my project a resource file but vs2010 won t let me what do i do 如果您使用Express Edition 则无法编译资源 可能这是您无法添加资
  • 将照片附加到我的 iPhone 应用程序中的电子邮件

    我有一个 iPhone 应用程序 可以从 App 内置的相册中挑选照片 现在我想添加一个共享按钮 其中包含通过电子邮件共享此照片的选项 我可以通过此代码附加现有照片 MFMailComposeViewController picker MF
  • Weblogic 12.2.1.3 从 Moxy 到 Jackson

    我想将 JSON 解析器从 Moxy 更改为 Jackson 并且我遵循了共享库方法但没有任何效果 还是用了Moxy Note 共享库不是必需的 The shared library 我创建了一个具有以下依赖项和描述符的 Maven 项目