webservice之jax-ws实现方式
1.什么是webservice?
webservice是一种远程资源调用技术,它的实现方式主要分为两种,第一种是jaxws方式,它是面向方法的,它的数据类型是xml是基于soap实现传输;第二种是jaxrs方式,它是面向资源的,它的数据类型是xml或json是基于http协议实现传输。
2.jaxws简单应用
服务端:
第一步:创建一个简单的web项目,略
第二步:添加webService的依赖jar包,配置web.xml
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.0.1</version>
</dependency>
<servlet>
<servlet-name>CXFService</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CXFService</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
第三步:编写代码
//接口定义
@WebService
public interface ServiceUI {
@WebMethod
String sayHello(String name);
@WebMethod
List<Car> fingCarsByUser(User user);
}
//接口实现
@WebService(endpointInterface="cn.linc.cxf.interfaces.ServiceUI",serviceName="userService")
public class ServiceUIImpl implements ServiceUI {
public String sayHello(String name) {
return "hello "+name ;
}
public List<Car> fingCarsByUser(User user) {
if ("xiaoming".equals(user.getUsername())) {
List<Car> cars = new ArrayList<Car>();
Car car1 = new Car();
car1.setId(1);
car1.setCarName("大众");
car1.setPrice(200000d);
cars.add(car1); Car car2 = new Car();
car2.setId(2);
car2.setCarName("现代");
car2.setPrice(170000d);
cars.add(car2); return cars;
} else {
return null;
}
}
}
第四步:启动项目,查看wsdl说明书
这里面的路径注意cxf在web中的配置:{在配置tomcat时注意项目名的配置,我这里没有配置}
参数说明:
@WebService:在接口上申明,表示该接口是一个webService服务;
@WebMethod:在接口方法上声明,表示该方法是一个webService服务方法; @WebService(endpointInterface="cn.linc.cxf.interfaces.ServiceUI",serviceName="userService"):在该接口实现类定义; endpointInterface:表示接口服务终端接口名;
serviceName:服务名称;
wsdl解读:有五个节点:服务视图,服务协议和参数的描述,服务实现,参数描述,参数类型描述。
客户端: 第一步:根据生成的wsdl文档生成客户端代码,并放置在一个新建的客户端项目中; 生成命令:wsimport -s '存放路径' 'wsdl路径'
第二步:配置webService的客户端
<jaxws:client id="serviceUi" address="http://127.0.0.1:8080/cxf-jax-ws-spring-server/services/serviceUi?wsdl" serviceClass="cn.linc.cxf.interfaces.ServiceUI">
</jaxws:client>
第三步:编写测试类
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:applicationContext.xml")
public class TestDemo {
@Autowired
public ServiceUI serviceUi; @Test
public void demo(){
String s = serviceUi.sayHello("凯迪拉克");
System.out.println(s);
} }
效果展示:
原理解析:
可以分为三个角色:服务提供者,服务消费者,服务注册中心uddi
首先由服务提供者发布服务并且在注册中心uddi进行注册
然后由服务消费者订阅服务,在注册中心uddi上查询到符合条件的服务
服务注册中心返回服务条件服务的描述文件给服务订阅者
订阅者根据描述文件进行服务端的服务调用,并返回数据。
webservice之jax-ws实现方式的更多相关文章
- ASP.net 中手工调用WS(POST方式)
ASP.net 中手工调用WS(POST方式)核心代码:string strUrl="http://localhost:21695/service1.asmx/getmythmod" ...
- Axis2开发WebService客户端 的3种方式
Axis2开发WebService客户端 的3种方式 在dos命令下 wsdl2java -uri wsdl的地址(网络上或者本地) -p com.whir.ezoffi ...
- WebService的几种验证方式
转 http://www.cnblogs.com/yoshiki1895/archive/2009/06/03/1495440.html WebService的几种验证方式 1.1 WebS ...
- 【Java EE 学习 80 下】【调用WebService服务的四种方式】【WebService中的注解】
不考虑第三方框架,如果只使用JDK提供的API,那么可以使用三种方式调用WebService服务:另外还可以使用Ajax调用WebService服务. 预备工作:开启WebService服务,使用jd ...
- java 实现WebService 以及不同的调用方式
webservice: 就是应用程序之间跨语言的调用 wwww.webxml.com.cn 1.xml 2. wsdl: webservice description l ...
- webService调用的N种方式
一.服务器端代码 新建一个web Service Project工程(貌似普通的java工程也可以,这里不太明白各种webService的框架有什么区别),建立如下的类: package com.bo ...
- webservice访问的几种方式
今天在对接的客户用到了webservice,最终采用wsimport生成本地代理方式以SDK的形式对接,但是想的完整的总结一下ws的几种调用方式. 发布服务的IP地址是:192.168.125.116 ...
- WebService客户端几种实现方式
1.jdk原生调用(需要获取服务接口文件) import java.net.URL; import javax.xml.namespace.QName; import javax.xml.ws.Ser ...
- Android使用webService(发送xml数据的方式,不使用jar包)
Android使用webService可以用ksoap2.jar包来使用.但是我觉得代码不好理解,而且记不住. 所以我查询了好多资料,以及自己的理解.可以用代码发送http请求(发送xml数据)来访问 ...
- webservice入门实例,CXF方式
1.下载CXF,及先关jar包. CXF 下载地址:http://cxf.apache.org/download.html,选择"File"列中的zip格式下载.解压后可以看到一些 ...
随机推荐
- Deepest left leaf node in a binary tree
Recursion selfcontained recursion global variables outside of recursion Recursion Design Whenever r ...
- git-本地仓库和远程仓库关联
以github为例: 在github创建仓库 本地新建项目后执行:git init 将远程项目和本地项目关联:git remote add origin +远程仓库地址 如:git remote ad ...
- ubuntu下安装无界面浏览器
ubuntu下安装PhantomJS 1.下载: 32位:wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-li ...
- JDK新特性之可变个数的形参的方法
可变个数的形参的方法:1.格式:对于方法的形参来说:数据类型...形参名2.可变个数的形参的方法与同名的方法之间可以构成重载3.可变个数的形参在调用时,个数从0开始,到无穷都可以(在调用这个方法时,s ...
- 一道考查request导致的安全性问题的ctf题
这道题是在看红日安全团队的代码审计系列文章时碰到的,感觉挺有意思的,所以做了下.题目代码如下 //index.php <?php require 'db.inc.php'; function d ...
- SQL server 建立标后,执行代码添加外键
alter table dbo.student add constraint FK_tstudent_class foreign key(classno) references dbo.class(c ...
- C# System.Collections
System.collection类: 动态数组ArrayList 代表了可被单独索引的对象的有序集合.也就是说他是一个动态的数组,你可以通过索引来进行增删改等操作,数组会自动调整数组的大小.允许在列 ...
- mvc项目远程发布到windows server服务器
1.安装IIS的时候需要将这两个选项勾选起来 2.确保 管理服务委派 这个选项存在 3.添加委派规则 4.配置IIS管理用户,后续需要用这个用户进行发布连接 5.配置站点的IIS权限 选择刚才在前面设 ...
- 图形化SVN管理搭建 subversion edge自行修改密码
参考文章: https://blog.csdn.net/buyaore_wo/article/details/84313467 安装版本: Subversion Edge 5.2.3 (Linux 6 ...
- 页面滚动图片等元素动态加载插件jquery.scrollLoading.js
如果一个网页很长,那么该页面的加载时间也会相应的较长.而这里给大家介绍的这个jQuery插件scrollLoading的作用则是,对页面元素进行动态加载,通俗的说就是滚到哪就加载到哪,屏幕以下看不见的 ...