XFire绑定Aegis自定义友好参数(复杂对象)

问题描述:用soapUI工具请求http://10.10.21.168:8001/web/services/FastRepairForSCADA?wsdl,解析出来的报文格式不符合规范,问题如下:

1.方法名的首字母没有大写;

2、入参的首字母没有大写;

3、属性的首字母没有大写;

说明:由于XFire会自动生成WSDL文件,所以对于其格式有时候需要规范一下,跨平台时需要根据报文格式来组装数据请求。

一.接口代码

public interface FastRepairForSCADA {

    /**
     * 同步SCADA终端停电事件
     *
     * @param RequestMessageType 消息类型对像
     * @return int 返回同步的数据条数
     */
    int EventOperation(RequestMessage requestMsg) throws Exception;
}

 

 

二.参数定义(部分代码)

RequestMessage对象里面包含三个子对象。

public class RequestMessage implements Serializable {

    protected Header header;

    protected Payload payload;

    protected Request request;

    public RequestMessage() {

    }

    public Header getHeader() {
        return header;
    }

    public void setHeader(Header header) {
        this.header = header;
    }

 

public class Payload implements Serializable {

    protected String zip;

    protected String txt;

    public Payload() {

    }

    public String getTxt() {
        return txt;
    }

    public void setTxt(String txt) {
        this.txt = txt;
    }

    public String getZip() {
        return zip;
    }

    public void setZip(String zip) {
        this.zip = zip;
    }
}

 

三.自定义友好参数

1.需要在接口包下定义文件:接口名+.aegis.xml。这里的文件名为FastRepairForSCADA.aegis.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<mappings>
    <mapping>
        <method name="EventOperation">
             <parameter index="0" mappedName="RequestMessage" componentType="com.comtop.dms.fastrepair.scada.RequestMessage" />
        </method>
    </mapping>
</mappings>

 

注:method的name需要和接口中定义的方法名一致。方才会将int0替换成RequestMessage。由于在Java规范中方法名为小写,而总线的标准报文中是首字母大写。这里也不知道怎么转换。

 

2.需要在对象的包下定义文件:ClassName+.aegis.xml。这里的文件名有三个(三个对象):

 

文件名:RequestMessage.aegis.xml

内容:

<?xml version="1.0" encoding="UTF-8"?>
<mappings>
 <mapping name="RequestMessage">
  <property name="header" mappedName="Header" componentType="com.comtop.dms.fastrepair.scada.Header"/>
        <property name="payload" mappedName="Payload" componentType="com.comtop.dms.fastrepair.scada.Payload"/>
        <property name="request" mappedName="Request" componentType="com.comtop.dms.fastrepair.scada.Request"/>
 </mapping>
</mappings>

 

文件名:Header.aegis.xml

内容:

<?xml version="1.0" encoding="UTF-8"?>
<mappings>
 <mapping name="Header">
        <property name="verb" mappedName="Verb" />
        <property name="noun" mappedName="Noun" />
        <property name="revision" mappedName="Revision" />
        <property name="authorizedCode" mappedName="AuthorizedCode" />
        <property name="messageID" mappedName="MessageID" />
        <property name="source" mappedName="Source" />
        <property name="destination" mappedName="Destination" />
        <property name="processID" mappedName="ProcessID" />
        <property name="processTime" mappedName="ProcessTime" />
        <property name="format" mappedName="Format" />
        <property name="testFlag" mappedName="TestFlag" />
        <property name="property" mappedName="Property" componentType="com.comtop.dms.fastrepair.scada.Property"/>
        <property name="comment" mappedName="Comment" />
 </mapping>
</mappings>

 

文件名:Payload.aegis.xml

内容:

<?xml version="1.0" encoding="UTF-8"?>
<mappings>
 <mapping name="Payload">
  <property name="zip" mappedName="Zip"/>
        <property name="txt" mappedName="Txt"/>
 </mapping>
</mappings>

 

文件名:Request.aegis.xml

内容:

<?xml version="1.0" encoding="UTF-8"?>
<mappings>
 <mapping name="Request">
        <property name="startTime" mappedName="StartTime"/>
        <property name="endTime" mappedName="EndTime"/>
        <property name="requestOption" mappedName="RequestOption"/>
 </mapping>
</mappings>

 

待续

 

 

发布了29 篇原创文章 · 获赞 4 · 访问量 6万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章