文档章节

3、Web Service-Jaxws(Eclipse版本)

o
 osc_fmg49rzg
发布于 2019/03/20 18:44
字数 743
阅读 7
收藏 0

精选30+云产品,助力企业轻松上云!>>>

1、概述

开发手段:

  使用jdk开发(1.6及以上的版本)

  使用CXF框架开发

组成:

  -服务器端

  -客户端

 

2、使用JDK开发

1)、服务器端

-@WebService(SEI和SEI的实现类)

-@WebMethod(SEI中的所有方法)

 

2)、客户端

使用eclipse提供的web service浏览器访问

-查看对应的wsdl文档

-请求webservice病查看请求和响应的信息

 

创建客户端应用编码方式访问:

-借助jdk的wsimort.exe工具生成客户端代码:

      wsimport -keep url

-借助生成的代码写请求编码

 

3、服务器端的代码实现:

1、工程的目录结构如下:

 

2、类:

HelloService.java 
package com.cr.service;

import javax.jws.WebMethod;
import javax.jws.WebService;

@WebService
public interface HelloService { 
    @WebMethod
    public String sayHello(String name);
}

 

HelloServiceImpl.java 
package com.cr.service.impl;

import javax.jws.WebService;
import com.cr.service.HelloService;

@WebService
public class HelloServiceImpl implements HelloService{

    @Override
    public String sayHello(String name) {
        System.out.println("webservice sercer...");
        System.out.println("name:" + name );
        return "hello:"+name;
    }


}

 

 server.java 

package com.cr.server;

import javax.xml.ws.Endpoint;

import com.cr.service.impl.HelloServiceImpl;

//发布service
public class server {  
      public static void main(String[] args){   
        String address = "http://localhost:8081/webserviceserver/helloService";
        Endpoint.publish(address , new HelloServiceImpl());
        System.out.println("发布成功....");
    }
}

 

 此时运行,项目会在后台运行,并且不是以往的瞬间关闭!

 

 

使用浏览器查看wsdl文档:

http://localhost:8081/webserviceserver/helloService?wsdl

 

 使用Eclipse自带的web service浏览器进行测试:

 

 使用其进行测试:

查看服务器端的打印情况:

 

 

 

 4、客户端的 实现

 1、此时新建的客户端如下:

 

 2、使用命令进行生成客户端的代码

 

先进入带工程的src路径下

 

执行命令:

wsimport -keep http://localhost:8081/webserviceserver/helloService?wsdl

 

3、进入工程进行刷新包

 

4、写实现的方法:

client.java

package com.cr.service.client;

import com.cr.service.impl.HelloServiceImpl;
import com.cr.service.impl.HelloServiceImplService;

public class client {
    
    public static void main(String[] args) {
        
        HelloServiceImplService factory = new HelloServiceImplService();
        
        HelloServiceImpl helloWs = factory.getHelloServiceImplPort();
        
        System.out.println(helloWs);
        
        System.out.println(helloWs.getClass());
        
        String res = helloWs.sayHello("java");
        System.out.println("res:" + res);
        
    }

}

 

 结果:

使用代理的方式

JAX-WS RI 2.2.9-b130926.1035 svn-revision#5f6196f2b90e9460065a4c2f4e30e065b245e51e: Stub for http://localhost:8081/webserviceserver/helloService
class com.sun.proxy.$Proxy32
res:hello:java

 还可以使用Eclipse自带的Web Service浏览器进行相关的测试:

 

 

5、使用Ec自带的TCP/IP工具进行监听请求(端口转发

1、将服务端的WSDL文档保存到本地

2、修改文档的端口: 8081端口改为8082

  wsdl文件

  

   新建一个工程

  

  wsdl保存在本地的文件

   

   

3、根据本地的wsdl生成客户端的代码,并且写客户端的调用代码

  

4、配置eclipsedeTCP/IP,启动监听  

  

 

   

 

5‘编写客户端的测试u代码“

client.java 
package com.cr.service.client;
import com.cr.service.impl.HelloServiceImpl;
import com.cr.service.impl.HelloServiceImplService;

public class client {
    public static void main(String[] args) {
        
        HelloServiceImplService factory = new HelloServiceImplService();
        
        HelloServiceImpl helloWs = factory.getHelloServiceImplPort();
        
        System.out.println(helloWs);
        
        System.out.println(helloWs.getClass());
        
        String res = helloWs.sayHello("java");
        System.out.println("res2:" + res);
    }
}

 

 启动测试:

JAX-WS RI 2.2.9-b130926.1035 svn-revision#5f6196f2b90e9460065a4c2f4e30e065b245e51e: Stub for http://localhost:8082/webserviceserver/helloService
class com.sun.proxy.$Proxy32
res2:hello:java

 

 

6、执行客户端代码发送service请求监听得到:

请求体的代码:

<?xml version="1.0" ?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
  <S:Body>
    <ns2:sayHello xmlns:ns2="http://impl.service.cr.com/">
      <arg0>java</arg0>
    </ns2:sayHello>
  </S:Body>
</S:Envelope>

 

 

 响应体的代码:

<?xml version="1.0" ?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body><
  ns2:sayHelloResponse xmlns:ns2="http://impl.service.cr.com/">
    <return>hello:java</return>
  </ns2:sayHelloResponse>
</S:Body></S:Envelope>

 

 

 基于soap协议传输

 

上一篇: laravel 查询
下一篇: Django介绍
o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
Webservices in JDK 6

Webservices in JDK 6 } public static void main(String args[]){ Instantiate the generated Service Get the port using port getter method generated in CaculatorService Invoke the r......

子木007
2011/04/15
305
0
jaxws-webservice编程(第一个记录)

随着近几年来,SOA,EAI等架构体系的日渐成熟,Webservice越来越炽手可热,尤其是在企业做异质平台整合时成为了首选的技术。 Java的Webservice技术更是层出不穷,比较流行的有:Axis2,Sprin...

heroShane
2014/02/28
2.3K
0
jaxws-webservice编程续

第二天 前言: 大家都知道,仅仅输入或者返回一个简单型的String, Int在实际工作中没有太大的意义。很多时候我们的Service需要返回类似于List<Person>,List<String>这样的数据结构。 我们现在...

AbrahamLeeJay
2014/07/17
52
0
weblogic项目转为tomcat之后出现的问题

解决java - JAX-WS和版本冲突 itPublisher分享于2017-03-19 推荐:JWS,JAX-WS,JAX-RS,REST,Restlet,SOAP(JAVA Web Services技术) JWS,JAX-WS,JAX-RS,REST,Restlet,SOAP l JWS:是......

osc_i9jmzjxx
2018/08/14
1
0
Spring boot 开发WebService遇到的问题之一

当pom.xml文件中的配置: <artifactId>spring-boot-starter-parent</artifactId><version>2.0.6.RELEASE</version> <artifactId>cxf-spring-boot-starter-jaxws</artifactId><version>3.2.6......

osc_fa164jpo
2019/03/21
12
0

没有更多内容

加载失败,请刷新页面

加载更多

PHP控制反转和依赖注入

[TOC] PHP和依赖注入 理论知识 作者:Mingqi 链接:https://www.zhihu.com/question/23277575/answer/169698662 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明...

我爱吃炒鸡
26分钟前
14
0
Xcode 6:键盘未显示在模拟器中 - Xcode 6: Keyboard does not show up in simulator

问题: The keyboard does not show up when I run the simulator and click in the UITextView. 当我运行模拟器并单击UITextView时,键盘没有显示。 How do I re-enable the keyboard? 如何......

法国红酒甜
55分钟前
23
0
紫外线消毒灯EPA注册有请小蔡

臭氧消毒器EPA注册,紫外线消毒灯EPA注册,UV水质过滤器EPA注册,UV空气过滤器EPA注册,UV灭蚊灯EPA注册,超声驱虫设备EPA注册,UV消毒器EPA注册,高频驱鸟器EPA注册,电子驱鼠器EPA注册 二、...

IECEE证书注册
今天
11
0
小程序上传帖子(含有文字图片的微信验证)

public.js var graceJS = require('../../utils/grace.js');import { config } from '../../config.js'Page({ /** * 页面的初始数据 */ data: { imglist: [], title:'......

子枫Eric
今天
28
0
如今大火的算法框架TensorFlow,都有哪些值得一看的好书呢?

TensorFlow™是一个基于数据流编程(dataflow programming)的符号数学系统,被广泛应用于各类机器学习(machine learning)算法的编程实现,其前身是谷歌的神经网络算法库DistBelief 。 Te...

程序员知识码头
今天
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部