注解的方式发布接口,解析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.
相关文章推荐
- laravel5.2.36 Request验证类错误输出不显示问题
- 并查集
- 自适应网页设计
- ExecutorService多线程
- Spring MVC将异常映射到HTTP状态码
- 关hbase安装的困惑整了两天了还是这个报错!
- thinkphp 笔记
- [乱搞] BZOJ 4245 [ONTAK2015]OR-XOR
- 第二次
- select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
- centos忘记root密码解决方法
- js随着页面滑动的图片
- [并查集] BZOJ 4243 交朋友
- ViewPager实现Banner图的展示
- viewpager 创建banner时遇到的问题
- Java 常用排序算法/Java经典问题算法
- cookie中文乱码解决(php/js)
- linux下读取dmi信息的方法
- 超好用的网页浮动广告代码
- 长期默默耕耘在一卡通行业的一个团队