用户操作
[即时聊天] [发私信] [加为好友]
曾巧ID:numenZQ
42206次访问,排名2821,好友0人,关注者0人。
numenZQ的文章
原创 29 篇
翻译 16 篇
转载 2 篇
评论 16 篇
最近评论
xh:不推荐修改web.xml,设置java_options更好
numenZQ:补充说明一点,使用java.util.zip包时,是以UTF-8编码格式读取的文件名,因此在中文windows操作系统(Windows操作系统默认字符集为:GBK)中使用时会导致文件名解析错误,因此需要使用org.apache.tools.zip.ZipEntry和 org.apache.tools.zip.ZipOutputStream类来解决这一问题。
numenZQ:这个是需要明确知道字符串的成分,该方法只是为了满足读取不同字符集相应字符串,还是以“多哈亚运会”为例:如果字符集为GBK,截取前6个字节,结果为:“多哈亚”;当字符集为UTF-8时,截取前6个字节,结果则为:“多哈”,这是因为GBK是双字节编码,而UTF-8是三字节变长编码,如果不分字符集来读取对应长度的字串,则会出现字串内容与预期不符,长度错误等问题。
lyazure:仔细看了你的代码,作用是从一个字符串中获取指定字节数的字符,不知道你要这么做的最终目的是用来做什么。除非明确知道字符串的成分,否则这种做法很难做到完美,比如你的代码中,假如出现要从“多哈亚运会”这样的字符串中截取7个字节,最终会截得3个字符。
Alexandre:ab8e44bc75204d49bf0c9fe68a2b2176 matura foto amatoriale
收藏
    相册
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 通过PL/SQL访问Web Services收藏

    新一篇: XPath简介 | 旧一篇: 数据库项目组织的最佳实践

     

    作者:曾巧(numenzq

     

        Web Services红得发紫的今天,到处都在谈论和使用Web Services;当然,其中有不小一部分是属于业界炒作。Oracle也始终走在技术的最前沿,早在9i时代就发布了扩展包来支PL/SQL访问Web Services,并且在Oracle 10g版本中使得该功能变得更加强大;这都源于引入了UTL_DBWS包,其实它是封装了JPublisher,使得PL/SQL开发者只需要使用简单的几个API就能调用Web Services了。

    下面我将通过一个实例向你展示如何通过PL/SQL调用Web Services,本文的重点是PL/SQL调用Web Services实现上,对于如何发布Web Services,你可以参考本人的另一篇基础性文章《用OC4JAxis构建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了。

        好了,现在万事俱备,只剩写程序测试了,在编码测试之前,我们假设你已经将《用OC4JAxis构建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);

      l_input_params(
    1) := ANYDATA.ConvertVarchar2(username);
     
      l_result := UTL_DBWS.invoke (
        call_handle  => l_call,
        input_params => l_input_params);

      UTL_DBWS.release_call (call_handle => l_call);
      UTL_DBWS.release_service (service_handle => l_service);

      RETURN ANYDATA.AccessVarchar2(l_result);
    EXCEPTION
      WHEN OTHERS THEN
        RETURN NULL;
    END call_sayHello;

     

           测试结果如下:

     test result

    发表于 @ 2007年05月23日 16:26:00|评论(loading...)|编辑

    新一篇: XPath简介 | 旧一篇: 数据库项目组织的最佳实践

    评论:没有评论。

    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © numenzq