問題描述:用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>
待續