如何实现向后兼容的soap webservice(基于java)?

2024-04-10

我们的产品之一使用合同最后方法发布网络服务。这已经成为一个真正的问题,因为一旦我们发布产品的新版本,我们所有的客户(ws 客户)都必须重建他们的客户端应用程序。这是由于所有名称空间更改都是自动生成的 wsdls 的成本。我们使用 Axis1 作为 javatowsdl。我一直在寻找一种好的方法/工具来为此开发向后兼容的网络服务。

即 9.3 版本的客户端仍然可以访问 10.0 服务,因为它们会错过一些功能,这很好。但它们应该能够正常运行而不会损坏。

我确实明白整个问题是由于我们的合同最后方法造成的(如果我错了,请纠正我)。因此,如果解决方案是采用契约优先的 Web 服务,我可以使用哪些工具和技术?另外,围绕合同优先的最佳实践是什么?

提前致谢。


正如您已经意识到的,建议使用契约优先(或自上而下)的方法来开发 Web 服务。这意味着手动定义 WSDL 接口并使用自动工具基于此文档生成 Web 服务的 Java 骨架。

您的 WSDL 必须遵守WS-I标准 http://www.ws-i.org/确保不同平台上的客户端之间的互操作性。您可以使用SOAP-UI http://www.soapui.org/测试您的 WSDL 是否与标准兼容。

对于 Skeleton 一代,您可以使用多种 Web 服务运行时 API:例如 Apache Axis 和 JAX-WS。我个人更喜欢 JAX-WS,因为它是一个 Java 标准,并且受到所有 Java EE 容器的支持。每个容器都提供了Skeleton生成的工具,Weblogic有一些不错的Ant Task http://docs.oracle.com/cd/E23943_01/web.1111/e13758/setenv.htm#i214591为此,但还有WS-导入 http://docs.oracle.com/javase/6/docs/technotes/tools/share/wsimport.html这是容器中立的。

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

