原生java代码实现webservice的调用

 

package com.jfinal.newWebservice;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;
/**
* @WebService 该注解用于对接口,类进行注解,表示要发布的web服务
*      serviceName:发布的web服务名称;默认java类名+Service(字符串)                 
*          如 :java类名称为SayWeb ,wsdl文档中 serviceName默认情况   <service name="HelloServiceService">
*      name:此属性的值包含XML WebService的名称,对应wsdl文档中portType 的名称,默认java类名
*          如: portType默认情况  <portType name="HelloService">
*      portName:对应wsdl文档中portName,缺省值为 WebService.name+Port             
*          如:<port name="SayWebPort" binding="tns:SayWebPortBinding"><soap:address location="http://localhost:9001/service/sayweb"/></port>
*      targetNamespace:指定你想要的名称空间,默认包名法反写                              
*             targetNamespace="http://say_service/",在<definitions>标签中
*      wsdlLocation:指定用于定义 Web Service 的 WSDL 文档的 Web 地址。
*             默认情况是发布地址+?wsdl
*/
@WebService(serviceName="MyService",targetNamespace="http://newWebservice.jfinal.com")
public class HelloService {

    /*
     * @WebMethod 该注解用于用@WebService注解的类或接口的方法上,表示要发布的方法
     *     soperationName:指定与此方法相匹配的wsdl:operation 的名称。
     *       默认为方法名,如方法为sayHello<operation name="sayHello"></operation>                                                 
     *      如果在sayHello方法上加注解@WebMethod(operationName="AliassayHello" 客户端调用时,sayHello方法是不存在的, 方法为Hello                                                                     
       @WebMethod(exclude=true) //该方法不会发布    
     */
    
    // @WebParam表示方法的参数,@WebResult表示方法的返回值
    @WebMethod(operationName="AliassayHello")
    public String sayHello(@WebParam(name="name") String name){
        System.out.println(1111);
        return  "hello: " + name;
    }

    public String sayGoodbye(String name){
        System.out.println(1111);
        return  "goodbye: " + name;
    }

    @WebMethod(exclude=true)//当前方法不被发布出去
    public String sayHello2(String name){
        return "hello " + name;
    }

    @WebMethod
    public String testWebParam(@WebParam(name ="name") String name,@WebParam(name ="age") String age,@WebParam(name ="date") String date) {
        return "测试成功,姓名+"+name+"年龄"+age+"日期"+date;
    }

    @WebMethod
    public String test(String name, String age,String date) {
        return "测试成功,姓名+"+name+"年龄"+age+"日期"+date;
    }


    @WebMethod
    @WebResult(name="myReturn") //方法返回值
    public String testWebResult(String name, String age,String date) {
        return "测试成功,姓名+"+name+"年龄"+age+"日期"+date;
    }

    public static void main(String[] args) {
        /**
         * 参数1:服务的发布地址
         * 参数2:服务的实现者
         *  Endpoint  会重新启动一个线程
         */
        Endpoint.publish("http://localhost:8034/web", new HelloService());
        System.out.println("Server ready...");
    }

}

 

  • 客户端代码:

    • 调用接口

package com.jfinal.newWebservice;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.ws.RequestWrapper;
import javax.xml.ws.ResponseWrapper;
@WebService(name = "IHelloService", targetNamespace = "http://newWebservice.jfinal.com")
public interface IHelloService {
  @WebMethod
  public String AliassayHello(@WebParam(name = "name", targetNamespace = "")String name);
  public String sayGoodbye(@WebParam(name = "arg0", targetNamespace = "")String argww);
  //@WebParam(name ="xxx") xxx必须与接口中一致,参数必须一致
  public String testWebParam (@WebParam(name ="name") String name,@WebParam(name ="age") String age,@WebParam(name ="date") String date);
  public String test( String name, String age, String date);
  public String testWebResult( String name, String age, String date);
}
  • 调用实现

package com.jfinal.newWebservice;
importjava.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import com.jfinal.webservice.BaseService;
/**
* 通过客户端编程的方式调用Webservice服务
*
*/
public class App {
       public static void main(String[] args) throws Exception {
             // 1.发布的相关信息
             // wsdl 文件路径
             URL wsdlUrl = new URL("http://localhost:8034/web?wsdl");
             // 服务发布的 targetNamespace,和 serviceName
             // wsdl 文件头的targetNamespace="http://xxxx" name="xxxx"
             Service s = Service.create(wsdlUrl, new  QName("http://newWebservice.jfinal.com", "MyService"));
             // new QName(服务端targetNamespace,服务端口)wsdl 文件最下面有
             IHelloService hs = s.getPort(new  QName("http://newWebservice.jfinal.com", "HelloServicePort"),
                          IHelloService.class);
             String ret = hs.testWebResult("111", "222", "2223");
             // String ret = hs.AliassayHello("111");
             System.out.println(ret);
       }
}

 

  • 本项目代码结构:

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值