您的位置:首页 > 其它

注解的方式发布接口,解析XML及返回

2016-06-22 18:40 495 查看
/*获取通过WebService传过来的xml,数据校验通过解析后保存到数据库返回一个xml,数据校验不通过也返回一个XML*/

import java.sql.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;

import javax.jws.WebMethod;
import javax.jws.WebResult;
import javax.jws.WebService;

import org.apache.commons.lang.StringUtils;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import com.*.user;
import com.*.util.api.DtoUtil;
import com.neusoft.agileggfw.webservice.internal.cc22.Cc22Service;
import com.neusoft.agileggfw.webservice.internal.xml.XMLBandingData;

/*
* 这里是通过SpringMVC 整合CXF方式发布的接口;
* serviceName 为接口名;
* uploadUserInfo 为实现方法
*
* */

@Component
@WebService(serviceName = "/testJws", targetNamespace = "www.testJws.gov.cn")
public class JwsServiceImpl implements JwsService{

@Autowired
private user userdao;

@Autowired
private XMLBandingData xmlbandingdata;

@WebMethod
@WebResult(targetNamespace = "www.testJws.gov.cn")
@Transactional
@Override
public String uploadUserInfo(String xmlInput) {
//1.解析xmlInput
UserDto dto =resolveXml(xmlInput);
//2.校验
String errorMsg=checkIsNotNull(dto);
User user=new User();
//插入数据库中的User表中,此处省略
if(StringUtils.isBlank(errorMsg)){

//DtoUtil是一个复制dto的工具类,此处省略,这一段代码主要是保存解析及校验后的XML到数据库中
DtoUtil.copyProperties(dto, user);
userdao.save(user);
}
//4.返回XML
return xmlbandingdata.bandingUser(errorMsg);
}
private String checkIsNotNull(UserDto dto) {
String errorMsg="";

if(StringUtils.isBlank(dto.getUsername())){
errorMsg+="用户名不能为空,";
}
if(StringUtils.isBlank(dto.getId())){
errorMsg+="编号不能为空,";
}

return errorMsg;
}

private UserDto resolveXml(String xmlInput) {
UserDto dto = new UserDto();
try {
Document document = DocumentHelper.parseText(xmlInput);
Element root = document.getRootElement();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
Element USERNAME = root.element("username");//姓名
if(USERNAME!=null){
dto.setUsername(USERNAME.getText());
}
Element ID = root.element("id");//个人编号
if(ID!=null){
dto.setId(ID.getText());//
}

} catch (Exception e) {
e.printStackTrace();
}
return dto;
}

}

/*接口类*/

import java.text.ParseException;

import javax.jws.WebMethod;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.xml.ws.BindingType;
import javax.xml.ws.soap.SOAPBinding;

/*@WebMethod(operationName = "uploadUserInfo") 为接口向外提供的调用方法*/

@WebService(targetNamespace = "www.testJws.gov.cn", name = "testJWS")
@BindingType(value = SOAPBinding.SOAP11HTTP_BINDING)
public interface JwsService {
@WebResult(targetNamespace = "www.testJws.gov.cn", name = "testjavaWbs")
@WebMethod(operationName = "uploadUserInfo")
String uploadUserInfo(String xmlInput) throws ParseException;
}

import org.springframework.stereotype.Repository;

import com.*.User;
import com.*.PlatformDao;

import java.io.IOException;
import java.io.InputStream;
import java.io.Serializable;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.sql.Blob;
import java.sql.Clob;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import javax.annotation.Resource;
import javax.sql.DataSource;

import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.CriteriaSpecification;
import org.hibernate.criterion.Projection;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.hibernate.internal.CriteriaImpl;
import org.hibernate.internal.SessionImpl;
import org.hibernate.transform.ResultTransformer;
import org.hibernate.transform.Transformers;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.ConnectionCallback;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.util.Assert;
import org.springframework.web.multipart.MultipartFile;

public abstract class PlatformDao<T>{

@Resource(name = "sessionFactory")
private SessionFactory sessionFactory;

@Resource(name = "dataSource")
private DataSource dataSource;

protected abstract Class<T> getEntityClass();

}

public class Cc22Dto{

private String username;
private String id;

public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}

public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}

/*
* 对应的实体和hebinate映射此处省略
* User.java
user.hbm.xml
等*/

/*以上通过SpringMVC与cxf整合后发布,此处略,这里是在本地tomcat中发布的*/

/*客户端调用以上接口
* 这里也是用SpringMVC的方式调用,其他方式略
* */

import java.text.ParseException;

import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;

import com.*。JwsService;

public class TestClient {

public static void main(String[] args) {
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(JwsService.class);
factory.setAddress("http://localhost:8080/services/testJWS?wsdl");
JwsService client = (JwsService) factory.create();
String inputXml="<?xml version='1.0' encoding='UTF-8'?>"+
"<row>"+
"<getType>testJWS</getType>"+
"<username>username</username>"+
"<id>8888</id>"+
"</row>";

try {
client.uploadUserInfo(inputXml);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}

 

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringWriter;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.sql.Blob;
import java.sql.Date;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.List;

import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.lang.StringUtils;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import org.springframework.stereotype.Service;

@Service
public class XMLBandingData {

public String bandingUser(String errorMsg) {
Document document = DocumentHelper.createDocument();
Element results = document.addElement("results");
Element WEBNAME = results.addElement("WEBNAME");  //接口名称
WEBNAME.addText("testJWS");
Element lastTime = results.addElement("lastTime");  //返回时间
lastTime.addText(DateUtil.getDate().toString());
Element state = results.addElement("state");    //状态:1--成功    0--失败
if(StringUtils.isBlank(errorMsg)){
state.addText("1");
}else{
state.addText("0");
}
Element errorMsg1 = results.addElement("errorMsg");   //错误信息
errorMsg1.addText(errorMsg);
StringWriter sw = new StringWriter();
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter writer = new XMLWriter(sw, format);
try {
writer.write(document);
} catch (IOException e) {
e.printStackTrace();
}
return sw.toString();
}
}


 

<!--  入参 -->
<?xml version="1.0" encoding="UTF-8"?>
<row>
<getType>testJWS</getType>						//接口名称
<username>username</username>
<id>8888</id>     	//

……
……
</row>


 

<!--出参 -->

<?xml version="1.0" encoding="UTF-8"?>
<results>
<webName> testJWS</webName >								//接口名称
<lastUpdate>2015-04-09 17:23:59</lastUpdate>		//返回时间
<state>1</state>  //状态
<errorMsg></errorMsg>									//错误信息
</results>


以上主要描述发布接口对接收到的XML处理方法及返回xml.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: