WebService开发和调用原创
金蝶云社区-吴锐雄
吴锐雄
6人赞赏了该文章 1,787次浏览 未经作者许可,禁止转载编辑于2022年06月07日 16:30:04


本案例使用 idea进行开发,是开发环境。


如果迁移至生产环境,需要把class文件打包成jar,并把案例中的xml文件也打进jar包里面。

把应用打成补丁包,然后在导出页面中上传jar包。


开发步骤

  1. 编写接口

  2. 实例化接口

  3. 编写xml配置文件

  4. MC上配置第3步的xml文件


开发步骤详情

1.编写接口

package kd.ecos.webservice;

import javax.jws.WebParam;
import javax.jws.WebService;

@WebService
public interface WrxWebService {

    String helloWrx(@WebParam(name = "yourname")String name);
    
}


2.实例化接口

package kd.ecos.webservice;

public class WrxWebServiceImpl implements WrxWebService{

    @Override
    public String helloWrx(String name) {
        return name + " say hi kingdee!";
    }

}


3.编写xml文件

resources下面新建wrx_kwsconfig.xml文件

<?xml version="1.0" encoding="utf-8"?>
<root>
   <service name="helloWrx" class="kd.ecos.webservice.WrxWebServiceImpl">
   </service>
</root>


整体文件目录结构如下图:

image.png


4.MC配置

进入管理中心,即MC。进入环境公共配置。

搜索kws,找到kws.filepath.config。如果没有找到,就在/root/config/common/prop/pjtest.properties路径下面,手动新增一个 编码为 kws.filepath.config ,值为 /wrx_kwsconfig.xml 的配置项。

/wrx_kwsconfig.xml这个配置项就是第3步时,新增的那个xml文件


image.png


配置之后,需要发布集群:

image.png


5.效果

访问http://ip地址:端口号/ierp/kws/

发现已经有了新增的webservice服务。

image.png



调用WebService

代码使用axis1.4来调用webservice,这里仅作为一个例子,关于webservice的调用方式有很多种,其他调用方式请开发者自行搜索。

image.png


代码如下

package kd.bos.debug.mservice;

import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.encoding.XMLType;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

public class TestKwsAxis {

    public static void main(String[] args) {
        callMyCustomWebService();
    }

    /*
    * 使用axis框架调用WebService接口,我用的是axis1.4
    * jar包可以在mvnrepository下载:mvnrepository.com/artifact/org.apache.axis/axis/1.4
    */
    private static void callMyCustomWebService () {
        try {
            // 金蝶云苍穹的WebService基于SOAP、WSDL
            String endpoint = "http://172.20.14.63:8080/ierp/kws/helloWrx?wsdl";
            Service service = new Service();
            Call call = (Call) service.createCall();
            call.setTargetEndpointAddress(endpoint);
            String parametersName = "yourname";       // 参数名//对应的是 String helloWrx(@WebParam(name = "yourname")String yourname);
            // call.setOperationName("helloWrx");         // 调用的方法名//当这种调用不到的时候,可以使用下面的,加入命名空间名
            call.setOperationName(new QName("http://webservice.ecos.kd/", "helloWrx"));// 调用的方法名
            call.addParameter(parametersName, XMLType.XSD_STRING, ParameterMode.IN);//参数名//XSD_STRING:String类型//.IN入参
            call.setReturnType(XMLType.XSD_STRING);    // 返回值类型:String
            String message = "WoWrx";
            String result = (String) call.invoke(new Object[] { message });// 远程调用
            System.out.println("TestKws result: " + result);
        } catch (Exception e) {
            System.err.println(e.toString());
        }

    }
    
}


调用结果

打印日志,调用成功!

image.png



图标赞 6
6人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!