使用DB2自带的SOAP UDF实现业务通知

DB2自带了WebService客户端的实现,具体命令如下:

启用命令:

db2enable_soap_udf -n dbName -u uID -p password [-force]
The parameters have the following definitions:
dbName - The database name to be enabled
uID user - ID for accessing the database
password - The password associated with the user ID
-force - Attempts to drop any existing functions.

如:db2enable_soap_udf -n MS_TRD -u zjyw -p 123456

启用成功后,可调用以下API接口:

db2xml.soaphttpv (VARCHAR(256), VARCHAR(256), VARCHAR(3072))
db2xml.soaphttpv (VARCHAR(256), VARCHAR(256), CLOB(1M))
db2xml.soaphttpc (VARCHAR(256), VARCHAR(256), varchar(3072))
db2xml.soaphttpc (VARCHAR(256), VARCHAR(256), CLOB(1M))
db2xml.soaphttpcl ( VARCHAR(256), VARCHAR(256), varchar(3072))

停用命令:

db2disable_soap_udf -n dbName -u uID -p password

调用步骤:

1、测试webService客户端与服务端的连通性

新建test.sql,编写如下代码:

connect to MS_TRD;
VALUES db2xml.soaphttpc(
‘http://191.168.0.209:8080/SHCH/services/shch‘,
‘http://191.168.0.209:8080/SHCH/services/shch.shchHttpEndpoint/‘,
varchar (‘<SendMessage xmlns="http://axis2.shch.xtp.xquant.com"><action>81</action><requestXml>12345</requestXml></SendMessage>‘
)
);

在DB2命令窗口中执行:db2 -tvf d:\test.sql

成功调用后,就可以继续写DB2函数供存储过程或者触发器调用了

2、新建表TTRD_UDF,具体见使用 DB2 触发器和Java UDF实现业务通知

3、新增10000条测试数据

begin atomic
 declare v_cnt int;
 set v_cnt=0;
 while (v_cnt<10000) do
 insert into TTRD_UDF(CODE, NAME, REMARK) values (rtrim(char(v_cnt+100000)),‘test‘, ‘-‘);
 set v_cnt=v_cnt+1;
 end while;
end

4、新建DB2函数

CREATE FUNCTION zjyw.SENDMESSAGE2 (symbol VARCHAR(100))
RETURNS VARCHAR(1000)
LANGUAGE SQL CONTAINS SQL
EXTERNAL ACTION NOT DETERMINISTIC
RETURN
VALUES db2xml.soaphttpc(
‘http://191.168.0.209:8080/SHCH/services/shch‘,
‘http://191.168.0.209:8080/SHCH/services/shch.shchHttpEndpoint/‘,
varchar (‘<SendMessage xmlns="http://axis2.shch.xtp.xquant.com"><action>81</action><requestXml>‘|| + symbol + ||‘</requestXml></SendMessage>‘ ) ) )

5、新建TTRD_UDF触发器

CREATE TRIGGER ZJYW.AFTER_UPDATE_UFT
AFTER UPDATE OF NAME ON ZJYW.TTRD_UDF
REFERENCING OLD AS OLDROW NEW AS NEWROW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
IF(NEWROW.NAME<>‘‘)
THEN
VALUES(SENDMESSAGE2(OLDROW.CODE));
END IF;
END;

6、测试批量修改10000条数据性能

update zjyw.TTRD_UDF set NAME=‘TEST2‘

全部执行完成耗时36分17秒,性能很一般。

如果WebService服务端未开启时,触发器会超时等待,实用性比较差。

时间: 2024-10-15 00:35:35

使用DB2自带的SOAP UDF实现业务通知的相关文章

使用 DB2 触发器和Java UDF实现业务通知

运用场景: 1.DB2 数据库中的记录被更改.2.如果这个更改使数据记录满足某些基于布尔逻辑的条件,数据库触发器将调用一个 Java UDF.3.Java UDF 使用 WebService接口通知其他服务. 步骤1:创建表create table zjyw.TTRD_UDF(CODE varchar(30) not null,NAME varchar(50) not null,REMARK varchar(100) not null) 步骤2:测试数据insert into zjyw.TTRD

DB2操作

