Java WebService简单实例

一、搭建一个webservice服务器

  (1)创建一个web项目。这里我创建了一个项目名为TheService。

  (2)在src下的com.linkwide.service(自己创建的包名)下创建一个HelloWorldService接口。

  •     package com.linkwide.service;
  •     import javax.jws.WebMethod;
  •     import javax.jws.WebService;
  •       //使用@WebService注解标注HelloWorldService接口
  •       @WebService
  •       public interface HelloWorldService {
  •         @WebMethod
  •         public String sayHello(String name,Integer age);   
  •       }

  (3)在src下创建com.linkwide.service.impl(自己创建的包名)下创建一个HelloWorldServiceImpl类实现HelloWorldService接口

    package com.linkwide.service.impl;

    import javax.jws.WebService;

    import com.linkwide.service.HelloWorldService;
    @WebService
    public class HelloWorldServiceImpl implements HelloWorldService{

      @Override
      public String sayHello(String name, Integer age) {
          // TODO Auto-generated method stub
          return "Hello!我是" + name + "今年" + age + "岁";
      }

  }

  (4)在src下创建一个com.linkwide.main(自己创建的包名)下创建一个TheServicePublish类,用于发布webservice服务

    package com.linkwide.main;

    import javax.xml.ws.Endpoint;

    import com.linkwide.service.impl.HelloWorldServiceImpl;

    public class TheServicePublish {
    
      public static void main(String[] args) {
        
        //定义WebService的发布地址,这个地址就是提供给外界访问Webervice的URL地址,URL地址格式为:http://ip:端口号/xxxx
        String address = "http://127.0.0.1:9000/TheService";
        //使用Endpoint类提供的publish方法发布WebService,发布时要保证使用的端口号没有被其他应用程序占用
        Endpoint.publish(address, new HelloWorldServiceImpl());
        System.out.println("发布成功");


       }
    
    }

  (5)运行main方法,webservice服务发布成功。

二、编写客户端调用程序。

     (1)在编写客户端代码前,首先生成一个wsdl文件。(右击HelloWorldServiceImpl类  --  Web Services -- create Web Serivce -- 直接finish就ok,在WebContent下面将生成一个wsdl文件夹包括一个wsdl文件)

     (2)创建一个Web Service Client 项目(在选择wsdl的地方选择刚刚生成的wsdl文件,直接生成项目)

     (3)在src下创建 ClientMain类用于调用调用服务端方法测试

     package com.linkwide.client;

    import java.rmi.RemoteException;

    import javax.xml.namespace.QName;
    import javax.xml.rpc.ParameterMode;

   import org.apache.axis.client.Call;
   import org.apache.axis.client.Service;
   import org.apache.axis.encoding.XMLType;

   public class ClientMain {

      public static void main(String[] args) {
          // TODO Auto-generated method stub
          Service service = new Service();  
          Call call = null;  
          try {  
              call = (Call) service.createCall();  
          } catch (Exception e) {  
              e.printStackTrace();  
          }  
        //调用方法
        String methodName = "sayHello";
        QName qn = new QName("http://impl.service.linkwide.com/",methodName);  
        call.setOperationName(qn);  
        String endpoint = "http://127.0.0.1:9000/TheService?wsdl";
        call.setTargetEndpointAddress(endpoint);  
        call.setUseSOAPAction(true);  
        String result = "";  
        try {  
            // 给方法传递参数,并且调用方法  
            call.addParameter("arg0", XMLType.XSD_STRING, ParameterMode.IN);
            call.addParameter("arg1", XMLType.XSD_INTEGER, ParameterMode.IN);
            result = (String) call.invoke(new Object[] {"小青青","100"});  
        } catch (RemoteException e) {  
              e.printStackTrace();  
        }  
        System.out.println("result is " + result);  
      }

  }

(4)运行main方法。

 result is Hello!我是小青青今年100岁。

这样就成功了。

     

    



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值