搭建工程前文以及介绍
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文件
这里不再进行客户端验证了