第一章DB2开发基础 在进行DB2应用开发之前,了解DB2应用程序的结构,掌握相关概念,设置开发环境是很必要的.本章主要介绍这几个方面的内容. 1.1 DB2应用程序开发概述 1.1.1 程序结构 DB2应用程序包括以下几个部分: 1.声明和初始化变量 2.连接到数据库 3.执行一个或者多个事务 4.与数据库断开连接 5.结束程序 一个事务是一组数据库操作,在提交给数据库之前,必须确认完全成功执行.在嵌入式SQL应用程序中,当应用程序成功地连接到一个数据库时,一个事务就自动开始了,结束于执行一条

DB2中常用SQL语句

DB2 提供了关连式资料库的查询语言sql(structured query language),是一种非常口语化.既易学又易懂的语法.此一语言几乎是每个资料库系统都必须提供的,用以表示关连式的操作,包含了资料的定义(ddl)以及资料的处理(dml).sql原来拼成sequel,这语言的原型以"系统 r"的名字在 ibm 圣荷西实验室完成,经过ibm内部及其他的许多使用性及效率测试,其结果相当令人满意,并决定在系统r 的技术基础发展出来 ibm 的产品.而且美国国家标准学会(ansi)

LINUX下Db2安装

LINUX下Db2安装 1.解压db2_v101_linuxx64_expc.tar.gz 2.执行./db2_install 3.创建用户组和用户 DB2没有独立的用户管理系统,必须借用OS用户来提供安全性认证,所以这里需要创建 LINUX用户和组.一共创建了3个组,每个组一个用户.其作用和含义分别是: 数据库管理服务器DAS用户 dasusr1 组名: dasadm1 管理实例的用户 db2inst1 组名:db2iadm1 受防护用户 db2fenc1 组名: db2fadm1 [[ema

SOAP扩展PHP轻松实现WebService

最近在一个PHP项目中对接外部接口涉及到WebService,搜索引擎上相关文章不是很多,找到的大都是引用一个号称很强大的开源软件 NuSOAP(下载地址:http://sourceforge.net/projects/nusoap/),即一些类.文章写描述的环境是PHP 4.3,现在都流行PHP 5.2或PHP 5.3了.先拿来试试,运行出错,原来NuSOAP提供的soapclient类与PHP 5中新增了内置的SOAP扩展的SoapClient类冲突了. 虽然NuSOAP号称可以用于所有的P

Db2数据库在Linux下的安装和配置

一.DB2数据库的安装和配置: 1.安装完成后,需要增加三个操作系统的组和三个操作系统用户,如下: groupadd -g 999 db2iadm1  #(管理实例的组) groupadd -g 998 db2fadm1  #(安装实例的组) groupadd -g 997 db2asgrp   #(安装DB2 administration server的组) #建立管理数据库实例的用户 useradd -u 1004 -g db2iadm1 -G db2iadm1 -m -d /home/db

利用PHP SOAP扩展实现简单Web Services

原文:利用PHP SOAP扩展实现简单Web Services WebServices能干什么? WebServices 可以将应用程序转换为网络应用程序. 通过使用 WebServices,您的应用程序可以向全世界发布信息,或提供某项功能. 好了,关于WebServices网上资料很多,就不过多介绍了,直接进入主题. PHP有两个扩展类库可以实现WebServices,一个是NuSoap,一个是php官方自带的Soap扩展,在使用上大致都差不多,就拿官方自带的Soap扩展来说吧. 在Soap编

在spark udf中读取hdfs上的文件

某些场景下,我们在写UDF实现业务逻辑时候,可能需要去读取某个配置文件. 大多时候我们都会将此文件上传个hdfs某个路径下,然后通过hdfs api读取该文件,但是需要注意: UDF中读取文件部分最好放在静态代码块中(只会在类加载时候读取一次),尤其在处理的数据量比较大的时候,否则会反反复复的读取,造成不必要的开销,甚至任务失败,示例代码如下: package cn.com.dtmobile.udf; import java.util.HashMap; import org.apache.spa

Linux系统架构师之代码发布解决方案

我今年19了!人生有多少22K? 所有实验环境初始化: 创建本地光盘Yum源,安装tree lrzsz vim,关闭iptables和selinux. 定义别名cls='clear',ll='ls -Alh'. 代码发布解决方案: 1.安装优化软件环境 2.程序代码 3.配置变更 SVN是跨平台的开源版本控制系统.SVN会备份并记录文件每一次的修改更新的变动. SVN是通用的软件系统,常用来管理程序代码.常见的版本控制软件有:VSS.CVS.SVN.Git. Git与SVN的区别: SVN是一个