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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章