【IT168技术文档】

WebSphere Process Server 是基于服务组件体系结构 (SCA) 和服务数据对象 (SDO) 或业务对象 (BO) 创建和集成服务的平台。在大多数的情况下,在 IBM WebSphere Integration Developer 中使用服务组件、导出和导入时,将会处理与 XML 模式定义(XML Schema Definitions,XSD)组合的 Web 服务描述语言(Web Services Definition Language,WSDL)接口。我将这种类型称为 W 类型的服务。同时,在使用 SCA 和 SDO 之前,已经使用纯 Java 接口和 Java Bean 创建了许多资产和服务。我们将这种类型称为 J 类型的服务。

显然,我们不希望使用新的 SCA 和 SDO 编程模型从头创建所有的服务。相反,我们希望尽可能多地重用 SCA 组件中现有的、基于 Java 的资产。示例是需要调用会话 EJB 的 SCA 组件。此调用需要在 WSDL 类型和 Java 类型之间进行转换。不过,您不能将引用类型为 WSDL 的组件直接连接到具有 Java 接口的另一个组件。这里似乎存在一个缺陷。

在推出 WebSphere Process Server 和 WebSphere Integration Developer 的 6.0.2 版本之前,开发人员主要使用以下两种方法来处理此问题:

直接的解决方案就是编写 SCA 到 Java 的桥接。这需要手动创建中间 POJO(介绍的 WSDL 端口类型),它可以引用 J 类型的组件。但是您需要手动创建 WSDL 本身和对应于 Java Bean 参数的 BO。最重要和最耗时的一部分工作是反复编写 Java Bean 和数据对象的映射代码。

此方法的问题是需要太多的手动步骤和自定义代码,这很容易出错。

另一种方法是利用 WebSphere Integration Developer 中的工具将现有 Java/EJB 资产公开为 Web 服务,这将自动获得 WSDL 接口。获得 SOAP Web 服务接口后,将其与 SCA 组件集成就非常容易了。

此方法需要的手动步骤比其他方法少,但是将所有 Java 资产转换为 Web 服务可能不是一个实际的解决方案;这还会带来其他性能开销。

上述两种方法都不令人十分满意。幸运的是,WebSphere Process Server 和 WebSphere Integration Developer 的 6.0.2 版本引入了在 W 类型的组件和现有 J 类型的接口构件之间进行自动操作和建立中介的功能:在 WebSphere Integration Developer 组装编辑器中拖放 EJB 或 Java 类时,从引用 WSDL 类型接口的组件桥接调用 Java 类型接口的辅助组件是自动生成的。在调用时,此映射组件将 BO 转换为 Java Bean,在 Java 服务上调用相应的方法,并在返回时将 Java Bean 转换回 BO。

此自动功能还为使用相同基础 WebSphere java2WSDL (JAX-RPC 1.1) 工具的桥接组件和 BO 生成 WSDL。

正如您看到的,这是对前一版本的重要改进,它通过更方便地集成 Java 和 J2EE 基础结构和使用自动生成的辅助组件极大地提高了工作效率。而且您再也不用执行低级数据转换和映射任务,使您能够更多地关注业务逻辑开发。

下一部分将描述一种场景,演示如何轻松地使用这一功能。本文假设您对 WebSphere Process Server 编程模型非常了解。

