WebService开发示例.doc_第1页
WebService开发示例.doc_第2页
WebService开发示例.doc_第3页
WebService开发示例.doc_第4页
WebService开发示例.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

开发WebService2第一步新建WebService工程2第二步新建WebService4第三步开发Java代码6第四步部署与测试7开发WebService Client8安装插件8第一步新建Java工程8第二步生成client8第三步设置class path11第四步开发java代码12第五步生成client.jar12开发Web Project13第一步新建Web工程13第二步配置class path13第三步编写测试类13开发WebService第一步新建WebService工程第一步,新建一个名为testWS的WebService工程:使用默认选项工程名称:testWS使用默认选项点击finish完成之后,生成的工程如下所示:第二步新建WebService第二步,将在testWS工程下创建两个WebService:TestService与LoginService在工程上点右键,选择“new”“other”“MyEclipse”“Web Services”“Web Service”,如下图所示:选中“Create new Java bean”首先选择Java package,这里我们新建一个:org.esp.webservice。在Web service name栏中填写TestService,然后Service interface、Service impl class栏中的内容会自动生成。点击“Finish”之后,services.xml内容如下:TestServiceorg.esp.webservice.ITestServiceorg.esp.webservice.TestServiceImplwrappedliteralapplication用同样的方法,新建LoginService,完成后services.xml内容如下:TestServiceorg.esp.webservice.ITestServiceorg.esp.webservice.TestServiceImplwrappedliteralapplicationLoginServiceorg.esp.webservice.ILoginServiceorg.esp.webservice.LoginServiceImplwrappedliteralapplication第三步开发Java代码1、编写返回结果公共类org.esp.datatype.VOResultpublic class VOResult implements Serializable/* * */private static final long serialVersionUID = -1486430583555128124L;private int returnCode = 0;private String returnDesc = ;public int getReturnCode() return returnCode;public void setReturnCode(int returnCode) this.returnCode = returnCode;public String getReturnDesc() return returnDesc;public void setReturnDesc(String returnDesc) this.returnDesc = returnDesc;2、开发用于获得登录用户的返回结果类package org.esp.datatype;import org.esp.entity.EspAccountsT;/* * 用于获得登录用户的返回结果类 * 为了更好地进行错误处理, * 服务端的异常不直接暴露给客户端,而是把错误代码和错误信息封装起来 * 客户端根据getReturnCode()和getReturnDesc()方法获得成功或失败的信息 * 如果getReturnCode()!=0,则说明有异常发生 * author wxp * */public class VOResultGetLoginUser extends VOResult /* * */private static final long serialVersionUID = 1L;private EspAccountsT user;public EspAccountsT getUser() return user;public void setUser(EspAccountsT user) this.user = user;3、开发持久层代码(略)4、修改IloginService,添加方法public interface ILoginService public String example(String message);/* * 用户注册 * param username * param password * param truename * return */public VOResult userRegiest(String username, String password, String truename);/* * 登录验证 * param username * param password * return * throws LoginFaildException */public VOResultGetLoginUser getLoginUser(String username, String password);/* * 根据角色ID获得能操作的菜单 * param roleId * return */public String getMenuStringByRoleId(Long roleId) throws Exception;5、修改IloginService,添加接口的实现方法(略)第四步部署与测试部署完成之后,启动Tomcat并测试::8888/testWS/services在之前的第二步,我们创建了两个WebService,分别是TestService和LoginService。相应的,在本页面里会出现两个WSDL的链接。然后点击第一个链接::8888/testWS/services/LoginService?wsdl,IE显示如下图:IE显示如上图,说明部署成功。接下来,测试:8888/testWS/services/TestService?wsdl开发WebService Client安装插件安装插件Axis2_Codegen_Wizard_1.2.0:拷贝到MyEclipseeclipseplugins目录下,然后重启MyEclipse第一步新建Java工程工程名称:testWSClient(略)第二步生成client在src目录上点右键newOther,选择Axis2 Wizard输入WSDL文件的位置。刚才,我们测试了两个WSDL地址;现在要为这两个WSDL生成客户端。首先输入第一个WSDL::8888/testWS/services/LoginService?wsdl。(当然,也可以把页面保存为文件,然后选择这个文件。)“Codegen option”选择customer。接下来,有几个选项:Generate test case,Generate clientsidecode,Generate server side code,Generate Both with all classes for every elements on Schemas。这时先选中“Generate Both with all classes for every elements on Schemas”,其它的选项可以自行体验。选择代码输出的位置。选中“Browse and select a project”,浏览找到当前工程,然后点“完成”,正常的话界面如下所示:出现这个界面,说明client代码生成成功。第二个WSDL,可以用同样的方法生成。第三步设置class path完成第二步之后,在MyEclipse中刷新当前工程,会发现生成了许多代码,如下图所示:里面有许多编译错误,解决这些错误需要设置class path。把axis2相关jar包加入到编译路径,问题解决。之前,我们开发了两个WebService:TestService与LoginService。创建客户端时,会为每个WebService生成一个存根(stub),即图中看到的TestServiceStub和LoginServiceStub。 在testWS工程下,org.esp.webservice.ItestService类中写了一个方法:public String example(String message)。在生成的client中,也相应生成了Example.java和ExampleResponse.java。这些类的使用方法下文会提到。第四步开发java代码上一步生成的客户端用起来比较复杂,为了便于客户端开发,需要对它进行封装。接下来,以TestService接口为例,讲解client的用法。 新建org.esp.webservice.client.TestServiceImpl.java,代码如下:package org.esp.webservice.client;import java.rmi.RemoteException;import org.esp.webservice.Example;import org.esp.webservice.ExampleResponse;import org.esp.webservice.TestServiceStub;/* * 开发TestServiceImpl对生成的客户端进行封装以简化开发 * author wxp * */public class TestServiceImpl /存根private TestServiceStub stub = null;/* * 默认构造方法 */public TestServiceImpl() throws Exception /参数为WSDL地址,去掉末尾的?wsdlstub = new TestServiceStub(:8888/testWS/services/TestService);/* * 带参数构造器 * WebService部署的地址经常会改变 * 为了适应这种情况,需要把部署地址作为参数传递给构造器。 * param url Server端部署地址 * throws Exception */public TestServiceImpl(String url) throws Exception stub = new TestServiceStub(url);public String example(String message) /服务端有example(String message)方法;相应地,在客户端生成了Example类Example example = new Example();/设置参数。/如果example()方法有多个参数,Example类会有多个设置参数方法,分别为setIn0到setInNexample.setIn0(message);try /为每个方法,生成了一个Response类。/对应于example()方法,生成了ExampleResponse类ExampleResponse response = stub.example(example);return response.getOut(); catch (RemoteException e) e.printStackTrace();return null;/* * main方法,用于测试 * param args */public static void main(String args) try TestServiceImpl impl = new TestServiceImpl(:8888/testWS/services/TestService);System.out.println(impl.example(这里是一个测试); catch (Exception e) / TODO Auto-generated catch blocke.printStackTrace(); 代码完成后,需要立即验证正确性。如果在这里出现问题,会给今后的开发带来比较大的麻烦。 验证方法:运行main方法,查看输出: LoginService的客户端开发第五步生成client.jar 同一个WebService,可以被多个外部应用调用同时,同一个外部应用,也可能会访问多个WebService。为避免重复编写代码,可以把客户端打成jar包供不同的外部应用来调用。 打包方法:testWSClient工程中,在src上点击右键,选择Export,出现如下界面:点击“Next” 在开发过程中,WebService的代码可能会经常修改,相应地,客户端经常会需要重新生成。为简化生成步骤,可以生成一个ant文件来自动重新打包。选中,然后点击“Browse”:点击OK,回到上一界面,点击Next,Finish然后,在Package Emplorer里会出现CreateClientJar.jardesc,在它上面点击Create Jar即可快速重新打包。开发Web Project第一步新建Web工程工程名称:TestWeb第二步配置class path把Axis2相关jar包与上一步生成的testWSClient.jar加入到class path第三步编写测试类package org.esp.login.web.action;import org.esp.entity.EspAccountsT;import org.esp.webservice.LoginFaildExceptionException;import org.esp.webservice.client.LoginServiceImpl;public class TestLogin public static void main(String args) try LoginServiceImpl impl = new LoginServ

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论