webservice入门(eclipse,axis2)
webservice中的一些基础概念
介绍:webservice是一种跨平台,跨语言,跨操作系统,夸防火墙通信的远程调用技术
webservice的发布:
axis2发布
cxf发布
ksoap2-Android发布
webservice相关术语
比如说银行给众多客户提供服务,
xml:扩展型可标记语言;实现数据交换的格式
soap:简单对象访问协议;xml调用方法的规范跟多方调用须遵守的webservice内部协议(相当于银行跟客户的合同约束双方按章办事)
wsdl:web描述性语言;(类似于说明书)
uddi:通用描述;
1.首先下载有关axis2的jar文件,下载地址为:http://axis.apache.org/axis2/java/core/download.cgi
2.把下载好的文件解压,然后在eclipse中:windows->preferences->Web services->Axis2 preferences->Axis2 Runtime;选择解压好的文件(注意不是要定位到bin)
3.准备工作算是做完了,现在来时实操,首先创建一个东动态web项目,这里需要特别注意的是如果用的tomcat7及以上版本的话请在创建动态web项目的时候把servlet的版本设置成2.5(默认为3.0),不然后面发布服务的时候会有相关报错
4.编写服务端代码
接口代码:(这里需要注意,如果注解不能用可能是服务器没加载进去,只需要进行如图操作即可)
1 package com.ywx; 2 3 import javax.jws.WebService; 4 5 @WebService 6 public interface HelloWorld { 7 String sayHi(String name); 8 }
实现类代码:
package com.ywx.impl; import java.text.SimpleDateFormat; import java.util.Date; import javax.jws.WebService; import com.ywx.HelloWorld; //@WebService(endpointInterface="com.ywx.HelloWorld",serviceName="HelloWorldWs") public class HellowWorlds implements HelloWorld{ @Override public String sayHi(String name) { return name+"--------------"+new SimpleDateFormat("yyyy年MM月dd日").format(new Date()); } }
5.这样一个最简单的服务端代码就编写好了,下一步:发布
在刚才编写的动态web项目上新建web server
6.发布时的相关设置
7.后面的如果不报错基本上都是下一步了
8.发布成功后eclipse会自动创建一个web项目的Client项目,Client项目为客户端项目,可进行测试用
9.运行客户端测试用例可在控制台打印出想要的结果,
10.通过以上步骤的操作一个完整的webservice服务端跟客户端的测试已经完成了,实际项目中客户端调用这样调用怕是太简单了,可以参考下面的例子调用
参考博文:http://www.cnblogs.com/markxue/archive/2012/09/01/2667123.html
package com.ywx.impl; import javax.xml.namespace.QName; import org.apache.axis.client.Call; import org.apache.axis.client.Service; /** * 注意包别引错了 * @author wuyawei */ public class mainTest { public static void main(String[] args) throws Exception { //服务器wsdl端文件中生成的路径直接拷贝过来就行 String url = "http://localhost:8080/serviceTest/services/HellowWorlds"; //注意Service跟Call的包别引错了 Service service = new Service(); Call call = (Call) service.createCall(); //设置发布地址 call.setTargetEndpointAddress(new java.net.URL(url)); //设置服务端接口中的方法名称 call.setOperationName(new QName("sayHi")); /** * 第一个参数:设置服务端接口中的参数(开发过程中参数过多可考虑把多个参数打封装成json串) * 第二个参数:设置传入的参数类型,一般都用String,具体其他的课看源码 * 第三个参数:表示入参,有IN,OUT,INOUT三个值 */ call.addParameter(new QName("name"), org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN); //设置调用后返回的结果类型,此处为String类型 call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING); call.setUseSOAPAction( true ); //设置url call.setSOAPActionURI(url); //传入的参数值,实际开发中应该是json串 String result = (String) call.invoke( new Object[]{"18129478"}); System.out.println(result); } }
新手教学,欢迎大牛指导评论,勿言恶语,
在您的操作过程中可能会遇到很多意想不到的错误,很多都是jar的原因造成的,需要您自己排除