首页 > DPOS技术 > 关于会员系统的webservices后台重新发布后,前台出现的问题

关于会员系统的webservices后台重新发布后,前台出现的问题

2008年10月23日 发表评论 阅读评论

前台调用huiyuanIntegralgaQuery函数接口时报错,调用其它的函数也是这个错误。请商顾问帮忙看看

 

 

关于作者:

昵称:daphne
档案信息:
联系方式:你可以通过yuanhong.zhan@mail.daphne.com.cn联系作者
点击查看发表过的所有文章...
本文永久链接: http://blog.retailsolution.cn/archives/589

 

 

对本文的评价:

 

 

分类: DPOS技术 标签:
  1. yunfang
    2008年10月23日14:29 | #1

    hi ,
    请把这个问题发生的背景(切换机器,重装,重发布,改Delphi客户端的细节)描述一下,以便于少卿和红阳理解和快速定位问题.

  2. yunfang
    2008年10月24日10:07 | #2

    客户做了如下动作:
    1\ 把原来的Web-Service服务器格式化了.
    2\ 重新安装了新的Web-Service服务器
    3\ 重新发布了(部署)Web-Service服务

    问题?

    1\ 重新部署导致Web-Service接口函数名变更?
    2\ 客户端的Delphi程序有没有修改?

  3. daphne
    2008年10月24日10:52 | #3

    问题补充说明:
    1、webservices的后台程序没有改动过,只做了重新发布。
    2、用delphi导入接口后少了两个类的声明:(原来有14个class现在只有12个class)
    DposHuiyuanPubHuiyuanUpolUser = class; { “http://Dposhuiyuan_Project/Dposhuiyuan_WebService.wsdl/types/” }
    DposHuiyuanPubHuiyuanUpolBase = class; { “http://Dposhuiyuan_Project/Dposhuiyuan_WebService.wsdl/types/” }

  4. shaoqin.zhou
    2008年10月24日13:44 | #4

    之前正式环境和测试环境的WEBSERVICE版本是不一样的,会员的后续开发多了几个webservice的调用,而最新版本的PKG是包含了所有的CLASS,至于前台的话,由于考虑到测试环境和正式环境的不一样,之前的处理方式是保留了两个WEBSERVICE文件,正式环境测试环境各一个。

    出现之前这个情况,建议采取如下操作。
    1、后台部分重新发布一下WEBSERVICE到正式环境,如果现在后台还是启用的虚拟机的话,要把PORT启动下,注意看下导的端口。
    2、客户端把WSDL文件重新导一下,注意重新生成的类里可能会有部分CLASS的名称发生改变,仔细看好就可以。
    3、导WSDL完成之后,把之前WSDL定义的一个参数变量一起在新的文件里修改,就是DEFURL和PORT的地址。

    由于不在项目,暂时只能有如上的建议。

  5. yunfang
    2008年10月27日20:29 | #5

    红阳回复如下:
    大家好!
    首先请注意一下版本问题
    最后离开时,正式环境中的WEBSERVICE PL/SQL包与正在使用的DELPHI前台是一套配套的程序。
    VSS上的WEBSERVICE PL/SQL 包与DELPHI 代码是最新的一套代码(比正式环境要多几个功能),并且也已经通过测试。
    若版本已经乱了,那么也不要紧
    1. 需要小孙根据文档通过JDEVELOPER重新生成WEBSERVICE并发布到WS服务器上,并在IE上测试这些WEBSERVICE是否正确,若正确则表示WS是没有问题的。(所有操作都有文档)
    2. 需要DELPHI人员导入WS,并调用这些WS。(关于DELPHI调用的问题可以询问周少卿)。
    关于问题:
    Web-service 的delphi 客户端无法正常连接, 听龚经理说,客户端使用域名是可以的,但使用IP地址不行。
    请小孙在IE上直接测试WEBSERVICE,若没有问题,而客户端无法调用,那么估计就是DELPHI代码调用的问题。
    若你们使用的测试环境的虚拟机作为WEBSERVICE做服务器,那么也需要DELPHI开发人员注意端口的问题。
    不修改程序包,那么WS的函数名是不会变化的。 朱红阳

  6. 2008年11月4日19:21 | #6

    红阳回复如下:
    VPN连接检查发现,小孙重新发布了Web-Service,但发布使用的Jdeveloper版本不对,导致Web-Service对外接口发生改变. Delphi客户端与服务端无法交互. 后重新使用原来的jdeveloper版本发布后,大多数Web-Service服务正常,尚有2个函数调用有点问题,预计在本周四现场来解决掉.

  7. ben.zhu
    2008年11月6日13:40 | #7

    关于 2008-10-06 早上,AS启动 bin/opmnctl startall报如下错误:
    ######################################
    ./opmnctl startproc process-type=HTTP_Server
    opmnctl: starting opmn managed processes…
    ================================================================================
    opmn id=c.abc.net:6200
    0 of 1 processes started.

    ias-instance id=ias.c.abc.net
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ——————————————————————————–
    ias-component/process-type/process-set:
    HTTP_Server/HTTP_Server/HTTP_Server/

    Error
    –> Process (index=1,uid=878718188,pid=6246)
    failed to start a managed process after the maximum retry limit
    Log:
    /home/oracle/app/ias/opmn/logs//HTTP_Server~1.log
    ####################################################

    有人回帖建议看下Apache的错误日志文件:$OH/Apache/Apache/logs/error_logs.

    找到的错误日志:

    [Mon Jul 14 17:22:07 2008] [warn] pid file /home/oracle/app/ias/Apache/Apache/logs/httpd.pid overwritten — Unclean shutdown of previous Apache run?
    fopen: Permission denied
    httpd: could not log pid to file /home/oracle/app/ias/Apache/Apache/logs/httpd.pid

    从日志上看是文件httpd.pid不允许访问,“ls -l”看一下,发现文件“httpd.pid”的所有者是root,拿另一台装有Oralce AS的机器的相应目录对比了下,发现那台工作正常的机器该文件的所有者是oracle。

    于是把文件“httpd.pid”的文件名改了一下,再次启动HTTP_Server,一切正常,问题排除。

    使用root用户启动apache,会导致httpd.pid文件的属主变成了root,导致后来使用oracle用户启动apache时,Apache会尝试写httpd.pid以便记录自己的pid进程号,但是由于httpd.pid目前的属主是root使用oracle用户修改httpd.pid文件肯定会失败。

    扩展知识:

    文件httpd.pid记录了apache启动后的进程标识(PID,Process ID),对于httpd服务有着及其重要的作用。若此文件不能正常读写,httpd进程会主动退出。

    摘自http://hi.baidu.com/nboy/blog/item/6c70367af5e0b5e82e73b3a7.html

  8. sun
    2008年11月6日15:29 | #8

    ben.zhu 引用 2008年11月6日13:40 | #7

    关于 2008-10-06 早上,AS启动 bin/opmnctl startall报如下错误:
    ######################################
    ./opmnctl startproc process-type=HTTP_Server
    opmnctl: starting opmn managed processes…
    ================================================================================
    opmn id=c.abc.net:6200
    0 of 1 processes started.

    ias-instance id=ias.c.abc.net
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ——————————————————————————–
    ias-component/process-type/process-set:
    HTTP_Server/HTTP_Server/HTTP_Server/

    Error
    –> Process (index=1,uid=878718188,pid=6246)
    failed to start a managed process after the maximum retry limit
    Log:
    /home/oracle/app/ias/opmn/logs//HTTP_Server~1.log
    ####################################################

    有人回帖建议看下Apache的错误日志文件:$OH/Apache/Apache/logs/error_logs.

    找到的错误日志:

    [Mon Jul 14 17:22:07 2008] [warn] pid file /home/oracle/app/ias/Apache/Apache/logs/httpd.pid overwritten — Unclean shutdown of previous Apache run?
    fopen: Permission denied
    httpd: could not log pid to file /home/oracle/app/ias/Apache/Apache/logs/httpd.pid

    从日志上看是文件httpd.pid不允许访问,“ls -l”看一下,发现文件“httpd.pid”的所有者是root,拿另一台装有Oralce AS的机器的相应目录对比了下,发现那台工作正常的机器该文件的所有者是oracle。

    于是把文件“httpd.pid”的文件名改了一下,再次启动HTTP_Server,一切正常,问题排除。

    使用root用户启动apache,会导致httpd.pid文件的属主变成了root,导致后来使用oracle用户启动apache时,Apache会尝试写httpd.pid以便记录自己的pid进程号,但是由于httpd.pid目前的属主是root使用oracle用户修改httpd.pid文件肯定会失败。

    扩展知识:

    文件httpd.pid记录了apache启动后的进程标识(PID,Process ID),对于httpd服务有着及其重要的作用。若此文件不能正常读写,httpd进程会主动退出。

    摘自http://hi.baidu.com/nboy/blog/item/6c70367af5e0b5e82e73b3a7.html

  9. 2008年11月20日15:24 | #9

    11月10日电话沟通老姚, 问题已解决.

  1. 本文目前尚无任何 trackbacks 和 pingbacks.
您必须在 登录 后才能发布评论.