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的原因造成的,需要您自己排除

 

posted @ 2017-03-22 13:07  青春不打烊  阅读(698)  评论(0编辑  收藏  举报