WebService
基础
什么叫
Web service
它是一套标准,它定义了应用程序如何在
Web
上实现互操作性。你可以用任何你喜欢的语言,在任何你喜欢的平台上写
Web service
,只要我们可以通过
Web service
标准对这些服务进行查询和访问。
Ws
的相关名词解释:
JAX-WS
:
Java API for XML Web Services.
SOAP
:simple object access protocal
。
Web Service
的操作调用是通过SOAP
处理的.
In JAX-WS, a web service operation invocation is represented by an XML-based protocol such as SOAP.
The SOAP specification defines the envelope structure, encoding rules, and conventions for representing web service invocations and responses. These calls and responses are transmitted as SOAP messages (XML files) over HTTP.
WSDL
:web service description language.WSDL specifies an XML format for describing a service as a set of endpoints operating on messages.
SAAJ
:java
提供的包装SOAP
消息的API
。包名:javax.xml.soap
JAX-WS
中java
方法的参数类型和返回类型并不是所有都被支持。所以就要用到JAXB
JAXB
:JavaTM
Architecture for XML Binding
:
provides a fast and convenient way to bind between XML schemas and Java representations
。
Apache CXF
Apache CXF
一个开源的
Service
框架,它实现了
JCP
与
Web Service
中一些重要标准。
CXF
简化了构造,集成,面向服务架构
(SOA)
业务组件与技术的灵活复用。在
CXF
中,
Service
使用
WSDL
标准定义并能够使用各种不同的消息格式
(
或
binding)
和网络协议
(transports)
包括
SOAP
、
XML
(通过
HTTP
或
JMS
)进行访问。
CXF
同样支持多种
model
如:
JAX-WS
,
JBI
,
SCA
和
CORBA service
。
CXF
设计成可灵活部署到各种容器中包括
Spring-based
,
JBI
,
SCA
,
Servlet
和
J2EE
容器。
官方网站
http://cxf.apache.org
一些重要的类解释
1. @XmlType
将一个类或者枚举类型转换为
xml
元素类型。
2.
@
XmlAccessorType
(XmlAccessType.
FIELD
)
:设置
java
fields
或者
java bean
属性的序列化
方式
3.
@
XmlElement
(nillable =
false
, name =
"entry"
)
:通过给定的名字,将一个
java property
映射为
xml
元素。
Nillabl
:
e
将元素声明自定义为
nillable
。
如果
nillable()
为
true
,那么
JavaBean
属性被映射到
XML
模式
nillable
元素声明。
4. XmlAdapter<ValueType,BoundType>
:
java
类型的转换规则。
修改
Java
类型以适应自定义编组。
对于
SOAP
不支持的类型,需要使用到该类,如
map
类型参数:
BoundType
- JAXB
不知道如何处理的一些类型。编写一个适配器,以便允许通过
ValueType
将此类型用作内存表示形式。
ValueType
- JAXB
无需其他操作便知道如何处理的类型。
方法:
public
abstract
ValueType marshal(BoundType v)
编组过程中,
JAXB
绑定框架调用
XmlAdapter.marshal(..)
将
bound
类型修改为
value
类型,然后将
value
类型编组为
XML
表示形式。
public
abstract
BoundType unmarshal(ValueType v)
解组过程中,
JAXB
绑定框架首先将
XML
表示形式解组为
value
类型,然后调用
XmlAdapter.unmarshal(..)
将
value
类型修改为
bound
类型。
5. @XmlJavaTypeAdapter
:使用一个实现了
XmlAdapter
的类来定义编组过程。
编写基于
CXF
的
ws
程序过程:
1.
创建
Maven
工程
a)
导入依赖关系
<dependencies>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-core</artifactId>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-simple</artifactId>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-databinding-aegis</artifactId>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-local</artifactId>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http-jetty</artifactId>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-jms</artifactId>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-management</artifactId>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-common-utilities</artifactId>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty</artifactId>
<version>6.1.6</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.2</version>
<scope>test</scope>
</dependency>
</dependencies>
b) 把JDK版本设置为5.0
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<source>1.5</source>
<target>1.5</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
2.
编写
ws
服务接口。
3.
编写服务实现类。
4.
创建启动程序。
5.
编写客户端测试代码。
服务器端和客户端代码:
服务器端代码
:
Endpoint.publish
(
address
, implementor);
客户端代码:
JaxWsProxyFactoryBean factoryBean =
new
JaxWsProxyFactoryBean();
factoryBean.setServiceClass(WSServer.
class
);
factoryBean.setAddress(endpointAddress);
wsservice
= (WSServer) factoryBean.create();
活色生香第二辑-66种生活
分享到:
相关推荐
Web Service学习笔记
web service的概述,包括定义,基本架构,使用的主要技术以及常用框架的简单介绍
* 目前两种主要的技术类型 * 1、soap-based web service * 2、restful-based web service * * soap-
[Web Service学习笔记]第 1 篇 SOAP的HelloWord实例 ******************************************************* 作者:陈刚,程序员,广西省桂林人,广西师范大学数学系 97 届毕业。 blog:...
里面只有这样几句话:“交易消息(包括请求和应答)是以XML格式表达的,包括两个部分:Message Header(消息头)与Service Content(交易业务内容)。” “接口协议使用HTTP协议,落地方为发起方提供访问的URL,发起方...
web service入门学习笔记,包含运行实例代码
axis开发web_service程序_学习笔记,学习axis开发,学习笔记
Java/JavaEE 学习笔记 作者在杰普学习时的学习笔记,是J2ee初学者必备手册,是大家学习J2EE开发的很好的参考笔记。 Java/JavaEE 学习笔记 内容目录: Unix 学习笔记..........7 ...Web Service学习笔记.....388
内容目录 .......................1 Java/JavaEE.....1 2008年11月1日...............1 Unix 学习笔记7 一、Unix前言............7 二、Unix基础知识....7 三、Unix常用命令....8 ...Web Service学习笔记.....388
网上无意中找到的... 介绍Axis 开发WEB SERVICE,挺不错的.
SAP 中文学习笔记SAP NW AS as web service Server and Client .pdf
自己辛苦整理的网上的JBoss ESB学习笔记 ,非常详细,代码操作都有截图; 希望大家多支持! 学习笔记PDF的目录如下: 1——搭建ESB开发环境 2 2——第一个ESB代码...16——第十五个ESB代码Web Service Consumer 1 151
2.使用VS.NET中的Add Web Reference菜单选项 23..net Remoting 的工作原理是什么? 答:服务器端向客户端发送一个进程编号,一个程序域编号,以确定对象的位置。 24.在C#中,string str = null 与 string str = ...
第一天MySQL的自我系统学习笔记
从服务上讲(With a service abstraction),它将程序代码从J2EE环境解耦到普通的java对象(自然,这些代码可以脱离J2EE而在多种环境中运行)。它还在很多功能上提供了除EJB之外的选择――比如为所有的POJO提供声明式...
学习本次公开课你将收获和体会到什么: 学习完本次公开课,你将深入理解Web Service,快速上手企业开发。 主要讲解内容如下: Web Service是什么? Web service的优势和前景 Web Service和Web服务器的区别? 在什么...
JavaEE5学习笔记09-将EJB发布成WebService总结。
Web Service的定义,原理,应用,源码