您的位置:首页 > 编程语言 > Java开发

JDK开发webservice客户端和服务端 demo

2017-11-16 21:17 471 查看
           一、发布websrvice接口 及将wsdl中xml生成java到客户端

自己怎么用sun提供的类做一个接口并发布出去生成wsdl

第一步,做一个 TS webservice工程 其下有个类ServiceHello,在类ServiceHello上加注解 @WebService,

在类的main方法中用Endpoint.publish("http://localhost:9002/TS/ServiceHello", new ServiceHello());

java代码如下:

          

package com.hyan.service2;

import javax.jws.WebService;

import javax.xml.ws.Endpoint;

@WebService

public class ServiceHello {

     public String getValue(String name){

      return "你的名字是"+name;

     } 

     public static void main(String[] args) {
Endpoint.publish("http://localhost:9003/t/t", new ServiceHello());
System.out.println("发布成功");
}

}

此时如果在网上输入http://localhost:9003/t/t?wsdl 即可在网页上看到xml

("http://localhost:9002/TS/ServiceHello", new ServiceHello());其中
http://localhost:9002/TS/ServiceHello的意思 是用 http协议 将一个ip为localhost下的端口9002下的TS

项目下的ServiceHello发布为接口,当然这个url 端口后的/TS/ServiceHello也可以不一定要 /项目名/接口名

一致

比如我如果将ServiceHello这个接口发布成这样的url也是可以的如 Endpoint.publish

("http://localhost:9003/t/t", new ServiceHello()); 

这样在wsdl这个说明书 xml中的

<port name="ServiceHelloPort" binding="tns:ServiceHelloPortBinding">

<soap:address location="http://localhost:9003/t/t"/>

</port> 标签就会看到访问地址已经变成  http://localhost:9003/t/t 这样下次如果想生成客户端 就只需



在dos中输入

wsimport -s D:/installSoftware/myeclipse10/workspaces/TS2/src -p com.hyan.client -keep 
http://localhost:9003/t/t?wsdl
wsimport -s D:/installSoftware/myeclipse10/workspaces/TS2/src -p com.hyan.client -keep 
http://localhost:9003/t/t?wsdl这条命令的意思是
将http://localhost:9003/t/t?wsdl这个url地址下说明书生成java文件到客户端(如上即生成到TS2项目src下

的com.hyan.client下) -s物理路径下 生成包结构com.hyan.client并保留包结构,并将根据

wsdl生成的java文件保留下这个包下

其中 wsiport表示导入文件,即根据wsdl生成的java文件导入 -s 绝对物理路径  -p 生成包结构 -keep 保留

这个包结构(否则会被删掉的) 

 http://localhost:9003/t/t?wsdl   wsdl_url

wsimport -s D:/installSoftware/myeclipse10/workspaces/TS/src -p com.hyan.client -keep 
http://localhost:9005/ws/sh?wsdl
wsimport -s D:/installSoftware/myeclipse10/workspaces/TheClient/src -p com.hyan.client -keep 
http://localhost:9002/TS/ServiceHello?wsdl
wsimport -s D:/installSoftware/myeclipse10/wor  kspaces/TS2/src -p com.hyan.client -keep 
http://localhost:9003/TS/sh?wsdl
wsimport -s D:/installSoftware/myeclipse10/workspaces/TS2/src -p com.hyan.client -keep 
http://localhost:9003/t/t?wsdl
        

    二。客户端开发

客户端进行开发

     一。根据wsdl生成客户端数据

wsimport -s D:/installSoftware/myeclipse10/workspaces/TheClient/src -p com.hyan.client -keep 
http://localhost:9002/TS/ServiceHello?wsdl
    二。由这些根据服务端即ServiceHello?wsdl生成的客户端 java类来向服务端发请求,获取数据

     在测试类中

              //创建SEI的工厂对象

                HelloWSImplService factory = new HelloWSImplService();
//得到一个SEI实现类对象
HelloWSImpl helloWS = factory.getHelloWSImplPort();
//调用SEI的方法,此时才去发送web Service请求,并得到返回结果
String result = helloWS.sayHello("Tom");
System.out.println(result);

--------------------》下面的代码片断经验证有问题,仅供参考

   1. //创建服务视图 --- 这个new ServiceHelloService();由<service name="ServiceHelloService">得
 ServiceHelloService serviceHelloService = new ServiceHelloService();

   2.//获取服务实现类 这个getPort里面的参数由得<portType name="ServiceHello"> 
 ServiceHello port = serviceHelloService.getPort(ServiceHello.class);

  3.//调用查询方法,打印 ---最后调用服务端的方法即可
 String value = port.getValue("小明");
 System.out.println(value);

      
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: