webService的简单学习使用

一 . 发布WebService 服务

  a.在类上或者相应类的接口或者抽象类上添加注解@WebService

    比较好的方式可以这样,只发布一个服务即可

    

/**
 * 提供服务的统一继承类
 * @author vtstar
 *
 */
public abstract class AbstractWS {
    public abstract String execute(String param) ;
}
/**
 * 业务实现类
 * @author vtstar
 */
public class Good extends AbstractWS {

    @Override
    public String execute(String param) {
        // 业务逻辑操作
        //......
        
        return "Good class execute : param ->" + param;
    }
}
/**
 * 业务实现类
 * @author vtstar
 */
public class Good extends AbstractWS {

    @Override
    public String execute(String param) {
        // 业务逻辑操作
        //......
        
        return "Good class execute : param ->" + param;
    }
}
/**
 * 业务实现类
 * @author vtstar
 */
public class Hello extends AbstractWS {

    @Override
    public String execute(String param) {
        // 业务逻辑操作
        //......
        
        return "Hello class execute : param ->" + param;
    }

}
/**
 * 业务实现类
 * @author vtstar
 */
public class Nice extends AbstractWS {

    @Override
    public String execute(String param) {
        // 业务逻辑操作
        //......
        
        return "Nice class execute : param ->" + param;
    }

}

/**
 * webservice 服务类
 * @author vtstar
 *
 */
@WebService
public class WSServer{
    HashMap<String, AbstractWS> hashMap = new HashMap<String, AbstractWS>();
    private WSServer(){
        hashMap.put("hello", new Hello());
        hashMap.put("nice", new Nice());
        hashMap.put("good", new Good());
    }
    
    public String execBusinessMethod (@WebParam(name = "businessType")String businessType,@WebParam(name = "businessParam")String businessParam){
        //数据校验..
        //异常捕捉..
        //错误信息返回数据
        AbstractWS abstractWS = hashMap.get(businessType);
        String execute = abstractWS.execute(businessType);
        return execute;
    }
    
    /**
     * 发布服务
     * @param args 
     */
    @WebMethod(exclude=true)
    public static void main(String[] args) {
        System.out.println("发布webservice服务start!");
        Endpoint.publish("http://127.0.0.1:8899/zl", new WSServer());
        System.out.println("发布webservice服务success!");
    }
}
View Code

  b.发布服务  Endpoint.publish("http://127.0.0.1:8800/hello", new HelloServiceImpl());

二 . 引用服务

  方式一:生成代码引用服务

  

生成即可.

  两种方式可以调用代码:

  

URL url = new URL("http://127.0.0.1:8899/zl?wsdl");
        QName qname=new QName("http://zl.com/","WSServerService");
        Service service=Service.create(url, qname);
        WSServer ms=service.getPort(WSServer.class);
        String hello = ms.execBusinessMethod("nice", "123123");
        System.out.println(hello);
        
        
        
        
        WSServerProxy wsServerProxy = new WSServerProxy();
        String execBusinessMethod = wsServerProxy.execBusinessMethod("nice", "123213");
        System.out.println(execBusinessMethod);
View Code

  方式二:

  

        //new 一个服务
        Service sv = new Service();  
        //创建一个call对象
        Call call = (Call) sv.createCall();  
        //设置要调用的接口地址
        call.setTargetEndpointAddress(new URL("http://127.0.0.1:8899/hello")); 
        //设置要调用的接口方法 
        call.setOperationName(new QName("getHello"));  
        //设置参数 第二个参数表示String类型,第三个参数表示入参
        call.addParameter("str", org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN);
        //返回参数类型
        call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
        //开始调用方法并返回相应数据信息,以xml格式的字符串返回,也可以json格式主要看对方用什么方式返回
        Object result =  call.invoke(new Object[]{"nice"});
        System.out.println(result);//打印字符串
View Code

猜你喜欢

转载自www.cnblogs.com/codeLei/p/9260226.html