Java编写简单的WebService实例.doc_第1页
Java编写简单的WebService实例.doc_第2页
Java编写简单的WebService实例.doc_第3页
Java编写简单的WebService实例.doc_第4页
Java编写简单的WebService实例.doc_第5页
免费预览已结束,剩余15页可下载查看

下载本文档

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

文档简介

利用Java编写简单的WebService实例 使用Axis编写WebService比较简单,就我的理解,WebService的实现代码和编写Java代码其实没有什么区别,主要是将哪些Java类发布为WebService。下面是一个从编写测试例子到发布WebService,以及编写测试代码的过程介绍。 本例子的WebService提供了两个方法,分别是sayHello和sayHelloToPerson,第一个只是返回一个Hello字符串,没有参数,第二个函数接受一个字符串作为参数,返回Hello 参数值,该例子比较简单,但是清楚的说明了从编写代码到发布为WebService以及测试编写好的WebService全过程。编写服务代码 服务代码提供了两个函数,分别为sayHello和sayHelloToPerson,源代码如下:Code/*/*Filename:HelloService.java*Version:v1.0*CreatedonAug2,20089:40:20AM*DesignedbyStephen*(c)Copyright2008*/packagecom.sinosoft.webservice;/*/*authorStephen*Testwebservice*/publicclassHelloService/*/*不带参数的函数*return返回Hello字符串*/publicStringsayHello()returnHello;/*/*带参数的函数*paramname*名称*return返回加上名称的欢迎词*/publicStringsayHelloToPerson(Stringname)if(name=null|name.equals()name=nobody;returnHello+name;发布WebService 要将上边写的HelloService类发布为WebService,需要先搭建Web应用。下面是在Tomcat下使用Axis创建WebService服务的例子。在Tomcat下创建Web应用 在该例子中,在Tomcat下创建了一个context path为ws的WEB应用。1. 在Tomcat的webapps下创建如下文件系统wsWEB-INFlibclasses2. 在WEB-INF文件夹下创建web.xml文件,该文件的内容如下:CodeApache-Axisorg.apache.axis.transport.http.AxisHTTPSessionListenerAxisServletApache-AxisServletorg.apache.axis.transport.http.AxisServletAdminServletAxisAdminServletorg.apache.axis.transport.http.AdminServlet100SOAPMonitorServiceSOAPMonitorServiceorg.apache.axis.monitor.SOAPMonitorServiceSOAPMonitorPort5001100AxisServlet/servlet/AxisServletAxisServlet*.jwsAxisServlet/services/*SOAPMonitorService/SOAPMonitor!-AdminServlet/servlet/AdminServlet-5wsdltext/xmlxsdtext/xmlindex.jspindex.htmlindex.jws在上面的web.xml中主要是配置了axis的相关配置。axis的相关配置在上述的web.xml文件中已经对axis进行了配置,但是还需要进行额外的配置。复制axis相关的jar文件将axis的相关jar文件复制到WEB-INFlib文件夹下。这些文件包括:activation.jaraxis.jaraxis-ant.jaraxis-schema.jarcommons-discovery-0.2.jarcommons-logging-1.0.4.jarjaxrpc.jarlog4j-1.2.8.jarmailapi.jarsaaj.jarwsdl4j-1.5.1.jarxmlsec-1.3.0.jar复制WebService服务主文件将HelloService.java编译后的class文件复制到WEB-INFclasses文件夹下,也就是说在WEB-INFclasses文件夹下的文件夹结构为:comsinosoftwebservice,在webservice文件夹下有一个helloservice.class文件。测试发布的Web应用启动Tomcat服务,打开IE浏览器,访问地址http:host:port/ws/services,如果看到如下界面就说明AXIS部署成功了。发布WebService发布WebService需要使用现有的AdminService来实现,这里我写了一个批处理文件来发布WebService,以后如果需要发布其他文件,只需要修改相应的参数就可以了。创建deploy.wsdd文件文件deploy.wsdd内容如下所示:Code创建发布WebService服务的批处理文件批处理文件deploywebservice.bat内容如下:Codejava-cpE:StephenLibaxislibactivation.jar;E:StephenLibaxislibaxis-ant.jar;E:StephenLibaxislibaxis-schema.jar;E:StephenLibaxislibaxis.jar;E:StephenLibaxislibcommons-discovery-0.2.jar;E:StephenLibaxislibcommons-logging-1.0.4.jar;E:StephenLibaxislibjaxrpc.jar;E:StephenLibaxisliblog4j-1.2.8.jar;E:StephenLibaxislibmailapi.jar;E:StephenLibaxislibsaaj.jar;E:StephenLibaxislibwsdl4j-1.5.1.jar;E:StephenLibaxislibxmlsec-1.3.0.jarorg.apache.axis.client.AdminClient-lhttp:/localhost:8090/ws/services/AdminServicedeploy.wsdd其中E:StephenLibaxislib是存放axis对应的jar文件的文件夹,现在将所有的jar文件都加入到classpath中进行执行。-l后的参数是本地要发布WebService的AdminService对应的访问地址。最后deploy.wsdd是对应的配置文件名称。发布WebService服务将deploy.wsdd文件和deploywebservice.bat文件复制到同一个文件夹下,执行deploywebservice.bat批处理文件,就可以将deploy.wsdd中描述的Java类发布为WebService。发布完成之后在访问http:/host:port/ws/services如下图所示:从上图可以看出,发布成功后,多了一个HelloServices的服务。这样就说明HelloService发布成功了。查看HelloServices的wsdl访问http:/host:port/ws/services/HelloServices?wsdl可以看到如下wsdl的内容:Code用Java调用WebService实例下面是用Java调用刚发布的WebService例子。Code/*Filename:TestHelloService.java*Version:v1.0*CreatedonAug2,20089:54:10AM*DesignedbyStephen*(c)Copyright2008*/.sinosoft.webservice;importjava.io.IOException;.MalformedURLException;space.QName;importjavax.xml.rpc.ServiceException;importorg.apache.axis.client.Call;importorg.apache.axis.client.Service;mons.logging.Log;mons.logging.LogFactory;/*authorStephen*测试调用WebService*/publicclassTestHelloServiceprivatestaticfinalLoglog=LogFactory.getLog(TestHelloService.class);privatestaticfinalStringHELLO_SERVICE_ENDPOINT=http:/localhost:8090/ws/services/HelloServices?wsdl;publicstaticvoidmain(Stringargs)TestHelloServicetester=newTestHelloService();/tester.callSayHello();tester.callSayHelloToPerson();publicvoidcallSayHello()tryServiceservice=newService();Callcall=(Call)service.createCall();call.setTargetEndpointAddress(.URL(HELLO_SERVICE_ENDPOINT);call.setOperationName(newQName(/,sayHello);call.setReturnType(org.apache.axis.Constants.XSD_STRING);tryStringret=(String)call.invoke(newObject);System.out.println(Thereturnvalueis:+ret);return;catch(IOExceptione)e.printStackTrace();catch(MalformedURLExceptione)e.printStackTrace();catch(ServiceExceptione)e.printStackTrace();log.error(callsayHelloserviceerror!);publicvoidcallSayHelloToPerson()tryServiceservice=newService();Callcall=(Call)service.createCall();call.setTargetEndpointAddress(.URL(HELLO_SERVICE_ENDPOINT);call.setOperationName(newQName(/,sayHelloToPerson);call.addParameter(name,org.apache.axis.Constants.XSD_STRING,javax.xml.rpc.ParameterMode.IN);call.setReturnType(org.apache.axis.Constants.XSD_STRING);tryStringret=(String)call.invoke

温馨提示

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

评论

0/150

提交评论