oracle直接调用web services
oracle调用C#开发web services
1, 去oracle官网上下载dbws-callout-utility-10131.zip
地址:https://oracle-base.com/articles/10g/utl_dbws-10g(注意请根据自己oracle的版本来选择下载对应的jar)
2, 解压后放到oracle安装目录下的<oracle_install_dir>/sqlj/lib中;
3, 在命令行中利用loadjava命令(一般安装完jdk或oracle之后就会有)将jar包导入oracle对应的用户中:
loadjava -u user/password@oracle -r -v -f -genmissing -s -grant public dbwsclientws.jar dbwsclientdb102.jar
若为SYS用户,命令为:
loadjava -u user/password -r -v -f -genmissing -s -grant public dbwsclientws.jar dbwsclientdb102.jar
(本人每次都会使用SYS用户权限比较大,在Win7与Win2008之后的系统开始命令行窗口的使用尽量使用“管理员模式”,安装时会产生拒绝访问的情况,有一种可能就是安装的Oracle数据库具备功能或者可以把Oracle服务关了再试试(这句有机会真的可以试试))
4, 如果未发现UTL_DBWS(可以在plsql中敲入sys.若未有utl_dbws显示,则需要进行初始化),需要运行之前下载的包中dbws-callout-utility-10131/sqlj/lib/ utl_dbws_body.sql及utl_dbws_decl.sql
5, 编写sql函数并发布
create or replace function FUNC_GENERATE_LOGINNAME(content VARCHAR2,cellNumber VARCHAR2,sender VARCHAR2)
return VARCHAR2 AS
l_service sys.utl_dbws.SERVICE;
l_call sys.utl_dbws.call;
l_result ANYDATA;
l_wsdl_url VARCHAR2(1024);
l_service_name VARCHAR2(200);
l_operation_name VARCHAR2(200);
l_input_params sys.UTL_DBWS.anydata_list;
l_xmltype_in SYS.XMLTYPE;
l_xmltype_out SYS.XMLTYPE;
BEGIN
l_wsdl_url := 'http://xxxx.xxxx.xxxx.xxxx:xxxx/project/axis/services.jws?wsdl';(这里一定要加?wsdl)
l_service_name := 'servicesService';(就是我们*.asmx的那个类名)
l_operation_name := 'sendMessage';(就是我们具有WebMothed属性的方法名)
l_service := sys.UTL_DBWS.create_service(wsdl_document_location => URIFACTORY.getURI(l_wsdl_url),
service_name => l_service_name);
l_call := sys.UTL_DBWS.create_call(service_handle => l_service,
port_name => NULL,
operation_name => l_operation_name);
l_input_params(1) := ANYDATA.ConvertVarchar2(content);
l_input_params(2) := ANYDATA.ConvertVarchar2(cellNumber);
l_input_params(3) := ANYDATA.ConvertVarchar2(sender);
l_result := sys.UTL_DBWS.invoke(call_handle => l_call,
input_params => l_input_params);
sys.UTL_DBWS.release_call(call_handle => l_call);
sys.UTL_DBWS.release_service(service_handle => l_service);
RETURN ANYDATA.AccessVarchar2(l_result);
EXCEPTION
WHEN OTHERS THEN
RETURN substr(sqlerrm, 0, 2000);
END FUNC_GENERATE_LOGINNAME;
6,看结果select func_generate_loginname('testTest','1234567','xxxxxx') from dual;
7对于其中出现的异常,最可能的就是出现权限不足,可以利用如下语句解决:
begin
dbms_java.grant_permission( 'DZZWPT', 'SYS:java.lang.RuntimePermission', 'getClassLoader', '' );
dbms_java.grant_policy_permission('DZZWPT','SYS','java.io.FileP ermission','*');
---dbms_java.grant_permission( 'DZZWPT','SYS:java.lang.IllegalAccessException','getClassLoader', '' );
dbms_java.grant_permission( 'DZZWPT', 'SYS:java.lang.RuntimePermission', 'accessClassInPackage.sun.util.calendar', '' );
dbms_java.grant_permission( 'DZZWPT', 'SYS:java.lang.RuntimePermission', 'setFactory', '' );
dbms_java.grant_permission( 'DZZWPT', 'SYS:java.util.PropertyPermission', 'HTTPClient.socket.idleTimeout', 'write' );
dbms_java.grant_permission( 'DZZWPT', 'SYS:java.Net.SocketPermission', 'localhost', 'resolve' );
dbms_java.grant_permission( 'DZZWPT', 'SYS:java.net.SocketPermission', '192.168.21.203:80', 'connect,resolve' );
dbms_java.grant_permission( 'DZZWPT', 'SYS:java.lang.RuntimePermission', 'createClassLoader', '' );
end;
8.以上为官方实例,接下来我们来试试HelloWorld
1).首先,我们要对自己写的WebServer做一些修改,
在WebServer类前面把Namespace设为空,且把[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
根据WebServer中的说明来确定输入参数、输出参数的格式
l_xmltype_in 的值就是<HelloWorld />
输出就是
<HelloWorld1Response>
<HelloWorld1Result>Hello World</HelloWorld1Result>
</HelloWorld1Response>
oracle直接调用web services的更多相关文章
- ORACLE存储过程调用Web Service
1. 概述 最近在ESB项目中,客户在各个系统之间的服务调用大多都是在oracle存储过程中进行的,本文就oracle存储过程调用web service来进行说明.其他主流数据库,比如mysql和sq ...
- oracle触发器 调用 web接口
最近要求开发当数据表发生变化的时候调用web接口的需求,上网找了好几篇文章看着都觉得不是很好,也根据别人的思路去实现了下,感觉都不太理想,最后使用URLConnection实现了调用.具体查看一下代码 ...
- Oracle Agile PLM Web Services 的实现
Oracle 的产品Agile PLM内置了许多Web Services,其他系统可以通过Web Servcies实现对Agile PLM系统资源的访问.快速学会使用的方法,是去Oracle的官网下载 ...
- Java与.NET 的Web Services相互调用
一:简介 本文介绍了Java与.NET开发的Web Services相互调用的技术.本文包括两个部分,第一部分介绍了如何用.NET做客户端调用Java写的Web Services,第二部分介绍了如何用 ...
- asp调用.net xml web services
来源:http://www.cnblogs.com/notus/archive/2006/08/10/473000.html#2662503 (是不是实际上可以用这个办法调用任何xml web ser ...
- 使用LoadRunner对Web Services进行调用--Add Service Call
利用LoadRunner对Web Services进行测试时,通常有三种可供采用的方法: 在LoadRunner的Web Services虚拟用户协议中,[Add Service Call] 在Loa ...
- UTL_DBWS - Consuming Web Services in Oracle 10g Onward
from:http://oracle-base.com/articles/10g/utl_dbws-10g.php In a previous article I presented a method ...
- BizTalk发布WS-Security的web services
最近做个项目,biztalk跟OTM(Oracle Transportation Management)系统做对接,双方通过web services通讯,这部分是BizTalk发布WS-Securit ...
- 分分钟带你玩转 Web Services
当大型需求被数个公司分割开来,各公司系统相互交换数据的问题就会接踵而来. 毕竟是多家不同的公司的产品,研发开发语言.采用技术框架基本上是百花齐放. 怎样让自家系统提供的服务具有跨平台.跨语言.跨各种防 ...
随机推荐
- 在集成环境中修改配置文件php.ini不生效的解决办法
配置完成之后一定要重启服务,如果重启服务还是不生效. 就去看一下phpinfo(),找到Loaded Configuration File选项,这个才是真正读取的配置文件
- 关于Python读写Excel
关于Excel的读写本人最近看到一篇不错的文章话不多少直接连接https://blog.csdn.net/qq_41185868/article/details/80469355
- .net core 3.0 WPF中使用FolderBrowserDialog
前言 随着.net core 3.0 的发布,WPF 也可以在 core 平台上使用了.当前的 WPF 不支持跨平台,仅能够在 Windows 平台上使用.如果想体验 WPF 跨平台开发,可以访问开源 ...
- Cobalt Strike之CHM、LNK、HTA钓鱼
CHM钓鱼 CHM介绍 CHM(Compiled Help Manual)即“已编译的帮助文件”.它是微软新一代的帮助文件格式,利用HTML作源文,把帮助内容以类似数据库的形式编译储存.利用CHM钓鱼 ...
- 快速傅里叶变换(FFT)略解
前言 如果我们能用一种时间上比 \(O(n^2)\) 更优秀的方法来计算大整数(函数)的乘法,那就好了.快速傅里叶变换(FFT) 可以帮我们在 \(O(n\log n)\) 的时间内解决问题. 函数乘 ...
- [USACO15DEC]高低卡(白金)High Card Low Card (Platinum)
题目描述 Bessie the cow is a hu e fan of card games, which is quite surprising, given her lack of opposa ...
- gedit 外部工具——快捷运行
可快捷编译运行一些代码,适合新手使用. 配置如下. 快捷键:F5 保存:当前文档 输入:无 输出:无 使用范围:所有文档,所有语言 脚本如下. #!/bin/sh #author: srczhang# ...
- Vue路由守卫(跳转页面置顶的处理方)
在用Vue 框架开发时,在电脑调试没有任何问题,但是用手机调试时会发现页面跳转的不对.就是跳转时页面展示的滑动位置不对,会保留上次跳转页面时的跳转位置.因此需要对页面的路由跳转进行优化,需要用到Vue ...
- Django的下载与基本命令
1.下载Django: pip3 install django==2.1.2 2.创建一个django project django-admin startproject 项目名称 3.在项目目录下创 ...
- 热门开源网关的性能对比:Goku > Kong > Tyk
不多说,先展示最后的性能测试结果 我们将Goku与市场上的其他同类热门产品进行比较,使用相同的环境和条件,测试以下产品:Goku.Kong.Tyk.简单介绍下, Goku API Gateway (中 ...