扩展ant实现Web Service调用

背景

NC规则系统需要与持续集成对接,需要在进行持续构造的过程中与Hudson集成,让持续构造工具能够时刻执行规则系统中的规则,并生成结果。

为了满足这个要求,在OSGi端分离了单独的Equinox OSGi容器,把规则执行所使用的bundle部署至容器中,并通过/cxf-dosgi-ri-singlebundle-distributionOSGi中的声明式服务包装,发布成Web Service,供外部调用。

 

使用客户端对Web Service进行调用

         Web Service发布出来之后,需要使用Apache CXF对生成的Web Service进行客户端调用,在调用之前,需要生成客户端源码,这就需要使用cxf/bin目录下的wsdl2java.bat来生成源码(前提:Web Service服务已打开),执行命令:

 

         wsdl2java.bat –d “生成文件目录” –wsdlurl “对应的wsdl地址,比如 http://localhost:9090/ruleexecute?wsdl,就可以在对应的生成目录找到源码,将其拷贝进工程目录即可。

         如何进行调用?客户端代码如何编写?

public static void main(String[] args) throws Exception {

        JaxWsDynamicClientFactory clientFactory = JaxWsDynamicClientFactory.newInstance();

        Client client = clientFactory.createClient("http://127.0.0.1:9090/ruleexecute?wsdl");

        Object[] result = client.invoke("execute", "D:\\Develop\\test\\uap631", "D:\\Develop\\test\\NC_MM_PAC6.31_dev_2\\NC6_MM_VOB\\NC_MM_PAC", "nc631_xxq1227");

        System.out.println(result[0]);

    }

  

         其中需要依赖的apache cxf jar包列表如下:

/apache-cxf/lib/cxf-2.7.0.jar

/apache-cxf/lib/velocity-1.7.jar

/apache-cxf/lib/commons-collections-3.2.1.jar

/apache-cxf/lib/commons-lang-2.6.jar

/apache-cxf/lib/wsdl4j-1.6.2.jar

/apache-cxf/lib/jaxb-xjc-2.2.5.jar

/apache-cxf/lib/jaxb-impl-2.2.5.jar

/apache-cxf/lib/xmlschema-core-2.0.3.jar

/apache-cxf/lib/neethi-3.0.2.jar

/apache-cxf/lib/httpcore-4.2.2.jar

/apache-cxf/lib/httpcore-nio-4.2.2.jar

/apache-cxf/lib/httpasyncclient-4.0-beta3.jar

/apache-cxf/lib/httpclient-4.2.1.jar

/apache-cxf/lib/commons-logging-1.1.1.jar

  

Ant扩展

         由于NC产品构造是采用ant进行构建的,因此需要对ant中的Task进行扩展,以支持在构造的前后都可以对产品的规则进行执行,并得出结果。

如果对Ant进行扩展?首先,我们需要将ant执行中的ant.jar放置在工程中的classpath目录下,由于我们的自定义ant任务就是一个比较简单的Task,并不嵌入其他任务类型,只要从标准的org.apache.tools.ant.Task继承并覆盖execute方法即可。

ant中配置参数就比较简单了,只需要在对应的Task实现中加入相应字段并生成其set/get方法即可(这里假定所有的字段都是String类型),

public class RuleValidatorAntTask extends Task {

    private String wsUrl;

    private String methodName;

    private String ncHome;

    private String srcFolder;

    private String dataSourceName;

    @Override

    public void execute() throws BuildException {

        try {

            SimpleClient.execute(wsUrl, methodName, ncHome, srcFolder, dataSourceName);

        } catch (Exception e) {

            throw new BuildException(e);

        }

}

//get/set方法省略…
 

Ant部署

         在开发完成后,如何对其进行验证,这就需要把我们写的插件部署至ant中,进行执行操作,将工程导出为jar包(注意不需要导出依赖的jar包)。

         由于我们刚编写的ant插件依赖了一些cxf的包,这些包也需要单独拿出来,一起部署。将生成的jar包和对应的cxf包统一放置在ant/lib中,由ant进行调用。

         Ant中是采用build.xml配置文件的方式进行调用构建的,在build.xml中我们需要先对扩展的任务进行声明后才能使用。

<?xml version="1.0" ?>

<project name="testRuleValidator" default="test" basedir=".">

<taskdef name="rulevalidator" classname="com.yonyou.nc.codevalidator.runtime.RuleValidatorAntTask" classpath="."/>

<target name="test">

    <rulevalidator wsUrl="http://127.0.0.1:9090/ruleexecute?wsdl" methodName="execute" ncHome="D:\Develop\test\uap631" srcFolder="D:\Develop\test\NC_MM_PAC6.31_dev_2\NC6_MM_VOB\NC_MM_PAC" dataSourceName="nc631_xxq1227" />

</target>

</project>
 

 

         <taskdef>标签用来定义对应的执行类名以及简称(rulevalidator),在真正的target中就可以直接使用<rulevalidator>对任务进行调用操作,其中配置的属性和类中定义的属性名称保持一致。

         在本目录下的命令行中执行ant,即可验证是否可以调用成功。

 

weixin073智慧旅游平台开发微信小程序+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值