如何实现向后兼容的soap webservice(基于java)? 的相关文章

  • 如何在使用 Web 服务时获取会话对象?

    如何在使用 Web 服务时获取会话对象 服务在两个程序之间调用 如何在使用 Web 服务时获取用户会话对象 不可能使用请求对象获取会话 因为当我们谈论服务时不会有请求或响应 如果您正在与JAX WS https jax ws dev jav
  • 使 @Schedule 在集群环境中仅运行一次

    我有两个 tomee 实例集群 每个都有一个方法注释如下 Schedule dayOfWeek public void runMeDaily 我只想每天运行一次这个方法 每天不两次 每个实例一次 我可以使用此处描述的标志仅在一个WebLog
  • Spring Security从数据库获取用户ID

    我正在使用 spring security 进行身份验证并成功获得User目的 org springframework security core userdetails User 任何我需要的地方 但我想要UserId还有 春天里没有的U
  • spring 如何允许延迟加载?

    如果您在 Dao 方法中有一个调用 例如 伪代码 return getHibernateTemplate 通过 id 获取 现在假设该实体有一个延迟加载的集合 使用 hibernateTemplate 辅助方法从 Dao 返回后 会话如何保
  • Spring-boot中将redis-cache反序列化为对象的问题

    我在 Client 类中使用 JsonNode 来处理 MySQL 8 数据库中 JSON 类型的字段 即使对于 API 请求 它也能很好地工作 但是当我使用 Redis 启用缓存 我确实需要它 时 我注意到 Redis 无法序列化 Jso
  • 如果基于 Spring 注解的控制器位于 jar 文件内,则该控制器无法工作

    我的子模块中有一些基于注释的控制器 这些模块作为 jar 文件部署 jar 文件中基于注释的控制器未加载到 spring 配置中 我使用 Eclipse 中的导出实用程序手动导出 jar 文件 有人遇到过这个问题吗 当您使用 Eclipse
  • 在 eclipse 之外将 Spring MVC 应用程序部署到 tomcat 的幕后会发生什么?

    我猜想使用像 eclipse 这样很棒的 IDE 的一个缺点是你会忽略应用程序幕后发生的事情 我是一名 Ruby 开发人员 所以不是一名 Java 老手 所以我一直在用 java 编写一个项目 并使用 spring 框架进行 IOC 和 M
  • Spring Neo4j不保存数据

    我创建了新的应用程序 它应该通过存储库将 Person 对象保存到 neo4j 中 但是当我使用 findAll 方法时 我没有任何项目 我正在使用 Spring Boot 这是我的配置 package com example import
  • 是否可以@Lazy 初始化Spring @Value?

    是否有可能 Lazy初始化一个Spring Value e g Lazy Value someConfig private String someConfig 我特别提到的场景是通过 JNDI 设置的变量 并且一个嵌入式 Tomcat 容器
  • 不同帐户上的 Spring Boot、JmsListener 和 SQS 队列

    我正在尝试开发一个 Spring Boot 1 5 应用程序 该应用程序需要侦听来自两个不同 AWS 帐户的 SQS 队列 是否可以使用 JmsListener 注解创建监听器 我已检查权限是否正确 我可以使用 getQueueUrl 获取
  • 如何通过 javaconfig 使用 SchedulerFactoryBean.schedulerContextAsMap

    我使用 Spring 4 0 并将项目从 xml 移至 java config 除了访问 Service scheduleService 带注释的类来自QuartzJobBean executeInternal 我必须让它工作的 xml 位
  • 如何在 Spring 中禁用使用 @Component 注释创建 bean?

    我的项目中有一些用于重构逻辑的通用接口 它看起来大约是这样的 public interface RefactorAwareEntryPoint default boolean doRefactor if EventLogService wa
  • 强制 WCF 在进入实际函数之前对每个请求调用一个方法

    我有一个具有许多不同功能的 RESTful WCF 服务 对于每个函数 我需要调用我编写的身份验证方法 我可以在每个请求上手动调用此方法 但我一直在寻找一种方法来强制 WCF 引擎在输入这些函数之前调用此方法 有谁知道这是否可能 Cheer
  • 创建一个 JSON 对象以在 Spring Boot 测试中发布

    我想编写基本测试来使用 JSON 负载在 users URL 上执行 POST 请求来创建用户 我找不到如何将新对象转换为 JSON 到目前为止有这么多 这显然是错误的 但解释了目的 Test public void createUser
  • Java Spring Web 服务客户端故障处理

    我编写了一个与 UPS Web 服务配合使用的 Web 服务客户端 使用 Java Spring 和 JAXB Marshaller 当我发送有效请求时 一切正常 当我发送无效请求 重量 gt 150 磅 时 UPS Web 服务会响应 S
  • Java WebServiceException:JBoss 未定义端口类型

    我是 JBoss Web 服务的新手 客户端正在连接到基于 EJB3 的 Web 服务 使用 JAX WS 的 JBoss AS 5 和 JDK 6 我遇到了以下异常 Exception in thread main javax xml w
  • Eclipse 依赖项目未复制到 WTP 部署

    在我们开始使用 Gradle 之前 Eclipse 中的多项目 10 12 开发工作已通过 WTP 项目成功部署到内部 Tomcat 7 服务器之一 我们发现这对于开发非常有用 Gradle 启动并运行后 依赖项目的 jar 文件不再被复制
  • Spring Rest POST Json RequestBody 不支持内容类型

    当我尝试使用 post 方法发布新对象时 RequestBody 无法识别 contentType Spring 已经配置完毕 POST 可以与其他对象一起使用 但不能与这个特定对象一起使用 org springframework web
  • 部署 JSF 复合组件以供共享使用

    我从事一个 Java EE 项目 该项目计划在未来变得相当大 我想共享尽可能多的代码 这不仅包括 Java 代码 还包括 UI 元素的代码 我考虑开发基于明确定义的主题 如用户管理 税收 产品 的企业组件 这些组件在消息 bean 等的基础
  • JBoss 5 截断 base64 cookie 字符串的尾部 =

    从 JBoss 4 升级到 JBoss 5 后 我注意到最烦人的回归 它截断 base64 cookie 值的尾部等号 我花了很长时间才明白问题不是我的代码而是 JBoss 的 我用 google 搜索了一下 发现这是一个已知的问题issu

随机推荐

  • sudoers 是世界可写错误[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我更改了 Ubuntu 12 10 上的 ect 文件权限 以便我可以编辑 bash bashrc 以便 Neo4j 可以看到 JVM 但现在当我尝试
  • ORACLE MINUS 关键字的 ANSI SQL 标准

    我有一个查询 我想要与 ANSI SQL 标准兼容 在这个 使用 oracle 查询 MINUS key work 我想要 ANSI SQL 这是 放置于 MINUS 关键字 SELECT F selected UPPER a busine
  • Angular-UI 路由器:嵌套视图不起作用

    构建多步骤表单 向导 原来是在关注本教程 https scotch io tutorials angularjs multi step form using ui router 效果很好 但我现在正在尝试对其进行调整 以便将第一步嵌入到主页
  • Perl 正则表达式在相同情况下替换

    如果您在 perl 中有一个简单的正则表达式替换 如下所示 line s JAM AAA g 我将如何修改它 以便它查看匹配并使替换与匹配的大小写相同 例如 JAM 将变成 AAA jam 会变成 aaa 基于 Unicode 的解决方案
  • Git 子模块初始化异步

    当我跑步时git submodule update init第一次在有很多子模块的项目上 这通常需要很多时间 因为大多数子模块都存储在缓慢的公共服务器上 是否可以异步初始化子模块 从 Git 2 8 开始 你可以这样做 git submod
  • PHP/C++:将值注入 EXE 文件 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想动态地将一个值注入到 EXE 文件中 我过去接触过的一家公司给了我一个 EXE 存根 我可以在用户下载它之前使用 PHP 动态注入
  • Qt 构建可以开箱即用静态链接?

    我使用 Qt 构建了一个小型应用程序 事实证明 我需要从头开始重新配置 Qt 以便能够静态链接 我以前做过 我记得那是一个非常漫长的过程 那么有人知道提供开箱即用静态链接功能的 Qt SDK 安装程序吗 此外马丁 贝克特的回答 https
  • 比较 data.table 的两行并仅显示有差异的列[重复]

    这个问题在这里已经有答案了 我得到了一个大的 data table 其中包含不同类型的列 例如数字或字符 例如 data table name c A A val1 c 1 2 val2 c 3 3 cat c u v name val1
  • 在 Apache POI 3.9 中,使用 autosizeColumn 同一列上的图像会被拉伸

    我在 Excel 工作表中有一张图像和图像下方的一些文本 当我将 autoSizeColumn 应用于文本呈现的列时 图像也会被拉伸 我还将锚类型设置为 2 但这并不能保护图像调整大小 我在这里发布一些示例代码 public static
  • Spark:JavaRDD 到 JavaPairRDD<>

    我有一个JavaRDD
  • 透明精灵表有黑色背景

    我正在使用 Python 和 Pygame 开发游戏 我为其中一个敌人创建了一个精灵表 并使其代码正常工作 问题是图像看起来有黑色背景 即使它是透明图像 它的代码是这样的 enemySheet pygame image load resou
  • 使用 selenium Java (Mac OSX) 将 Firefox 浏览器置于前端

    我正在使用三个火狐驱动程序实例进行自动化 我需要将当前活动的火狐浏览器置于前面 因为我正在使用一些机器人类进行某些操作 我曾在 mac 中尝试过针对 google chrome 的 java 脚本警报 相同的操作 并且工作正常 在 Wind
  • 在Android 4.2 API 17上读取Sqlite Cursor carsh

    我有一张桌子145行 当我尝试获取所有数据时crashed on android 4 2 BUT它工作得很好android 4 4 emulator public ArrayList
  • 为什么我不能得到与 GridSearchCV 相同的结果?

    GridSearchCV只返回每个参数化的分数 我还希望看到 Roc 曲线以更好地理解结果 为了做到这一点 我想采用性能最好的模型GridSearchCV并重现这些相同的结果 但缓存概率 这是我的代码 import numpy as np
  • 超低延迟硬实时多线程 x86 代码的意外周期性行为

    我正在具有 RT 优先级的专用 CPU 上循环运行代码以进行多次迭代 并希望长时间观察其行为 我发现代码有一个非常奇怪的周期性行为 简而言之 这就是代码的作用 Arraythread while 1 if flag Multiply mat
  • 通过透明 Windows 窗体防止鼠标点击

    我正在制作一个小工具 用于在浮动侧边栏中切换 笔 按钮后用鼠标在屏幕上绘图 我已经做到了这一点 请不要笑 方法是使用最顶层的窗口窗体及其背景 因为它的透明键覆盖整个屏幕 当我处于绘图模式时 我需要使鼠标不会点击表单到下面的内容上 我尝试按照
  • 如何搜索一长串 JavaScript 对象以查找“sent: 0”的第一个实例

    这里有一个主要的循环问题 我的数据如下所示 var mailouts signUp date sent 1 lesson1 sent 1 time 20 lesson2 sent 0 time 20 lesson3 sent 0 time
  • Haxe - 创建 C++ 独立可执行文件

    我编写了一个 haxe 程序 尝试与远程服务器进行通信 我能够成功编译到 C 目标 该可执行文件在我的系统上运行得很好 但是 当我尝试在另一个 Windows 盒子上运行相同的命令时 它失败并出现以下错误 错误 无法加载模块 std soc
  • 是否可以重新排序或忽略控制器路由中的参数?

    问题标题是我能想到的最明确的 但为了清楚起见 这里有一个用例 示例 假设我定义以下路线来显示一篇文章 Route get article slug id ArticleController show class ArticleControl
  • 如何实现向后兼容的soap webservice(基于java)?

    我们的产品之一使用合同最后方法发布网络服务 这已经成为一个真正的问题 因为一旦我们发布产品的新版本 我们所有的客户 ws 客户 都必须重建他们的客户端应用程序 这是由于所有名称空间更改都是自动生成的 wsdls 的成本 我们使用 Axis1