完整的webservice例子

sdxrh2005

贡献于2012-10-21

字数:6797 关键词: WEB服务/RPC/SOA

较完整的webservice例子 看了网上有很多关于xfir + spring 开发webservice服务的例子,本人进行了总结在这里介绍一个较完整的例子: 1、 在myeclipse中新建一个web工程xfireWS,导入需要的spring和xfire支持包, 2、 创建包及所需要的类文件 其中IDataService.java为服务接口类,IDataServiceImpl.java为接口实现类,TestServlet.java为测试用servlet类,IDataService.aegis.xml和IDataService.doc.xml为接口方法描述文件,名称应与接口名匹配,由xfire-aegis包支持。下面是类的具体代码: IDataService.java package com.ws.test; /** * WebService服务接口 * @author zhouyang * 2009-7-16 */ public interface IDataService { /** * 从WebService服务器上获取xml数据 * @param user * @param pwd * @return String xml数据 */ public String getXmlData(String userName, String pwd); /** * 发送xml数据到WebService服务器 * @param user * @param pwd * @param xmlData 转型为byte[]类型的xml数据 * @return String 发送成功或失败信息 */ public String sendXmlData(String userName, String pwd, byte[] xmlData); } IDataServiceImpl.java public class DataServiceImpl implements IDataService { public String getXmlData(String userName, String pwd) { //这里给出该方法的简单实现,你可以写更复杂的业务逻辑 String xmlData = ""; if("123".equals(userName) && "123".equals(pwd)){ xmlData = ""; xmlData += "Thinking In Java" + "Java & PatternEffective Java"; }else{ xmlData = "用户名和密码错误"; } return xmlData; } public String sendXmlData(String userName, String pwd, byte[] xmlData) { return null; } } TestServlet.java import java.io.IOException; import java.io.PrintWriter; import java.net.URL; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.codehaus.xfire.client.Client; /** * 通过get方式请求webservice,这里用servlet进行客户端调用处理 * */ public class TestServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String userName = req.getParameter("userName"); //用户名 String pwd = req.getParameter("pwd"); //密码 String ip = req.getLocalAddr(); int port = req.getServerPort(); String url = "http://" + ip + ":" + port + "/xfireWS/testService.ws?wsdl"; //wsdl描述文件路径 //调用客户端方法 String result =wsClient(url, "getXmlData", new Object[]{userName,pwd}); if(result.indexOf("=0) //设置输出格式,如果是异常信息则以html格式输出 resp.setContentType("text/xml"); else resp.setContentType("text/html"); resp.setCharacterEncoding("UTF-8"); PrintWriter out=resp.getWriter(); out.write(result); out.flush(); } /** * webservice客户端调用方法 * @param url wsdl描述文件路径 * @param methodName 服务方法名 * @param obj 服务方法参数数组 * @return String */ private String wsClient(String url, String methodName, Object[] obj) { Client client; try { client = new Client(new URL(url)); Object[] results = client.invoke(methodName, obj); return (String)results[0]; } catch (Exception e) { e.printStackTrace(); return "服务请求失败"; } } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } } 1 IDataService.aegis.xml 2 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 IDataService.doc.xml 用户名 密码 获取的xml数据 用户名 密码 转型为byte数组发送的xml数据 发送成功或失败信息 1 applicationContext.xml 2 6 7 8 3、web.xml文件和xfire-sevlet.xml文件,“xfire”与web.xml文件中servlet-name对应。 web.xml 内容 webservice demo contextConfigLocation classpath:applicationContext.xml classpath:org/codehaus/xfire/spring/xfire.xml org.springframework.web.context.ContextLoaderListener xfire org.springframework.web.servlet.DispatcherServlet xfire *.ws test com.ws.test.TestServlet test /testService.ws/getXmlData/* test /testService.ws/sendXmlData/* index.jsp xfire-sevlet.xml内容 com.ws.test.IDataService 4、 发布到tomcat服务器,启动服务器成功后,输入 http://localhost:8080/xfireWS/testService.ws?wsdl可以查看wsdl描述文件 输入 http://localhost:8080/xfireWS/testService.ws/getXmlData?userName=123&pwd=123可以得到webservice服务提供的返回值,为一个xml数据, 如果输入用户名和密码错误则有错误提示。 关于web.xml文件和xfire-sevlet.xml文件的配置这里不在重述,如有疑问可以在网上找到答案。

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 6 金币 [ 分享文档获得金币 ]
0 人已下载

下载文档

相关文档