- 浏览: 216743 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (121)
- 投资杂记 (6)
- Java技术 (46)
- 记忆 (7)
- 科技随笔 (6)
- 随感 (8)
- 漫谈云计算 (4)
- 生活点滴 (1)
- andriod笔记 (13)
- mysql-数据库 (2)
- OSGI (1)
- Spring Data JPA (1)
- gradle maven nexus (1)
- Java性能优化 多核线程 优化 (2)
- Open-Erp (oe) (8)
- Java技术 camel (1)
- jetty camel dynamicRouter (1)
- karaf (1)
- amqp apollo camel karaf (1)
- Java技术 MyCat (1)
- Java技术 并行调用 线程池 (1)
最新评论
-
白云天:
主机网络端口使用命令: netstat -nplt
centos7.4上安装mysql5.7记录 -
白云天:
登录到 容器内部 docker ps -a查询容器IDsudo ...
docker初探 -
白云天:
export jars to local directory ...
Camel的direct,Bean测试 -
白云天:
location /esb/ { proxy_ ...
Camel的direct,Bean测试 -
白云天:
centos 中添加 shell_script.sh 为开机启 ...
Camel的direct,Bean测试
这篇指南提供了Apache Axis2新用户一个起步的地方。它也涵盖了一个高级主题,例如如何用Axis2建立和部署Web services以及如何用WSDL生成客户端和服务。
对于使用Apache Axis2有经验的用户来说,我们推荐高级用户指南。
介绍Axis2
这部分介绍了Axis2和它的结构,包括对包含在最新可下载版本中的不同目录和文件的一个说明。
目录介绍Axis2
Axis2是什么?
内部流程
Axis2如何处理SOAP消息
Axis2发行包
Axis2标准二进制发行包
Axis2.war目录结构
Axis2文档发行包
Axis2和客户端
安装和测试客户端代码
介绍服务
消息交换模式
建立客户端
选择一个客户端生成方法
生成客户端
Axis数据绑定(ADB)
搭建服务
可选择的方法
从无到有建立服务
部署Plain Old Java对象
部署和运行用WSDL建立的Axis2服务
例子
进一步的学习
Axis2是什么?
Apache Axis2项目是一个基于Java语言的Web services系统服务和客户端的实现。为了从Apache Axis 1.0中获取教训,Apache Axis2提供了一个完整的对象模型和模块化体系结构,这样可以很容易的添加功能以及支持一个新的与Web services相关的说明和建议。Axis2可以让你很容易的执行以下任务:
发送SOAP消息
接收和处理SOAP消息
从一个普通的Java类建立Web service
用WSDL来建立实现服务和客户端的实现类
很容易的从一个服务来获取WSDL
发送和接收带有附件的SOAP消息
建立或者使用基于REST的Web service
建立或者使用从WS-Security, WS-ReliableMessaging, WS-Addressing, WS-Coordination和WS-Atomic Transaction获取优势的服务
当新建议出现时,使用Axis2的模块化结构来很容易的加入对它的支持
当然还存在很多其它特性,但是这篇指南主要集中在向你展示如何完成上面列表的前五个任务。
内部流程
要理解Axis2并且知道它做了些什么,你必须对Web services消息的生命周期有一个很好的认识。通常,它看起来如下图所示:
发送应用程序建立原始SOAP消息,这是一个包含消息头和消息体的XML消息。(要获得更多的SOAP信息,查阅“服务介绍”)如果系统需要使用例如WS-Addressing或者WS-Security之类的WS*建议,这个消息就会在离开发送者之前经过额外的处理。一旦消息准备好了,他就会借助一个特别的传输器发送出去,例如HTTP,JMS等等。消息沿着它的路径发送到接收者,接收者是借助传输监听器接收消息的。(换句话说,如果应用程序没有运行HTTP监听器,那么它就将不会接收HTTP消息)再者,如果消息是需要使用WS-Security 或者其它建议的系统的一部分,那么为了检查凭证或者解密敏感信息,它需要一些额外的处理。最后,一个派发者决定这个消息发送到的指定应用程序(或者其它组件,例如Java方法),并且把它发送给这个组件。这个组件是一个完整的应用程序的一部分,这个应用程序是设计用来与这些来回发送的数据一起工作的。
Axis2如何处理SOAP消息
Axis2可以处理一次事务中的发送者和接收者双方的过程。从Axis2的角度看,结构如下:
在一端,你有一个处理(发送或接收)消息的应用程序。在中间,你有Axis2,或者,你可以有Axis2。Web services的价值在于收发双方(任何一方都可以是服务段或者客户端)甚至不需要在同一个平台上,更不需要运行同一个应用程序。假设Axis2在两边同时运行,过程如下:
发送者建立SOAP消息。
Axis "handlers" 执行必要的操作,例如对相关消息进行WS-Security加密。
传输器发送者发送消息。
在接收端,传输监听者检测消息。
传输监听者将消息传递给接收端的所有handler。
一旦消息在“pre-dispatch”阶段处理完,它会被传递给派发者,然后被传给合适的应用程序。
在Axis2中,这些行动被分解成“阶段”,以及几个预定义阶段,例如“pre-dispatch”,“dispatch”和“message processing”,集成在Axis2中。每一个阶段是一组“handler”。Axis2可以让你来控制每个handler归属于哪个阶段,以及在一个阶段中各个handler的执行顺序。你也可以添加你自己的阶段和handler。Handler来自于可以被插入一个运行着的Axis2系统的模块。这些模块,例如提供WS-Security实现的Rampart,提供WS-ReliableMessaging实现的Sandesha,都是Axis2中的主要扩展机能。
Axis2发行包
Axis2以多个发行包发行。你需要哪个视你所需决定。
Axis2标准二进制发行包
如果你正在开发服务和应用程序,你需要Axis2标准二进制发行包。这个发行包包括所有必要的*.jar文件,以及很多便于开发用的脚本。它具有以下结构。代码列表1:Axis2标准二进制发行包
bin
axis2.bat
axis2.sh
axis2server.bat
axis2server.sh
java2wsdl.bat
java2wsdl.sh
wsdl2java.bat
wsdl2java.sh
setenv.sh
lib
activation-1.1.jar
...
XmlSchema.jar
repository
modules
modules.list
addressing-1.1.mar
..
services
services.list
version.aar
..
samples
...
webapp
...
conf
axis2.xml
LICENSE.txt
README.txt
NOTICE.txt
INSTALL.txt
release-notes.html
bin目录包括一些有用的脚本。它们包括axis2.bat(或者axis2.sh),这个文件可以让你在不手工添加Axis2 jar文件到类路径的情况下方便的执行Java命令;java2wsdl.bat(和 .sh)和wsdl2java.bat(和 .sh),它可以让你轻易的从一个WSDL文件生成Java代码,反之亦然;axis2server.bat(和sh),一个简易Web服务器,它可以让你早自己的应用程序中搭建Axis2的功能来发送接收消息。如所希望的,lib目录包含了所有必需的.jar文件。服务和模块放在repository目录。Axis2提供了一个WS-Addrssing的标准模块实现,你可以添加任何其它必要的模块到repository/modules目录,例如Rampart。Conf目录包括axis2.xml文件,它是全局部署描述。最后,示例目录包括了所有随Axis2一起发行的示例代码。查看示例及其描述列表。
axis2.war发行目录结构
axis2.war可以从WAR (Web Archive)发行包处得到。这个Axis2服务端按照一个J2EE应用程序发布。它具有代码列表2所示结构。代码列表2:Axis2的服务端
axis2-web
META-INF
WEB-INF
classes
conf
axis2.xml
lib
activation.jar
...
xmlSchema.jar
modules
modules.list
addressing.mar
...
soapmonitor.mar
services
services.list
aservice.aar
...
version.aar
web.xml
从顶上开始,axis2-web是一组JSP页面,它们组成了Axis2管理员应用,通过这个应用,你可以执行任何需要的行动,例如添加服务,启动或者停止服务。WEB-INF目录代表了实际的Axis2应用程序,包括所有的*.jar文件,任何添加的模块,甚至已经部署的服务自己。Classes目录包含了任何Axis2本身需要的类或者属性文件,例如log4j.properties。任何由系统处理的实际的服务位于services目录,它们以axis卷或者*.aar文件的形式存在。这个文件包含了与这个服务相关的所有类文件,以及控制任何额外需求的service.xml文件,例如消息收发者的定义。所有这些最主要的文件是axis2.xml,它控制了应用程序如何处理接收到的消息。它定义了消息接收者和传输接收者,以及定义传输发送者和决定哪个模块是活跃的。它也定义了阶段的顺序,以及在每个阶段中执行的handler。你可以控制通过使用Web应用程序来控制所有这些信息,但是如果你重启Axis2应用程序,这些变化就丢失了,服务器会重新应用axis2.xml中的定义。Axis2也提供了第三种发行包,源码发行包,该发行包可以让你自己生成这个.war文件。
Axis2文档发行包目录结构
文档发行包包括所有的Axis2文档,它包含xdocs和javadocs。它具有以下结构:代码列表3:Axis2文档发行包
docs
javadocs
xdocs
LICENSE.txt
README.txt
release-notes.html
javadocs目录包括所有的标准Axis2 API文档,在xdocs目录还有其它文档(例如类似本文的文档)。
Axis2和客户端
现在解释作为Web应用一部分的Axis2是如何工作的。非J2EE应用一部分的独立客户端到底是什么?在这种情况下,一个发送者可以使用Axis2的缺省属性,换句话说,没有特殊的handler等等。但是你还是有机会告诉客户端载入它自己的axis2.xml拷贝,然后根据这个配置执行。查看下一部分 – 安装测试客户端代码
对于使用Apache Axis2有经验的用户来说,我们推荐高级用户指南。
介绍Axis2
这部分介绍了Axis2和它的结构,包括对包含在最新可下载版本中的不同目录和文件的一个说明。
目录介绍Axis2
Axis2是什么?
内部流程
Axis2如何处理SOAP消息
Axis2发行包
Axis2标准二进制发行包
Axis2.war目录结构
Axis2文档发行包
Axis2和客户端
安装和测试客户端代码
介绍服务
消息交换模式
建立客户端
选择一个客户端生成方法
生成客户端
Axis数据绑定(ADB)
搭建服务
可选择的方法
从无到有建立服务
部署Plain Old Java对象
部署和运行用WSDL建立的Axis2服务
例子
进一步的学习
Axis2是什么?
Apache Axis2项目是一个基于Java语言的Web services系统服务和客户端的实现。为了从Apache Axis 1.0中获取教训,Apache Axis2提供了一个完整的对象模型和模块化体系结构,这样可以很容易的添加功能以及支持一个新的与Web services相关的说明和建议。Axis2可以让你很容易的执行以下任务:
发送SOAP消息
接收和处理SOAP消息
从一个普通的Java类建立Web service
用WSDL来建立实现服务和客户端的实现类
很容易的从一个服务来获取WSDL
发送和接收带有附件的SOAP消息
建立或者使用基于REST的Web service
建立或者使用从WS-Security, WS-ReliableMessaging, WS-Addressing, WS-Coordination和WS-Atomic Transaction获取优势的服务
当新建议出现时,使用Axis2的模块化结构来很容易的加入对它的支持
当然还存在很多其它特性,但是这篇指南主要集中在向你展示如何完成上面列表的前五个任务。
内部流程
要理解Axis2并且知道它做了些什么,你必须对Web services消息的生命周期有一个很好的认识。通常,它看起来如下图所示:
发送应用程序建立原始SOAP消息,这是一个包含消息头和消息体的XML消息。(要获得更多的SOAP信息,查阅“服务介绍”)如果系统需要使用例如WS-Addressing或者WS-Security之类的WS*建议,这个消息就会在离开发送者之前经过额外的处理。一旦消息准备好了,他就会借助一个特别的传输器发送出去,例如HTTP,JMS等等。消息沿着它的路径发送到接收者,接收者是借助传输监听器接收消息的。(换句话说,如果应用程序没有运行HTTP监听器,那么它就将不会接收HTTP消息)再者,如果消息是需要使用WS-Security 或者其它建议的系统的一部分,那么为了检查凭证或者解密敏感信息,它需要一些额外的处理。最后,一个派发者决定这个消息发送到的指定应用程序(或者其它组件,例如Java方法),并且把它发送给这个组件。这个组件是一个完整的应用程序的一部分,这个应用程序是设计用来与这些来回发送的数据一起工作的。
Axis2如何处理SOAP消息
Axis2可以处理一次事务中的发送者和接收者双方的过程。从Axis2的角度看,结构如下:
在一端,你有一个处理(发送或接收)消息的应用程序。在中间,你有Axis2,或者,你可以有Axis2。Web services的价值在于收发双方(任何一方都可以是服务段或者客户端)甚至不需要在同一个平台上,更不需要运行同一个应用程序。假设Axis2在两边同时运行,过程如下:
发送者建立SOAP消息。
Axis "handlers" 执行必要的操作,例如对相关消息进行WS-Security加密。
传输器发送者发送消息。
在接收端,传输监听者检测消息。
传输监听者将消息传递给接收端的所有handler。
一旦消息在“pre-dispatch”阶段处理完,它会被传递给派发者,然后被传给合适的应用程序。
在Axis2中,这些行动被分解成“阶段”,以及几个预定义阶段,例如“pre-dispatch”,“dispatch”和“message processing”,集成在Axis2中。每一个阶段是一组“handler”。Axis2可以让你来控制每个handler归属于哪个阶段,以及在一个阶段中各个handler的执行顺序。你也可以添加你自己的阶段和handler。Handler来自于可以被插入一个运行着的Axis2系统的模块。这些模块,例如提供WS-Security实现的Rampart,提供WS-ReliableMessaging实现的Sandesha,都是Axis2中的主要扩展机能。
Axis2发行包
Axis2以多个发行包发行。你需要哪个视你所需决定。
Axis2标准二进制发行包
如果你正在开发服务和应用程序,你需要Axis2标准二进制发行包。这个发行包包括所有必要的*.jar文件,以及很多便于开发用的脚本。它具有以下结构。代码列表1:Axis2标准二进制发行包
bin
axis2.bat
axis2.sh
axis2server.bat
axis2server.sh
java2wsdl.bat
java2wsdl.sh
wsdl2java.bat
wsdl2java.sh
setenv.sh
lib
activation-1.1.jar
...
XmlSchema.jar
repository
modules
modules.list
addressing-1.1.mar
..
services
services.list
version.aar
..
samples
...
webapp
...
conf
axis2.xml
LICENSE.txt
README.txt
NOTICE.txt
INSTALL.txt
release-notes.html
bin目录包括一些有用的脚本。它们包括axis2.bat(或者axis2.sh),这个文件可以让你在不手工添加Axis2 jar文件到类路径的情况下方便的执行Java命令;java2wsdl.bat(和 .sh)和wsdl2java.bat(和 .sh),它可以让你轻易的从一个WSDL文件生成Java代码,反之亦然;axis2server.bat(和sh),一个简易Web服务器,它可以让你早自己的应用程序中搭建Axis2的功能来发送接收消息。如所希望的,lib目录包含了所有必需的.jar文件。服务和模块放在repository目录。Axis2提供了一个WS-Addrssing的标准模块实现,你可以添加任何其它必要的模块到repository/modules目录,例如Rampart。Conf目录包括axis2.xml文件,它是全局部署描述。最后,示例目录包括了所有随Axis2一起发行的示例代码。查看示例及其描述列表。
axis2.war发行目录结构
axis2.war可以从WAR (Web Archive)发行包处得到。这个Axis2服务端按照一个J2EE应用程序发布。它具有代码列表2所示结构。代码列表2:Axis2的服务端
axis2-web
META-INF
WEB-INF
classes
conf
axis2.xml
lib
activation.jar
...
xmlSchema.jar
modules
modules.list
addressing.mar
...
soapmonitor.mar
services
services.list
aservice.aar
...
version.aar
web.xml
从顶上开始,axis2-web是一组JSP页面,它们组成了Axis2管理员应用,通过这个应用,你可以执行任何需要的行动,例如添加服务,启动或者停止服务。WEB-INF目录代表了实际的Axis2应用程序,包括所有的*.jar文件,任何添加的模块,甚至已经部署的服务自己。Classes目录包含了任何Axis2本身需要的类或者属性文件,例如log4j.properties。任何由系统处理的实际的服务位于services目录,它们以axis卷或者*.aar文件的形式存在。这个文件包含了与这个服务相关的所有类文件,以及控制任何额外需求的service.xml文件,例如消息收发者的定义。所有这些最主要的文件是axis2.xml,它控制了应用程序如何处理接收到的消息。它定义了消息接收者和传输接收者,以及定义传输发送者和决定哪个模块是活跃的。它也定义了阶段的顺序,以及在每个阶段中执行的handler。你可以控制通过使用Web应用程序来控制所有这些信息,但是如果你重启Axis2应用程序,这些变化就丢失了,服务器会重新应用axis2.xml中的定义。Axis2也提供了第三种发行包,源码发行包,该发行包可以让你自己生成这个.war文件。
Axis2文档发行包目录结构
文档发行包包括所有的Axis2文档,它包含xdocs和javadocs。它具有以下结构:代码列表3:Axis2文档发行包
docs
javadocs
xdocs
LICENSE.txt
README.txt
release-notes.html
javadocs目录包括所有的标准Axis2 API文档,在xdocs目录还有其它文档(例如类似本文的文档)。
Axis2和客户端
现在解释作为Web应用一部分的Axis2是如何工作的。非J2EE应用一部分的独立客户端到底是什么?在这种情况下,一个发送者可以使用Axis2的缺省属性,换句话说,没有特殊的handler等等。但是你还是有机会告诉客户端载入它自己的axis2.xml拷贝,然后根据这个配置执行。查看下一部分 – 安装测试客户端代码
发表评论
-
docker初探
2017-08-17 16:49 6231、docker , 先从仓库中下载一个和自己的 ... -
java-nio的hello-word
2017-04-27 17:55 504重点注意:有说明的地 ... -
Java NIO 系列教程
2015-07-02 14:28 883Java NIO提供了与标准IO不同的IO工作方式: ... -
随手记录-设计目录中的jar到类路径
2015-05-07 18:01 790@echo off color 7 SetLocal Enab ... -
gradle和maven结合nexus服务解决jar包依赖
2014-07-17 11:00 16341、架设 nexus nexus 的基础不多讲了,去官网下载 ... -
利用注解定义SQL语句,实现类是iBatis的数据库访问
2014-06-25 18:04 3539import java.lang.annotation.*; ... -
使用 Spring Data JPA 简化 JPA 开发(Spring Data JPA 开发指南)
2014-06-11 15:46 708从一个简单的 JPA 示例开始 本文主要讲述 Spring D ... -
My-sql批量更新或者插入的SQL
2013-09-25 17:03 1385My-sql批量更新或者插入的SQL,高效, MyBatis中 ... -
加减的艺术用于工作学习管理
2013-02-17 17:12 745回顾做过的事情,总结起来,就是先加,后减,再加。 不是吗? ... -
记录到内存的Logger,可用于web动态显示内容的来源
2013-02-17 09:35 1833import java.io.ByteArrayOutputS ... -
一个表达式计算工具
2012-11-21 12:57 781可以计算: 加减乘除,余数,括号 , 结果为整数,操作数全部为 ... -
ms-sql-server获取某表的当前可用的自增值
2012-01-10 09:46 920执行 SQL : select IDENT_CURRENT( ... -
一个加密数字和逗号且减少空间的算法
2010-11-09 17:19 1336注意本算法只能处理由 0,1,2,3,4,5,6,7,8, ... -
云计算笔记
2010-09-01 14:13 809最近得闲,去了解下 hadoop系统,下面为过程记录: 1、 ... -
在MySql上实现Replication(Master 与 Slave 数据同步)
2010-04-23 17:54 1149假设这里有三个数据库分别为 d1、d2、d3,其中d ... -
在一台windows机器上如何安装多个Mysql
2010-04-23 17:41 34161、将mysql程序直接拷贝到某个目录(假设目录为d:\mys ... -
MySQL复制配置步骤文档(主从备份机制)
2010-03-30 10:14 1879本文档主要对一个主服务器,一个从服务器(简称一主一从)的复制配 ... -
如何得到SqlServer的自增ID
2010-03-16 11:09 5957转自:http://hi.baidu.com/vc60/blo ... -
J2EE集群
2010-01-04 15:29 3632对于理解J2EE集群技术不 ... -
JDBC 调用存储过程的整理
2010-01-04 14:30 1053String sqls = this.getSqls().ge ...
相关推荐
**Axis2基础知识** Axis2是Apache软件基金会开发的一个开源Web服务引擎,它是 Axis1 的下一代产品,用于构建和部署Web服务。它基于模块化的设计,使得 Axis2 具有高性能、可扩展性和灵活性。Axis2支持多种协议,如...
**Axis2基础知识** Axis2是基于Apache Axis1的一个全新设计和实现,它是用Java语言编写的,用于处理SOAP消息的引擎。它提供了一个高效、灵活且可扩展的框架,支持多种协议和服务模型,包括HTTP、SMTP、JMS等,以及...
#### 二、Axis2基础知识 **1.1 Axis2简介** Axis2是由Apache组织维护的一个开源项目,它是一个基于Java的Web服务引擎,旨在提供高效、灵活且易于使用的Web服务解决方案。相比于其前身Axis1.x,Axis2进行了全面的重...
#### 二、Axis2基础知识 ##### 1. **用POJO实现0配置的WebService** 在Axis2中,开发者可以利用简单的POJO(Plain Old Java Object)创建无须额外配置的WebService。这种模式极大地简化了开发流程,提高了效率。...
课程分为两大部分:第一部分是Axis2基础知识的讲解,涵盖上述各项技术要点;第二部分则通过三个实际项目来加深理解。这三个项目都是个人信息管理系统(PIM),但实现技术有所不同,分别是使用Java Swing、Struts ...
本课程共分为两部分,其中第一部分为Axis2基础知识讲解。在这部分介绍了前面所述的Axis2 知识。第二部分介绍了三个小的项目。这三个项目的功能类似。所不同的是,它们使用了不同的技术来实现。第一个项目使用Java ...
1. **Axis2基础知识** - **Axis2架构**:Axis2基于模块化设计,允许用户按需加载功能,提高服务的可扩展性。每个模块都实现了特定的功能,如传输、消息格式化、安全等。 - **SOAP版本支持**:Axis2支持SOAP 1.1和...
在IT行业中,Axis2是Apache软件基金会开发的一个用于构建Web服务和Web服务客户端的框架,主要基于Java语言。本文将详细讲解如何使用Axis2来发布Web服务以及...同时,理解SOAP协议和WSDL规范也是必不可少的基础知识。
7. **axis2-kernel-1.4.jar**:Axis2内核JAR文件包含了运行Axis2服务的基础组件,如服务加载器和服务处理逻辑。 8. **xercesImpl-2.8.1.jar**:Xerces是Apache的一个XML解析器项目,它实现了XML 1.0和1.1规范,以及...
7. **HTTP通信** - Apache HttpClient库用于处理HTTP请求和响应,是Axis2进行Web服务调用的基础。 8. **服务部署** - Axis2支持多种部署模型,包括WAR文件部署、目录结构部署等,使得Web服务的发布和更新更加便捷。...
标题中的“axis2+spring webservice”指的是使用Apache Axis2框架与Spring框架集成来开发Web服务。Apache Axis2是Java环境中广泛使用的Web服务引擎,它提供了高性能、灵活且可扩展的架构。Spring框架则是一个全面的...
首先,让我们理解Spring与Axis2集成的基础知识。Spring框架提供了一个服务导向架构(SOA)的支持,允许开发者轻松地创建和消费Web服务。而Axis2是Apache软件基金会的一个项目,专门用于处理Web服务的生成、部署和...
课程内容分为基础知识讲解和项目实践两大部分。基础部分涵盖了Axis2的多种特性,如JAX-RPC和JAX-WS规范的实现、复杂类型的传输、Web服务会话管理以及Axis2模块的使用。 在项目实践中,首先是一个使用Java Swing构建...
了解了这些基础知识后,开发者可以利用Apache Axis2 1.7.9创建高效率、可扩展的Web服务,同时享受其强大的功能和灵活性。在实际项目中,开发者需要根据具体需求选择合适的服务模型、配置相应的模块,并掌握如何部署...
本文将深入探讨使用Axis2开发Web服务的相关知识点,包括Axis2的基础概念、环境搭建、服务创建与发布、Eclipse集成及详细教程。 1. Axis2基础概念: - Web服务:是一种通过HTTP协议进行通信的应用程序,使得不同...