zoukankan      html  css  js  c++  java
  • axis2框架用wsdl文件生成的服务端MessageReceiveInOut文件注意事项

           在用axis2生成服务端文件和客户端文件,当客户端文件调用服务端文件时,都是通过wsdl文件生成的

    配置文件进行相互的调用。

            在一开始做开发测试的时候,通过soapUI进行调用接口的时候,可以调用成功,但这只是服务端调用,

    并没有通过客户端进行调用。当服务端开发接收后,开发客户端,由客户端调用服务端文件时,一直没有调通,

    后来经高人指点,原因在于生成的服务端文件--MessageReceiveInOut文件中,有一段代码需要修改,才能调通。

    代码如下:

       这是由wsdl文件直接生成服务端文件--MessageReceiveInOut的部分代码(生成的文件的前几行):

      public class VodServiceMessageReceiverInOut extends org.apache.axis2.receivers.AbstractInOutMessageReceiver{
    
    
            public void invokeBusinessLogic(org.apache.axis2.context.MessageContext msgContext, org.apache.axis2.context.MessageContext newMsgContext)
            throws org.apache.axis2.AxisFault{
    
            try {
    
            // get the implementation class for the Web Service
            Object obj = getTheImplementationObject(msgContext);
    
            VodServiceSkeleton skel = (VodServiceSkeleton)obj;

    如果同通过客户端调用服务端,需要将上述代码修改为如下:

        public class VodServiceMessageReceiverInOut extends org.apache.axis2.receivers.AbstractInOutMessageReceiver{
    //VodServiceSkeleton为服务端文件的控制类,将他进行私有化,通过反射进行调用
    private VodServiceSkeleton skel = com.allcam.bpc.common.SpringContextHolder.getBean(VodServiceSkeleton.class); public void invokeBusinessLogic(org.apache.axis2.context.MessageContext msgContext, org.apache.axis2.context.MessageContext newMsgContext) throws org.apache.axis2.AxisFault{ try { // get the implementation class for the Web Service // Object obj = getTheImplementationObject(msgContext); // VodServiceSkeleton skel = (VodServiceSkeleton)obj;

    改为以上代码就可以进行相互调用了,小知识点但却很重要。

    直接对比前后代码截图:左边为直接生成代码,右边为修改后调用的代码

    学识尚浅,有问题欢迎指出。

  • 相关阅读:
    【PHP&&MySQL详解】
    【PHP对XML文件的操作技术【完整版】】
    【PHP XML与dtd概述【完整版】】
    【PHP的异常处理【完整】】
    【PHP用户的错误日志】
    【PHP自定义显示系统级别的致命错误和用户级别的错误】
    【PHP数组的使用】
    【PHP构造方法和析构方法的使用】
    【php全局变量和静态变量、静态方法的使用方法】
    【mysql启动Innodb的方法】
  • 原文地址:https://www.cnblogs.com/zjdxr-up/p/7543392.html
Copyright © 2011-2022 走看看