cxf 命名空间修改

骑猪看日落 2023-05-30 08:52 14阅读 0赞
  • 背景

最近系统改造,由原来的GP库改为大数据查询,于是新建一个基于大数据查询的webService,主要依赖版本如下:

spring:3.1.2

cxf :3.1.6

hadoop:CDH6.2.0

测试环境 容器:weblogic 12.2.13

开发环境容器:tomcat 8.5.20

其它依赖jar包不在一一说明,其中Spring 和 CXF 版本都是和老的项目相同。

  • 问题:

新项目在测试环境生成的soap响应报文和老项目报文命名空间存在差异,见下图(左为新项目在测试环境报文,又为老项目在测试环境报文)<ns0:为cxf 默认的命名空间 <s: 为要求生成的标准的命名空间

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4MzQ3Njg1_size_16_color_FFFFFF_t_70

郁闷的是相同的代码在开发环境返回的报文命名空间和老项目是相同的,cxf 报文入口和输出配置如下

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4MzQ3Njg1_size_16_color_FFFFFF_t_70 1

xmlInterceptor 为报文输出过滤器,在过滤器里打印了响应的报文 开发环境和测试环境生成的报文命名空间还是不一致,查资料分析后应该是在测试服务器上配置中jaxws:properties 标签中的配置没有生效(entry 标签可以修改命名空间为自己想要的名字)

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4MzQ3Njg1_size_16_color_FFFFFF_t_70 2

  • 解决

网上查资料发现有个外国哥们也遇到了差不多相同的问题 地址:http://cxf.547215.n5.nabble.com/How-to-customize-namespaces-position-and-prefix-in-CXF-response-td3423069.html

看到他的问题应该是容器的解析xml的jar包版本太低,查看猜测是项目weblogic.xml配置文件中配置的优先 加载项目的jar包的配置没有生效,所以从新配置weblogic.xml优先加载项目jar包 从新启动发布服务用soapUI验证报文中命名空间已改为自己项目中配置的了。

发表评论

表情:
评论列表 (有 0 条评论,14人围观)

还没有评论,来说两句吧...

相关阅读

    相关 命名空间

    一、为什么使用命名空间 一个大型的工程往往是由若干个人独立完成的,不同的人分别完成不同的部分,最后再组合成一个完整的程序。由于各个头文件是由不同的人设计的,有可能在不同的头

    相关 C++命名空间

    本讲基本要求      \ 掌握:命名空间的作用及定义;如何使用命名空间。      \ 了解:使用早期的函数库  重点、难点      ◆命名空间的作用及定义;

    相关 php命名空间

    php命名空间在php5.3.0中引入,是一个很重要的工具,其作用是按照一种虚拟的层次结构组织php代码,这种层次结构类似操作系统的文件系统目录结构。 命名空间声明语句应该放

    相关 命名空间

    命名空间是 Linux 内核一个强大的特性。每个容器都有自己单独的命名空间,运行在其中的应用都像是在独立的操作系统中运行一样。命名空间保证了容器之间彼此互不影响。

    相关 内核命名空间

    Docker 容器和 LXC 容器很相似,所提供的安全特性也差不多。当用 docker run 启动一个容器时,在后台 Docker 为容器创建了一个独立的命名空间和控制...