如何在oracle 9i下访问web services ?
就是现在有一个已经发布的web services (现在是.net开发的web services)请问如何在oracle 中访问它,并获取返回结果谢谢!

解决方案 »

  1.   

    是否还要加个中间件?如:asp,jsp,aspx,cgi或者应用程序
      

  2.   

    好像 不要的,oracle 应该有自己的组件把就是不知道 oracle 9i 下怎么搞  下面我将通过一个实例向你展示如何通过PL/SQL调用Web Services,本文的重点是PL/SQL调用Web Services实现上,对于如何发布Web Services,你可以参考本人的另一篇基础性文章《用OC4J和Axis构建Web Services》或者其他参考资料。    首先,我们来搭建运行环境吧,你得从Oracle OTN下载并安装Oracle Database(企业版、标准版、个人版均可,但切勿安装快捷版,因为它没有提供sqlj组件及相关命令)。如果你已安装好该数据库,可跳过该步骤。    然后,需要下载对应版本的UTL_DBWS:      Pre 10g: dbws-callout-utility.zip     10g: dbws-callout-utility-10R2.zip    下载完成后,需要解压该文件到<oracle_install_dir>/sqlj/lib目录下,我们还需要使用loadJava将这些jar文件加载到SYS schema中,供所有用户使用该扩展包,命令如下:<oracle_install_dir>/bin/loadjava -u sys/passWord -r -v -f -s -grant public -noverify -genmissing <oracle_install_dir>/sqlj/lib /dbwsclient.jar    其实在Oracle的文档中是声称10g是自带UTL_DBWS包的,不过我下载最新的Oracle并完全安装后,也没有发现UTL_DBWS的半点踪影,也只好自己拷贝并执行loadjava了。    好了,现在万事俱备,只剩写程序测试了,在编码测试之前,我们假设你已经将《用OC4J和Axis构建Web Services》文章里hellows已经部署好了,并能正常的调用sayHello方法了;当然,你发布其他的Web Services服务也同样可行的。下面我们就创建一个function来进行测试,测试代码如下:CREATE OR REPLACE FUNCTION call_sayHello (username  IN  VARCHAR2)
      RETURN VARCHAR2
    AS
      l_service  UTL_DBWS.service;
      l_call     UTL_DBWS.call;
      l_result   ANYDATA;  l_wsdl_url        VARCHAR2(1024);
      l_service_name    VARCHAR2(200);
      l_operation_name  VARCHAR2(200);
      l_input_params    UTL_DBWS.anydata_list;
    BEGIN
      l_wsdl_url       := 'http://localhost:8888/hellows/helloService?WSDL';
      l_service_name   := 'helloService';
      l_operation_name := 'sayHello';  l_service := UTL_DBWS.create_service (
        wsdl_document_location => URIFACTORY.getURI(l_wsdl_url),
        service_name           => l_service_name);  l_call := UTL_DBWS.create_call (
        service_handle => l_service,
        port_name      => NULL,
        operation_name => l_operation_name);
      

  3.   

    .net开发的web   services估计够呛,
    写个java的存储过程看看。