`
brandNewUser
  • 浏览: 457031 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

扩展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,即可验证是否可以调用成功。

 

分享到:
评论

相关推荐

    Axis2快速构建Web Service ppt

    【Web Service简介】 Web Service是一种基于开放标准的、自包含且自...通过以上步骤,开发者可以快速地在Axis2上构建和部署Web Service,实现跨系统的通信。轴心轴2的特性使其成为开发高效、可扩展Web服务的理想选择。

    webservices调用方法

    它实现了SOAP 1.2规范和SOAP with Attachments,使得开发者可以快速构建基于Web Services的应用。 4. **SOAP**:SOAP(Simple Object Access Protocol)是一种基于XML的协议,用于交换结构化信息。它允许Web ...

    web service实例

    本实例将深入探讨Web服务的实现和使用,特别是通过XML(可扩展标记语言)和WSDL(Web服务描述语言)进行通信。 1. **Web服务基础** Web服务的核心概念是SOA(Service-Oriented Architecture,面向服务架构),它...

    Spring Web Service 实战篇(1)

    通过使用Spring Web Service,开发者可以轻松地定义服务接口,并基于这些接口自动生成WSDL文件,进而实现服务的发布和调用。 在实战过程中,`build.xml`文件通常是Ant或Maven的构建脚本,用于自动化项目的构建过程...

    Axis动态调用webService

    1. 灵活性:Axis 提供了灵活的方式来调用 Web 服务,无需关心底层的实现细节。 2. 高性能:Axis 使用了高性能的 SOAP messaging 机制来调用 Web 服务。 3. 可扩展性:Axis 提供了丰富的 API,允许开发者自定义和扩展...

    liferay-webservice

    最后,执行`ant build-wsdd`命令来生成web service的描述文件(如`server-config.wsdd`)。请注意,执行这个命令时,portlet的路径不应包含中文字符或特殊字符,以防止编译失败。 生成的`server-config.wsdd`文件...

    axis2客户端调用服务端,带用户身份认证

    Axis2提供了一种高效、灵活且可扩展的方式来实现服务端和客户端的服务调用。当涉及到“axis2客户端调用服务端,带用户身份认证”时,我们主要关注的是如何在 Axis2 客户端中添加安全机制,确保只有经过验证的用户...

    深入接触 Google Web Toolkit 开发过程

    - Ant 文件会调用 GWT 的 Java-to-JavaScript 编译器,该编译器负责将 Java 代码转换成 JavaScript。 **3. 宿主模式与 Web 模式的使用:** - 宿主模式是 GWT 提供的一个开发调试模式,它允许开发者在本地 JVM 上...

    Axis2_Service_Archiver_1.3.0

    【标题】"Axis2 Service Archiver 1.3.0"是针对MyEclipse的一款Web开发插件,专门用于Axis2服务的打包和发布。这个工具简化了在MyEclipse环境中构建和部署基于Axis2的服务的过程,使得开发者可以更加高效地进行WS...

    基于 springboot、ant-design-vue 的开源框架+源代码+文档说明

    前后端交互使用JWT验证权限,使用Redis调用lua脚本CAS的方式,并且在令牌刷新时,旧令牌续命30秒进行平滑过渡,丝般顺滑地达到了用户无感知动态刷新JWT的目的。 jpa`动态条件查询写起来麻烦`,`项目的逻辑复杂的...

    vue antdesign 即时通讯基础样式

    Vue.js是一个轻量级且高度可扩展的前端框架,而Ant Design则是一个美观、实用的React组件库,但在Vue.js项目中也可以通过Vue-Antd-UI来使用其设计风格和组件。 1. **Vue.js**:Vue.js是当前非常流行的前端框架之一...

    使用XFire开发一个简单的web服务

    在Java领域中,Web服务是一种常用的技术手段,用于实现不同系统间的通信。XFire作为一个轻量级且功能强大的Web服务框架,它简化了开发过程,使得开发者能够更容易地创建和部署Web服务。本文将详细介绍如何使用XFire...

    SpringBoot+ant-design-pro-vue前后端分离,权限管理系统.zip

    前端源码中,你会看到Vue组件的实现、路由配置、状态管理(如Vuex)以及与后端API的接口调用。后端源码则涉及SpringBoot的Controller、Service、Repository层,以及安全配置、数据库连接配置等。 总的来说,这个...

    axis-std&Axis2_Service_Archiver

    Apache Axis2是Java平台上的一个Web服务引擎,它提供了高效、灵活且可扩展的架构来处理Web服务。在Axis2中,服务存档是一个包含所有必要组件(如WSDL,Java类,配置文件等)的自包含单元,用于部署和执行Web服务。 ...

    J2EE WEB开发指南

    综上所述,《J2EE WEB开发指南》覆盖了J2EE平台的各个方面,从基本概念到具体实现都有详细的介绍。对于初学者来说,这份指南提供了一个很好的起点,帮助他们理解和掌握J2EE开发的核心技术和实践。

    如何用axis1和spring 配置webervice服务器

    创建一个新的类,扩展`org.apache.axis.deployment.ServiceDeployer`,并在`deploy`方法中加载Spring上下文并获取Web服务Bean。 ```java public class SpringServiceDeployer extends ServiceDeployer { // 加载...

    weblogic 的 soa 例子

    本文主要探讨的是如何在WebLogic 9 中实现SOA的一个具体例子,涉及的关键技术包括Java Web Service(JWS)、JSR-921、JSR-175 和 JSR-181。 **Java Web Service (JWS)** JWS 是Java 2 Platform, Enterprise ...

    webservice培训.pptx

    服务端提供服务,客户端通过WSDL(Web Service Description Language)来查找并调用服务。WSDL是一个XML格式的文档,用于描述Web服务的接口、消息格式、操作和地址。客户端通过WSDL了解服务的使用方法,然后使用SOAP...

    XFire构建web service客户端的五种方式

    这些方法对于开发人员来说非常重要,因为它们提供了灵活性和多种选择来连接到 Web 服务,无论服务提供者如何实现。 1. **通过 WSDL 地址创建动态客户端**: 这是最常见的方法,它允许开发者动态地从 WSDL(Web ...

Global site tag (gtag.js) - Google Analytics