CXF实现WebService对对象和XML文件的发布
发布时间:2020-12-17 00:40:50 所属栏目:安全 来源:网络整理
导读:搭建工程前文以及介绍 1..........................创建POJO类User.java package ObjectInterface;public class User {private String username;private String phoneNO;private int age;public String getUsername() {return username;}public void setUser
搭建工程前文以及介绍 1..........................创建POJO类User.java package ObjectInterface; public class User { private String username; private String phoneNO; private int age; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPhoneNO() { return phoneNO; } public void setPhoneNO(String phoneNO) { this.phoneNO = phoneNO; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } 2......................创建接口文件 package ObjectInterface; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebService; @WebService public interface GetUserInfo { @WebMethod //封装对象 public User getUserInfo(@WebParam(name="username")String username); //封装Document数据,返回XML字符串 public String XMLInfo() throws Exception; } 3.......................创建实现类 package ObjectInterface; import org.jdom.Document; import org.jdom.Element; import util.OperationXMLByJdom; public class GetUserInfoImp implements GetUserInfo { //封装对象 public User getUserInfo(String username) { User user = new User(); user.setUsername(username); user.setAge(100); user.setPhoneNO("1234567"); return user; } //封装Document数据,返回XML字符串 public String XMLInfo() throws Exception { // 创建根节点 list; Element root = new Element("list"); // 根节点添加到文档中; Document Doc = new Document(root); // 此处 for 循环可替换成 遍历 数据库表的结果集操作; for (int i = 0; i < 5; i++) { // 创建节点 user; Element elements = new Element("user"); // 给 user 节点添加属性 id; elements.setAttribute("id","" + i); // 给 user 节点添加子节点并赋值; // new Element("name")中的 "name" 替换成表中相应字段,setText("xuehui")中 "xuehui // 替换成表中记录值; elements.addContent(new Element("name").setText("xuehui")); elements.addContent(new Element("age").setText("28")); elements.addContent(new Element("sex").setText("Male")); // 给父节点list添加user子节点; root.addContent(elements); } OperationXMLByJdom xml2String = new OperationXMLByJdom(); String xmlDoc = xml2String.doc2String(Doc); return xmlDoc; } } (上文用到的OperationXMLByJdom) 3.....................................OperationXMLByJdom package util; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileWriter; import java.io.StringReader; import org.jdom.Document; import org.jdom.input.SAXBuilder; import org.jdom.output.Format; import org.jdom.output.XMLOutputter; public class OperationXMLByJdom { /** * DOCUMENT格式化输出保存为XML * * @param doc JDOM的Document * @param filePath 输出文件路径 * @throws Exception */ public static void doc2XML(Document doc,String filePath) throws Exception{ Format format = Format.getCompactFormat(); format.setEncoding("UTF-8"); //设置XML文件的字符为UTF-8 format.setIndent(" ");//设置缩进 XMLOutputter outputter = new XMLOutputter(format);//定义输出,在元素后换行,每一层元素缩排四格 FileWriter writer = new FileWriter(filePath);//输出流 outputter.output(doc,writer); writer.close(); } /** * 字符串转换为DOCUMENT * * @param xmlStr 字符串 * @return doc JDOM的Document * @throws Exception */ public static Document string2Doc(String xmlStr) throws Exception { java.io.Reader in = new StringReader(xmlStr); Document doc = (new SAXBuilder()).build(in); return doc; } /** * Document转换为字符串 * * @param xmlFilePath XML文件路径 * @return xmlStr 字符串 * @throws Exception */ public static String doc2String(Document doc) throws Exception { Format format = Format.getPrettyFormat(); format.setEncoding("UTF-8");// 设置xml文件的字符为UTF-8,解决中文问题 XMLOutputter xmlout = new XMLOutputter(format); ByteArrayOutputStream bo = new ByteArrayOutputStream(); xmlout.output(doc,bo); return bo.toString(); } /** * XML转换为Document * * @param xmlFilePath XML文件路径 * @return doc Document对象 * @throws Exception */ public static Document xml2Doc(String xmlFilePath) throws Exception { File file = new File(xmlFilePath); return (new SAXBuilder()).build(file); } } 5..............................发布接口 <!-- 发布对象类型接口 --> <jaxws:server id="GetUserInfo" serviceClass="ObjectInterface.GetUserInfo" address="/GetUserInfo"> <jaxws:serviceBean> <ref bean="userInfo" /> </jaxws:serviceBean> </jaxws:server> <bean id="userServiceBean" class="com.ComplexUserService" /> <bean id="userInfo" class="ObjectInterface.GetUserInfoImp"></bean> 6.............................直接启动服务器就Ok了? 查看一下WSDL文件 这里不再进行客户端验证了 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- angularjs – 错误:检测到AotPlugin但它是错误类的实例
- 我在服务器上为shell脚本中的cURL获取http代码为000或超时
- angularJS ng-pattern无效
- 配置vim-diff以在将其用于svn-diff时显示不同的颜色
- Scala:如何引用超类中扩展类的类型?
- angularjs – 如何排除角度“10 $digest()迭代达到”错误
- 如何在bash if/else语句中使用文件grep比较?
- angularjs – 如何在节点/ angular / nginx应用程序上强制缓
- scala – 在2.9.1和2.10每晚平铺一个选项[List [Int]]的差异
- .net – 实现托管属性处理程序Shell扩展的正确方法是什么?