问题描述:用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>
待续