我们项目与其他系统集成的目录结构,这里的都是提供给对外系统调用的webService接口。
下面,把关于这些内容de文件一一贴出来:
module-ws.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:jaxws="http://cxf.apache.org/jaxws"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd">
<import resource="classpath*:META-INF/cxf/cxf.xml"/>
<import resource="classpath*:META-INF/cxf/cxf-servlet.xml"/>
<import resource="classpath*:META-INF/cxf/cxf-extension-xml.xml"/>
<bean id="mdsBaseLineImportWsServiceImpl" class="avicit.mms.pdm.mdsbaselineimportws.ws.impl.MdsBaseLineImportWsServiceImpl"></bean>
<jaxws:endpoint id="mdsBaseLineImportWsService" implementor="#mdsBaseLineImportWsServiceImpl" address="/mdsBaseLineImportWsService">
</jaxws:endpoint>
<!--测试访问地址 http://localhost:9080/mms/ws/mdsBaseLineImportWsService?wsdl-->//这里是别的系统调用的地址
</beans>
MdsBaseLineImportWsService.java
package avicit.mms.pdm.mdsbaselineimportws.ws;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
@WebService(targetNamespace = "http://ws.mdsbaselineimportws.pdm") //webService接口的命名空间,不过不一定需要,本次接口集成的过程中,没用到
public interface MdsBaseLineImportWsService {
@WebMethod(operationName = "addBaseLine")
@WebResult(name = "result")
public String addBaseLine(@WebParam(name = "baseLineInfoXml") String baseLineInfoXml) throws Exception;
}
MdsBaseLineImportWsServiceImpl.java
import avicit.mms.mds.mdsbaselineimport.dto.MdsBaselineImportDTO;
import avicit.mms.mds.mdsbaselineimport.service.MdsBaselineImportService;
import avicit.mms.pdm.mdsbaselineimportws.ws.MdsBaseLineImportWsService;
import avicit.platform6.commons.utils.JsonHelper;
import com.alibaba.druid.support.json.JSONUtils;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.core.type.TypeReference;
import org.json.XML;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import javax.jws.WebService;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@WebService(endpointInterface = "avicit.mms.pdm.mdsbaselineimportws.ws.MdsBaseLineImportWsService", targetNamespace = "http://ws.mdsbaselineimportws.pdm")
public class MdsBaseLineImportWsServiceImpl implements MdsBaseLineImportWsService {
private static final Logger logger = LoggerFactory.getLogger(MdsBaseLineImportWsServiceImpl.class);
@Autowired
private MdsBaselineImportService mdsBaselineImportService;
@Override
public String addBaseLine(String baseLineInfoXml) throws Exception {
Map<String, Object> returnInfo = new HashMap<String, Object>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Map<String, Object> jsonData = new HashMap<String, Object>();
try {
jsonData = (Map<String, Object>) JSONObject.parse(XML.toJSONObject(baseLineInfoXml).get("BaseLine").toString());
} catch (Exception e) {
logger.info("xml格式错误***************");
e.printStackTrace();
returnInfo.put("flag", "0");
returnInfo.put("ErrorMessage", "xml格式错误:" + e.getMessage());
return JSONUtils.toJSONString(returnInfo);
}
if (null == XML.toJSONObject(baseLineInfoXml).get("BaseLine")) {
logger.info("xml中不包含BaseLine节点");
returnInfo.put("flag", "0");
returnInfo.put("ErrorMessage", "xml中不包含BaseLine节点");
return JSONUtils.toJSONString(returnInfo);
}
// 转换成List之前需判断字符串中是否已包含[],如果没有,转换时会发生异常
String jsonStr = JSONArray.toJSONString(jsonData);
if (!jsonStr.startsWith("[")) {
jsonStr = "[" + jsonStr + "]";
}
List<Map<String, Object>> data = JsonHelper.getInstance().readValue(jsonStr, sdf, new TypeReference<List<Map<String, Object>>>() {
});
if (null != data && data.size() > 0) {
try {
for (Map<String, Object> map : data) {
MdsBaselineImportDTO dto = new MdsBaselineImportDTO();
dto.setPdmBaselineCode((String) map.get("Number"));
dto.setPdmBaselineName((String) map.get("Name"));
dto.setPdmBaselineType((String) map.get("Type"));
dto.setPdmBaselineStatus((String) map.get("State"));
dto.setPdmLastModified(sdf.parse((String) map.get("LastModified")));
dto.setProductName((String) map.get("Product"));
dto.setIsImportedMes("N");
mdsBaselineImportService.insertMdsBaselineImport(dto);
}
} catch (Exception e) {
logger.info("插入基线表MDS_BASELINE_IMPORT出错");
e.printStackTrace();
returnInfo.put("flag", "0");
returnInfo.put("ErrorMessage", "插入基线表MDS_BASELINE_IMPORT出错:" + e.getMessage());
return JSONUtils.toJSONString(returnInfo);
}
return JSONUtils.toJSONString(returnInfo);
} else {
returnInfo.put("flag", "0");
returnInfo.put("msg", "接口数据格式中PBOM值为空,请核实");
return JSONUtils.toJSONString(returnInfo);
}
}
}