java wps_通过WPS和WID方便地使用Java构件相关推荐

  1. 关于JAVA POI解析WPS docx文档中的table(复杂表格包含单元格横向,纵向的合并)

    关于JAVA POI解析WPS docx文档中的table(复杂表格包含单元格横向,纵向的合并) 首先,关于poi解析表格先阅读一篇他人的博客 使用poi读取word2007(.docx)中的复杂表格 ...

  2. java.lang.NullPointerException: Attempt to invoke virtual method ‘boolean java.lang.String.equals(j

    今天切正式环境出现的空指针 记录一下 下面是错误 java.lang.NullPointerException: Attempt to invoke virtual method 'boolean j ...

  3. Java每日一讲讲什么好_撩课-Java每天10道面试题第1天

    1.简述JDK.JRE.JVM? 一.JDK JDK(Java Development Kit) 是整个JAVA的核心, 包括了Java运行环境(Java Runtime Envirnment), 一 ...

  4. java编写代码用什么_如何学习用Java编写代码:为什么要学习以及从哪里开始

    java编写代码用什么 by John Selawsky 约翰·塞劳斯基(John Selawsky) 如何学习用Java编写代码:为什么要学习以及从哪里开始 (How to learn to cod ...

  5. java怎么打开_java开不了怎么办?java怎么打开?

    我们在打开java软件的时候,总是提示打不开,这可急坏了小伙伴,软件打不开,就无法写程序了,那么接下来,我们就来给大家讲解一下java开不了的解决方法. 1.先保证正确安装了JAVA环境. 2.再打开 ...

  6. java 用程序代码解释继承_关于初级java程序员笔试题

    关于初级java程序员笔试题 Sun 认证Java程序员考试内容涉及Java所有相关知识.编程概念及applet开发技巧.下面是小编整理的关于初级java程序员笔试题,欢迎大家参考! 第一题:判断题 ...

  7. java中是否支持多重继承_java支持多重继承吗 JAVA特性面试题:

    1.简要介绍java程序的健壮性. 答:JAVA程序会在编译和运行的时候自动的检测可能出现的错误,而且它是一种强类型语言,对于类型的检查很严格,而且它的垃圾回收机制也有效的避免了内存的泄漏. 2.为什 ...

  8. java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 解决方法 java.lang.ClassNotFoundException: com.

    java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 解决方法 java.lang.ClassNotFoundException: com.m ...

  9. java rhino js类_让Rhino JS看Java类

    我正在玩 Rhino,我已经成功使用了stdlib中的Java类,但没有使用我编译的Java代码. 例如,这工作正常: print(new java.util.Date()); 但是使用NanoHTT ...

最新文章

  1. tableau系列之如何将甘特图做成瀑布图
  2. 定制jQuery File Upload为微博式单文件上传
  3. 【二分】数列分段(ybtoj 二分-1-1)
  4. Chapter1-5_Speech_Recognition(Alignment of HMM, CTC and RNN-T)
  5. 如何word删除分隔符
  6. 你的学习方法真的有效吗?
  7. VLAN的分类与实验
  8. centos下mysql备份数据库命令_[CentOS]下mysql数据库常用命令总结
  9. 桌面下雪软件测试工程师,桌面下雪
  10. java 进度条 百分比_java怎么让进度条带百分数
  11. LabWindows/CVI入门之第二章:GUI开发
  12. 安卓手机获取root权限
  13. STN网络官方文档复现
  14. 订阅者Subscriber的编程实现
  15. 柠檬水健康问题打包解答
  16. CentOS8下超详细安装配置kubernetes(K8S)
  17. UE4 自定义按键事件(踩坑记录)
  18. 修改织梦dedecms后台默认admin账号的方法
  19. 服务器seo优化,SEO诊断之网站服务器优化
  20. RuntimeError: CUDA error: an illegal memory access was encountered的解决方法

热门文章

  1. 【Flink】SqlValidatorException: Column xxx not found in any table
  2. 95-290-380-源码-内存管理-Buffer-NetworkBufferPool简介
  3. spark学习-34-Spark的BroadcastManager广播管理器
  4. scala学习-scala中的特殊符号使用
  5. qt linux 国际化,多语言,配置CLion管理Qt项目国际化支持
  6. 5款最适合 Windows 命令行/控制台的替代品
  7. Java程序员不可错过的11个IDEA插件
  8. 凉,返回值都是Map类型,还能用Swagger生成在线文档吗?
  9. 涨姿势,简单易懂带你玩转二叉树(图码并茂)
  10. java-不用辅助变量,两变量直接交换