`

自动生成Xfire的.aegis.xml文件

    博客分类:
  • java
阅读更多

Xml代码 
1.<?xml version="1.0" encoding="UTF-8"?> 
2.<mappings> 
3.    <mapping> 
4.          <method name="getDutyPlanByCondition"> 
5.            <parameter index="0" mappedName="dutyPlanId" /> 
6.            <parameter index="1" mappedName="organizationId" /> 
7.            <parameter index="2" mappedName="dutyUserId" /> 
8.            <parameter index="3" mappedName="tabulateUserId" /> 
9.            <parameter index="4" mappedName="dictRoadSectionId" /> 
10.            <parameter index="5" mappedName="assessorUserId" /> 
11.            <parameter index="6" mappedName="dutyDate" /> 
12.            <parameter index="7" mappedName="startTime" /> 
13.            <parameter index="8" mappedName="stopTime" /> 
14.            <parameter index="9" mappedName="startPoint" /> 
15.            <parameter index="10" mappedName="stopPoint" /> 
16.            <parameter index="11" mappedName="xh" /> 
17.            <parameter index="12" mappedName="tabulateDate" /> 
18.            <parameter index="13" mappedName="isAudit" /> 
19.            <parameter index="14" mappedName="auditingDate" /> 
20.            <parameter index="15" mappedName="isPreAudit" /> 
21.            <return-type 
22.                componentType="com.boco.itms.ws.value.duty.DutyPlanValue" /> 
23.        </method> 
24.    </mapping> 
25.</mappings> 
<?xml version="1.0" encoding="UTF-8"?>
<mappings>
    <mapping>
          <method name="getDutyPlanByCondition">
<parameter index="0" mappedName="dutyPlanId" />
<parameter index="1" mappedName="organizationId" />
<parameter index="2" mappedName="dutyUserId" />
<parameter index="3" mappedName="tabulateUserId" />
<parameter index="4" mappedName="dictRoadSectionId" />
<parameter index="5" mappedName="assessorUserId" />
<parameter index="6" mappedName="dutyDate" />
<parameter index="7" mappedName="startTime" />
<parameter index="8" mappedName="stopTime" />
<parameter index="9" mappedName="startPoint" />
<parameter index="10" mappedName="stopPoint" />
<parameter index="11" mappedName="xh" />
<parameter index="12" mappedName="tabulateDate" />
<parameter index="13" mappedName="isAudit" />
<parameter index="14" mappedName="auditingDate" />
<parameter index="15" mappedName="isPreAudit" />
<return-type
componentType="com.boco.itms.ws.value.duty.DutyPlanValue" />
</method>
    </mapping>
</mappings>


很普通的一个配置文件。
"getDutyPlanByCondition”这个方法总共有16个参数,默认情况下,客户端自动生成的代码中,参数形如:arg0,arg1...arg15,极不容易将每个参数及顺序填写正确,故配置以上文件,将wsdl中的参数赋予有意义的单词。

<parameter index="0" mappedName="dutyPlanId" />
<parameter index="1" mappedName="organizationId" />

......


编写如此的配置实在令人有点不耐烦,想点办法,自动生成?

OK,观察一下有什么规律:
1.<method name="getDutyPlanByCondition"> 方法名,反射呗。
2.<return-type componentType="com.boco.itms.ws.value.duty.DutyPlanValue" />返回值,反射呗。
3.xml文件名,反射呗。

通过反射,这些信息我们都能取到,再组织一下结构,循环一下,生成配置文件,小菜一碟!


但还有个东西别忘了,参数名(不是参数类型)。



Java代码 
1.public void save(int id , String name){ ... } 
public void save(int id , String name){ ... }


以上代码我们通过反射,能取到参数中的int,String,但就是取不到id,name。
别问为什么要取到参数名,总有用的上的时候,例如这篇文章……


先找个包:axis2-kernel-1.4.1.jar(明明是用Xfire,还是得拖个axis下水啊)

直接上代码:


Java代码 
1.ChainedParamReader paramReader = new ChainedParamReader(clazz);  
2.Method[] methods = clazz.getMethods();  
3.for(int i=0 ; i<methods.length ; i++){  
4.     String[] params = paramReader.getParameterNames(methods[i]);     
5.} 
ChainedParamReader paramReader = new ChainedParamReader(clazz);
Method[] methods = clazz.getMethods();
for(int i=0 ; i<methods.length ; i++){
     String[] params = paramReader.getParameterNames(methods[i]);
}


OK,已经取到{id , name}了,该干嘛干嘛了 .

 

1
1
分享到:
评论

相关推荐

    axis-jax-ws-xfire.rar_jax

    XFire的一个特点是其对Aegis绑定的支持,这使得它可以处理非XML数据类型,提高了与遗留系统的兼容性。 描述中提到的“客户端调用分析”和“webservice万能客户端”,意味着这个压缩包可能包含了一份关于如何使用...

    第十五章.开发XFire.Web.Service应用.rar

    5. **生成WSDL**:XFire会自动生成WSDL(Web Services Description Language)文件,它是Web服务的元数据,描述了服务的接口、操作和绑定。 6. **测试服务**:你可以使用MyEclipse的内置Web服务测试工具或者通过...

    xfire 使用方法

    它的客户端和服务器端代码都可以通过XFire自动生成,大大提升了开发效率。 在XFire的配置中,需要特别注意的是services.xml文件,这是用于定义服务接口的核心配置文件。它通常位于META-INF目录下,这个目录应该放在...

    xfire客户端需要的jar

    2. **xfire-aegis-binding.jar**:Aegis绑定器提供了将Java对象映射到XML的能力,反之亦然。这对于在Web服务中传输复杂数据类型非常有用。 3. **xfire-xmlbeans-binding.jar**:XMLBeans是一个强大的Java库,能够将...

    xfire依赖jar包

    10. **xfire-generator**: 代码生成工具,可以根据WSDL文件自动生成Java客户端和服务端代码,方便快速开发。 以上这些jar包共同构成了xfire框架的基础,它们相互协作,为开发者提供了强大而全面的Web服务开发环境。...

    XFire技术研究报告.doc

    3. **配置服务**:在Spring配置文件(如`UserService.aegis.xml`)中,定义服务的bean以及使用的序列化策略(如Aegis)。 ```xml &lt;bean id="userService" class="com.example.UserService"&gt; &lt;xfire:service...

    涉及的xfire所有jar包

    2. **Aegis Binding**:Aegis是xfire中的数据绑定模块,负责将Java对象转换为XML消息,反之亦然。它支持基本数据类型、集合、数组、枚举以及复杂对象的转换。 3. **Stax**:xfire使用StAX(Streaming API for XML)...

    xfire访问webservice客户端用到的jar包

    - `xfire-generator.jar`:代码生成工具,可以从WSDL文件自动生成Java客户端和服务端代码。 - `xfire-jaxb-binding.jar`:JAXB绑定器,用于XML/Java对象之间的转换。 - `xfire-jaxws.jar`:JAX-WS兼容性层,提供...

    xfire客户端包含所需要的jar

    2. **xfire-aegis-binding.jar**:Aegis绑定模块,提供数据类型到XML的映射,反之亦然。 3. **xfire-annotations.jar**:支持使用Java注解来定义Web服务接口和服务实现。 4. **xfire-client.jar**:客户端API,包括...

    xfire开发webservice接口开发(带有软件包)

    7. **WSDL生成和使用**: 学习如何通过Xfire自动生成WSDL文件,这是一个描述服务接口、操作和数据类型的XML文档,对服务消费者来说至关重要。 8. **异常处理和安全性**: 了解如何在Xfire中处理异常,以及如何通过...

    Webservices XFire框架的搭建与使用

    在pom.xml或build.gradle文件中添加XFire的相关依赖。 4. **编写服务接口和实现**:使用Java注解定义服务接口,比如使用`@WebService`标记接口。然后创建接口的实现类,这里可以使用JAXB注解将Java对象映射到XML。 ...

    XFire的所有jar包

    XFire提供了高效的SOAP处理、WSDL生成以及XML数据绑定等功能,使得开发人员能够快速、方便地实现Web服务的创建、发布和调用。 在“XFire的所有jar包”这个压缩包中,包含了XFire运行和开发所需的各种核心库文件。...

    webservice的xfire

    3. **动态代理**:XFire支持动态生成客户端代理,这意味着你无需手动编写客户端代码,只需提供服务的WSDL地址,XFire就能自动生成对应的客户端代理类。 4. **集成性**:XFire可以很好地与Spring框架集成,使得在...

    XFire.-Web.-Service-applications.rar_Java编程_Java_

    开发者可以通过定义一个普通的Java接口,并使用特定的注解(如@WsMethod)来标记服务方法,然后XFire会自动生成相应的WSDL(Web Service Description Language)文件,客户端可以通过这个WSDL来调用服务。...

    WebService(二):XFire实现WebService

    4. **动态代码生成**:基于JAXB(Java Architecture for XML Binding),XFire可以从WSDL文件动态生成Java客户端和服务器端代码。 5. **Aegis绑定**:XFire独有的Aegis绑定允许开发者使用非XML Java对象作为服务的...

    xfire开发jar文件

    1. xfire-all.jar:这是xfire的核心库,包含了大部分xfire的功能,包括核心的Web服务引擎、XML处理和协议支持等。 2. xfire-aegis.jar:Aegis绑定提供了将Java对象直接映射到SOAP消息的能力,使得数据交换更为简单...

    xfire架包集合

    10. **xfire-aegis-1.2.6.jar**:Aegis是XFire的一个子项目,提供了将Java对象映射到XML的工具,支持简单类型和复杂类型的映射。 11. **wsdl4j-1.5.2.jar**:WSDL4J是一个用于处理WSDL(Web Services Description ...

    xfire 所有JAR包

    - **xfire-aegis-1.2.6.jar**:Aegis绑定是XFire的一种数据绑定机制,能够将Java对象直接映射到XML,简化了数据交换的过程。 - **xfire-generator-1.2.6.jar**:代码生成器,可以自动生成基于WSDL的服务端和客户端...

    xfire实现webservce所要的包

    XFire可以自动生成WSDL文件,或者根据已有的WSDL文件生成Java类。 3. **Stubs and Skeletons**: XFire自动生成客户端和服务端的存根代码,使得调用Web服务如同调用本地方法一样简单。 4. **Transport**: XFire支持...

    xfire开发所需jar包

    2. 消息处理和序列化:xfire-aegis.jar和xfire-xmlbeans.jar等,提供了不同的XML序列化策略,Aegis支持基本类型和自定义类型的转换,而XmlBeans则依赖于XML Schema进行对象绑定。 3. SOAP支持:xfire-soap.jar,...

Global site tag (gtag.js) - Google Analytics