通向架构师的道路(第十三天)Axis2 Web Service安全初步
axis2之webservice新手超详细教程
A XIS2之WEBSERVICE新手超详细教程---------------尚明Axis2是一套崭新的WebService引擎,该版本是对Axis1.x重新设计的产物。
Axis2不仅支持SOAP1.1和SOAP1.2,还集成了非常流行的REST WebService,同时还支持Spring、JSON 等技术,本教程是主要阐述如何构建一个基本的Axis2 webservice应用,里面的许多环节高手可直接略过,本教程完全针对新手。
一、环境安装安装myeclipse下载地址::///file/4238159/48030981-6b56-40a4-a93b-8f424ee4f33a安装mysql下载地址::///file/4238159/de64cf2f-4217-4e11-bb98-8e6c5dd24155安装mysql-workbench(mysql可视化工具)下载地址::///file/4238159/becf913f-56a6-4d68-b248-134113b73535安装tomcat下载地址::///file/4238159/ec6a2250-99ff-464e-a978-be184c96e4e7下载Axis2服务包下载地址::///file/4238159/bb3db6e3-2f7d-4343-b472-c1fa714dba95下载Axis2开发插件包下载地址::///file/4238159/aa39505f-079b-43be-9479-15a2d3e98cbb安装jdk下载地址::///file/4238159/7ba342f9-277f-4b9c-b5e7-b0c5b7dfc151二、环境配置1)Java环境配置a)设置JAVA_HOME图1.图2设置JAVA_HOME=D:\Program Files\Java\jdk1.6.0_10* D:\Program Files\Java\jdk1.6.0_10为笔者本机的JDK安装目录,请开发者根据实际安装路径来填写,注意环境变量最后面不能加分号,D:\Program Files\Java\jdk1.6.0_10;这么写是错误的。
axis2 WebService 开发指南
Axis2.x WebService上次介绍了axis1.x的用法,这次继续上次的,将叙述axis2的用法。
Axis1.x在线博文:/hoojo/archive/2010/12/20/1911349.html一、准备工作1、开发准备首先需要下载axis2的相关jar包,到axis的官方网站即可获得开发的依赖包。
下载地址:/axis2/java/core/download.cgi现在最高的版本是1.5.4的然后你需要下载官方提供的axis的eclipse插件工具,可以帮助我们打包(aar)及其生产客户端调用代码。
下载页面:/axis2/java/core/tools/index.htmlService Archive Wizard - Eclipse Plug-inCode Generator Wizard - Eclipse Plug-in2、安装eclipse插件如果你的eclipse插件安装成功后,会看到如下效果:3、分析axis2-bin文件目录结构下载下来的axis2的依赖库,其中有一个axis2-1.5.3-bin.zip的库文件,目录结构如下:bin文件夹是axis2的常用工具,其中有将wsdl文件转换成客户端调用的wsdl2java工具及将java转换成wsdl文件的工具conf是axis2的配置文件lib运行所要的依赖库repository是发布过的axis服务和文件sample是示例webapp是web文件和jsp页面等4、我们需要将下载下来的axis2-1.5.3-war.zip中的axis2.war这个文件放在我们的tomcat目录下,启动tomcat就会把war文件转成一个可以跑起来的axis2的项目。
Tomcat启动后,在浏览器中输入:http://localhost:8080/axis2/你可以看到二、Axis2的简单WebService示例注意,上面的HelloWorldService是没有package的。
通向架构师的道路(第十三天)Axis2 Web Service安全初步
分类:架构师之路目录(?)[+]CSDN学院讲师招募,诚邀您加入!博客Markdown编辑器上线啦PMBOK第五版精讲视频教程火星人敏捷开发1001问通向架构师的道路(第十三天)Axis2 Web Service安全初步2012-08-02 16:1716470人阅读评论(8)收藏举报service web classloader tomcat web服务webservice一、WSSecurity简述安全的Web服务是Web服务成功的必要保证。
但大家都知道,Web服务使用XML来进行数据交换,而XML在默认情况下是明文编码的;同时,大部分Web服务使用HTTP协议作为传输协议,同样,HTTP也是使用明文方式来传输数据的。
这就造成了在不加密的传输协议上传输不加密的信息,从而使信息传输的保密性受到威胁。
作为企业级的应用,以上的方式不能满足安全性基本要求:² 数据在internet上传输的时侯是不应该被第三方能够看到的;² 双方必须能够验定彼此间的来源;² 双方必须能够确定被传送的数据没有被在中途中遭到黑客的修改。
通过使用SSL协议我们可以解决第一个问题即:"不应该被第三方看到";使用数字签名和数字证书可以解决后面的两个问题。
当使用数字证书方法时,Web 服务请求者必须有一个由可信认证中心签署的数字证书。
请求者使用这个证书来表明它们的身份,并对 SOAP 消息进行数字签名。
对方系统接收到消息后,就可对消息做时间戳记并进行日志记录。
此时,数字签名会得到验证。
验证过程将确保消息来自发送方,并且还要验证消息内容在传输过程中没有被篡改。
IBM、Microsoft 和 Verisign 于2002年十二月份联合发布了一个关于 Web 服务安全性(Web ServicesSecurity,WS-Security)的规范,该规范描述如何向 SOAP 消息附加签名和加密报头;另外,它还描述如何向消息附加安全性令牌(包括二进制安全性令牌,如 X.509 证书),提供了一套帮助 Web 服务开发者保护 SOAP消息交换的机制。
基于Axis2的web服务安全框架设计与实现
形式的多样性 ,详 细研究 了 Axs i 2的消 息处理 机制 ,并 在 SA O P通信 协议 基础上 ,设计 了一个 完整 的、符 合 w s 一 e
收 稿 日期 :2 1-01 ; 修 订 日期 :2 1-21 0 11 —0 0 11—5 基 金 项 目 : 国家 自然 科 学 基 金 项 目 (0 7 1 1 79 1 l )
21 0 2年 5 月
计 算机 工程 与设 计
C VPUTER OI L ENGI NEERI NG AND DES 3 No 5 13 .
第 3卷 3
第5 期
基于 A i xs 2的 w b服 务 安 全 框 架 设 计 与 实 现 e
De in a d i lme t t n o b s r ies c rt r me r a e n Ax s sg n mp e n ai fwe e vc e u iy fa wo k b s d o i2 o
X ONG Gu n -a ,MU - n , HANG Xi- a , I u — n I a gci De u Z j nj J oj 2 i G u
O 引 言
随 着 网络 技 术 的 发 展 ,we b服 务 以 其 良好 的 扩 展 性 和
据加密技术 ,文献 E ]研究 了 X 3 ML加密 用 于访 问控 制 , 文献 [—]提出 了基 于 S A 协议 的安全模 型 ,文献 [ — 45 O P 6 7 ]研究 了新 型 的 WSSc r y 全规 范 ,文献 [ ]在 A— -eui 安 t 8
数 字签名 、消息加 密和基 于角 色的访问控 制 ,能够接收各 种基 于 S A 协 议的客 户端请 求,具有很好 的安全性 和兼容 性, O P
Axis2教程
WebService 是为程序服务的,叧在浏览器中访问 WebService 是没有意义的。因此,在本节使用 Java 实现了一个 控制台程序来调用上一节发布的 WebService。调用 WebService 的客户端代码如下:
package client;
Axis2 是目前比较流行的 WebService 引擎。WebService 被应用在徆多丌同的场景。例如,可以使用 WebService 来发布服务端 Java 类的方法,以便使用丌同的客户端迚行调用。这样可以有效地集成多种丌 同的技术来完成应用系统。WebService 还经常被使用在 SOA 中,用亍 SOA 各个部分交换数据。本课程 重点讲觋了 Axis2 的核心功能,幵提供了三个项目以使学员理觋幵掌握如何将 Axis2 应用亍丌同的场景。 本课程站在刜学者觊度介绍了 Axis2 的大多数常用的功能,例如,以多种方式编写和发布 WebService、 JAX-RPC、JAX-WS、复杂类型传输、WebService 会话管理、Axis2 模块等。本课程共分为两部分,其中 第一部分为 Axis2 基础知识讲觋。在这部分介绍了前面所述的 Axis2 知识。第二部分介绍了三个小的项目。 这三个项目的功能类似。所丌同的是,它们使用了丌同的技术来实现。第一个项目使用 Java Swing 技术 实现了个人信息管理(PIM)系统,这个系统可以对个人信息(如姓名、职位、电话等)迚行增、初、改、 查。在这些操作中,涉及到了如何使用 WebService 来传输和下载图像文件、传输查询结果(Resultset 对象)等技术难点。第二个项目使用 Struts 2.1.6(目前 Struts 2 的最新版,2009 年 1 月发布)来实现 PIM。功能不第一个 PIM 类似。叧是这个系统为 Web 版。在这个项目中学员可以学习到如果将 WebService 应用在 Web 程序中。该系统的主要思想是如果 Web 程序和 WebService 部署在同一台机器上,Web 程 序可以直接调用 WebService 所对应的 Java 类。当然,也可以象第一个项目一样,直接通过 HTTP SOAP 协议调用 WebService。在第二个项目中同时使用了这两种方式来实现。这两种调用方式分别封装在两组 Model 类中。可以通过配置 struts.xml 文件来提定使用哪组模型类(调用方式)。第三个项目使用了 C# 来实现 PIM。这个项目的目的是为了演示如何将.net 技术不 Java 技术集成来实现一个完整的应用。一个 团队要想获得成功,需要每个成员通力合作,各尽所长。而在一个项目中,也和一个团队是一样的,没有 哪一种技术适合做所有的事情,因此,需要将各个领域的杰出代表组成一个技术团队。例如,Java 适合做 企业应用,也能跨平台,比较适合做服务端程序,但它在客户端(C/S)的实现上略显丌足,而.net(以 C#为代表)和 visual studio 是 windows 上诧言和开发工具的王者,在 GUI 上有着无法超越的优势。因 此,将 Java 和.net 结合是最完美的联姻。学员仍这个项目中就会体会到这个优势所在。
Axis2从入门到精通--Webservice在eclipse下开发教程
Axis2 教程文章分类:Java编程Axis2是一套崭新的WebService引擎,该版本是对Axis1.x重新设计的产物。
Axis2不仅支持SOAP1.1和SOAP1.2,还集成了非常流行的REST WebService,同时还支持Spring、JSON等技术。
这些都将在后面的系列教程中讲解。
在本文中主要介绍了如何使用Axis2开发一个不需要任何配置文件的WebService,并在客户端使用Java和C#调用这个WebService。
一、Axis2的下载和安装读者可以从如下的网址下载Axis2的最新版本:/axis2/在本文使用了目前Axis2的最新版本1.4.1。
读者可以下载如下两个zip包:axis2-1.4.1-bin.zipaxis2-1.4.1-war.zip其中axis2-1.4.1-bin.zip文件中包含了Axis2中所有的jar文件,axis2-1.4.1-war.zip文件用于将WebService发布到Web容器中。
将axis2-1.4.1-war.zip文件解压到相应的目录,将目录中的axis2.war文件放到<Tomcat安装目录>\webapps目录中(本文使用的Tomcat的版本是6.x),并启动Tomcat。
在浏览器地址栏中输入如下的URL:http://localhost:8080/axis2/如果在浏览器中显示出如图1所示的页面,则表示Axis2安装成功。
图1二、编写和发布WebService对于用Java实现的服务程序给人的印象就是需要进行大量的配置,不过这一点在Axis2中将被终结。
在Axis2中不需要进行任何的配置,就可以直接将一个简单的POJO发布成WebService。
其中POJO中所有的public方法将被发布成WebService方法。
下面我们来实现一个简单的POJO,代码如下:public class SimpleService{public String getGreeting(String name){return "你好 " + name;}public int getPrice(){return new java.util.Random().nextInt(1000);}}在SimpleService类中有两个方法,由于这两个方法都是public方法,因此,它们都将作为WebService方法被发布。
axis2 webservice入门手册(JS,Java,PHP调用实例源码)思途科技出品
思途科技,网络营销专家
思途科技 让有需求的客户找到你
<messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/> </operation> </service> 二、项目打包并发布 1.可使用你熟悉的 IDE 进行打包成 HelloWorld.aar 参考直接打包方式: 在命令符行境下,将当前目录切换到该项目包下。如博主的例子就需要切换到 sample 所在 的文件夹,注意并非切换进 sample。使用如下命令:jar cvf HelloWorld.aar . 完成在当前 目录生成 HelloWorld.aar 。请注意命令末尾的点“.”。 2.发布,使用前面提到的登录 axis2 后看到的 Upload Service 工具 将 HelloWorld.arr 部署到 Tomc 上。 3.发布测试,如博主例子访问 http://localhost:8088/axis2/services/HelloWorld?wsdl 查看第 2 步骤中部署的 HelloWrold 的描述文件。 如果有报错,则需根据错误信息检查上述步骤。如果没有错误信息,那么 HelloWorld 的 service 端就算完成了。 三、简单客户端调用 1.一个简单的 Java 调用客户端。 参考代码: package example.client; import org.apache.axiom.om.OMAbstractFactory; import org.apache.axiom.om.OMElement; import org.apache.axiom.om.OMFactory; import org.apache.axiom.om.OMNamespace; import org.apache.axis2.addressing.EndpointReference; import org.apache.axis2.client.Options; import org.apache.axis2.client.ServiceClient; public class TestClient {
用AXIS2开发WebService
•建立或者使用从WS-Security, WS-ReliableMessaging, WS-Addressing, WS-Coordination和WS-Atomic Transaction获取优势的服务•当新建议出现时,使用Axis2的模块化结构来很容易的加入对它的支持内部流程要理解Axis2并且知道它做了些什么,你必须对Web services消息的生命周期有一个很好的认识。
通常,它看起来如下图所示:发送应用程序建立原始SOAP消息,这是一个包含消息头和消息体的XML消息。
如果系统需要使用例如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加密。
使用axis2构建WebService服务
使用axis2构建WebService服务以下文档将介绍是使用Tomcat6.0和Apache Axis2开发、部署和测试一个简单的WebService服务。
本文示例为最简单数据类型。
下一章将介绍复杂数据类型的传输。
WebService让一个程序可以透明地调用互联网程序,不管具体的实现细节。
只要WebService公开了服务接口,远程客户端就可以调用服务。
WebService是基于http协议的组建服务,WebService是分散式应用程序的发展趋势。
1.工作环境MyEclipse6.0.1 + JDK1.6 + Axis2-1.3其中Axis2-1.3需要下载Binary Distribution和WAR这两个文件。
目前Axis2的最高版本已到达1.5.2.安装Axis2将下载的Axis2-1.3 W AR文件解压缩,得到axis2.war文件。
将其拷贝到%Tomcat安装目录%webapps下即可。
3.检验安装启动(或重新启动)Tomcat,在地址栏中输入:http://localhost:8080/axis2点击Validate,显示Axis2 Happiness Page4.WebService中的服务器端(1)新建Java工程(2)新建服务器类,建立Hello.javapackage cn.hxyh.webservice;public class Hello {public String getHello() {System.out.println("Hello Service received");return"Hello world!" ;}}(3)在./bin下建立META-INF目录,新建service.xml文件<service name="Hello"><Description>helloword example description</Description><parameter name="ServiceClass"locked="false">cn.hxyh.webservice.Hello</parameter><operation name="getHello"><messageReceiverclass="org.apache.axis2.rpc.receivers.RPCMessageReceiver" /></operation></service>(4)打包生成aar文件在命令符环境下,将目录转到./bin。
Tomcat配置https安全访问的Axis2 Webservice给java和C#调用分解
一.前期准备。
1. 如何编写Axis2 Webservice服务这里就不说了,有需要的可以参考本人百度文库的另一篇文档:/view/aafc47e5580216fc710afd58.html2. 下载axis2-1.7.1-war.zip(其他版本亦可),解压得到axis2.war,放到Tomcat的webapps 目录下,启动tomcat,会自动生成axis2文件夹。
3. 把写好代码的axis2程序包(本例是AxisServer.aar)放到axis2的services目录下,启动Tomcat(即启动Axis2服务)二.生成https访问的SSL安全证书等文件1.随便在一个文件夹下,新建一个server和一个client的空文件夹。
并新建一个keytools.bat 的批处理,编辑批处理的内容如下(红色方块部分需按自己的实际情况填写):set SERVER_DN="CN=127.0.0.1, OU=SPH, O=SPH, L=sh, S=sh, C=CN"set CLIENT_DN="CN=Client, OU=SPH, O=SPH, L=sh, S=sh, C=CN"set PASS_SET= 123456keytool -genkey -v -alias server -keyalg RSA -keystore C:/ZipOut/server/server.keystore -dname %SERVER_DN% -validity 3650 -storepass %PASS_SET% -keypass %PASS_SET%keytool -genkey -v -alias client -keyalg RSA -storetype PKCS12 -keystore C:/ZipOut/client/client.p12 -dname %CLIENT_DN% -validity 3650 -storepass client -keypass clientkeytool -export -alias client -keystore C:/ZipOut/client/client.p12 -storetype PKCS12 -storepass client -rfc -file C:/ZipOut/client/client.cerkeytool -import -alias client -v -file C:/ZipOut/client/client.cer -keystore C:/ZipOut/server/server.keystore -storepass %PASS_SET%keytool -export -alias server -keystore C:/ZipOut/server/server.keystore -storepass %PASS_SET% -rfc -file C:/ZipOut/server/server.cerkeytool -import -file C:/ZipOut/server/server.cer -storepass %PASS_SET% -keystore C:/ZipOut/client/client.truststore -alias server -nopromptpause2.双击批处理文件,即会在server和client目录下生成需要的证书等文件。
通向架构师的道路(第十天)之Axis2-Web-Service(一)
一、Axis2简介1.1 介绍Axis2Axis框架来自Apache 开放源代码组织,它是基于JAVA语言的最新的SOAP 规范(SOAP 1.2)和SOAP withAttachments 规范(来自Apache Group )的开放源代码实现。
有很多流行的开发工具都使用AXIS作为其实现支持Web服务的功能,例如JBuilder以及著名的Eclipse J2EE插件Lomboz。
AXIS的最新版本可以从/axis/index.html下载。
下载下来后直接解压即可用了。
下图是AXIS核心引擎的体系结构图:整个AXIS项目包括以下几个部分:ü消息流子系统消息流子系统提供了灵活的消息传递框架,这个消息传递框架包括处理程序、链、序列化程序和反序列化程序。
处理程序是一个处理请求、响应和故障流的对象。
处理程序可被组合在一起成为链,而且可以使用一个灵活的部署描述符来配置这些处理程序的顺序。
ü传输框架子系统提供了一个传输框架,这个传输框架可以帮助您创建自己的可插式传输发送器和传输侦听器。
ü数据编码子系统AXIS完全按照XML Schema 规范提供各种数据类型的自动序列化,并且提供功能扩展接口来使用您自己定制的序列化器和反序列化器。
ü其他AXIS完全支持WSDL 以及日志记录、出错以及故障处理机制。
它同时提供一些工具用来讲WSDL文档转换成客户端的调用框架以及根据类来产生WSDL定义文档。
AXIS目前版本支持的标准是:W3C SOAP1.1 和1.2;WSDL 1.1;SAAJ 1.1(SUN公司:SOAP with Attachments API for Java);JAX-RPC(SUN公司:Java APIfor XML-Based RPC)1.0。
1.2 开发项目中如何选择使用Axis2和其它的WebService²如果你的应用程序需要支持多语言即有C++, .net, Java,你应该选择Axis2。
webService(axis2,cxf,xfire,gsoap)介绍
Axis2,CXF,xifire1. Axis2.x (3)1.1. 开发准备工作 (3)1.1.1. 环境 (3)1.1.2. 单独启动AXIS2服务 (4)1.1.3. 将axis2-1.6.2-bin.zip中的项目打成axis2.war包 (4)1.1.4. Axis2脚本 (5)1.1.5. 安装eclipse插件(可选) (7)1.1.6. axis2-bin文件目录结构 (8)1.1.7. 部署axis2.war到tomcat (8)1.1.8. 上传services(Uploading Services) (9)1.2. Axis2开发部署 (9)1.2.1. 编写服务器代码,和配置文件 (10)1.2.2. 发布 (11)1.2.3. 通过class文件生成wsdl文件(java2wsdl) (13)1.2.4. 通过wsdl文件生成Java访问代码(wsdl2java) (13)1.2.5. 调用:Axis2开发WebService客户端的3种方式 (14)1.2.6. PS:配置文件介绍 (21)1.3. 大病系统ESB接口开发 (25)1.3.1. esb接口标准 (26)1.3.2. esb接口开发 (31)1.3.3. esb接口调试测试 (53)1.3.4. esb接口发布 (53)2. CXF (53)2.1. 准备工作 (54)2.2. 开发示例 (54)2.2.1. 编写服务端接口 (55)2.2.2. 编写服务实现 (56)2.2.3. 编写webServiceApp.java类来暴露web服务 (57)2.2.4. 启动服务 (57)2.2.5. 编写客户端访问服务 (57)2.2.6. 测试 (58)2.2.7. 集成到spring (58)2.2.8. 通过wsdl文件生成客户端和服务器端代码 (61)3. xfire (62)3.1. 准备工作 (62)3.2. 开发步骤 (62)3.2.1. 建立目录结构 (62)3.2.2. 添加依赖包 (63)3.2.3. 编写服务端代码 (63)3.2.4. 配置web.xml (66)3.2.5. 创建xfire配置文件 (67)3.2.6. services.xml的作用 (68)3.2.7. 在服务器上运行服务 (69)4. Axis与XFire的比较 (72)4.1. XFire与Axis1性能的比较 (72)4.2. XFire与Axis2的比较 (72)5. cxf与axis2比较 (73)6. WSDL文件 (74)6.1. 抽象定义 (74)6.2. 具体定义 (74)7. JAXB (76)7.1. Java SE中的JAXB (76)7.2. 使用 (77)7.3. 缺省的数据类型绑定 (77)7.4. 代码示例 (78)1.Axis2.xWeb Service是现在最适合实现SOAP的技术,而Axis2是实现Web Service的一种技术框架(架构)。
快速上手指南 - 基于Eclipse Axis2 插件的Web Service开发[最新]【优秀】
快速上手指南 - 基于Eclipse Axis2 插件的Web Service开发[最新]【优秀】(文档可以直接使用,也可根据实际需要修订后使用,可编辑推荐下载)axis2创建web service(一)axis2 是新一代的web service开发工具,它会让你的web service开发变得轻松,快捷。
下面让我们以一个实际的例子来体验一下。
首先,工欲善其事,必先利其器。
就让我们先做好一些必备的准备工作吧。
1.下载axis2 的2进制的包和war,现在的最新版本是发布时间是2021-8-25地址分别是:2.把下载后的war放入tomcat的webapps目录里,然后启动tomcat,这样war包就会自动解压为目录axis2在浏览器中输入 ://localhost:8080/axis2/,如果一切正常你会看到下面的画面3,就开始准备一下axis2的eclispe的插件了。
axis2的eclispe插件分为2个,一个是帮助我们生成aar文件的,另一个是帮我们用wsdl文件生成stub代码的。
下载地址是下载完2个压缩文件后,可以直接把解压后的文件拷贝到plugins目录中,也可以在links目录中写文件路径的方式来安装插件,安装完插件后,打开eclipse,在package explorer 中点击右键--->选择new---->other如果安装正确你会看到这样准备工作就都做好了。
接下来就是正式开发了。
axis2创建web service(二)工具都已经准备齐全了。
我们来动手做一个小例子来小试牛刀!这一节我们先利用axis2来发布一个web service 的服务,然后在下一节我们做一客户端来调用这个服务。
我们的服务很简单的,就是输入一个字符串,然后打印出一段字符串。
代码很简单,主要是测试用。
Java代码1.2.3.public class SimpleServer {4.5. /**6. * 简单的测试方法7. *8. */9. public String simpleMethod(String name) {10. return name + "Say this is a Simple method ^-^";11. }12.13.}主要的过程就是如何利用axis2的eclispe插件来发布这个服务啦。
axis2创建webservice操作手册范本
搭建WebService操作手册2010-10-25修订记录1.引言 (4)1.1 目的 (4)1.2 为什么要使用WebService (4)1.3 什么是WebService (4)1.4 WebService WSDL SOAP关系 (5)1.5 Web Service服务器工作流程 (5)1.6 Web Service客户端工作流程 (6)2.系统所需环境 (6)3.构建WebService服务器 (6)3.1 使用AXIS2构建WebService服务器 (6)3.1.1 POJO方式 (6)3.1.2 使用框架构建webservice (11)3.1.3 使用独立安装模式 (20)4. 构建WebService客户端 (21)4.1.1 使用插件创建WebService客户端 (21)1.引言1.1 目的本操作手册具体介绍了WebService的工作原理并详细描述了使用axis2构建WebService的流程,主要面向刚刚接触WebService的开发人员。
1.2 为什么要使用WebServiceWebService是一个新的概念,它并不是微软首先提出的,但是微软的dotnet战略让它最广泛的发挥它的潜能。
也许它流行的根本原因并不是微软,也许是因为带宽与存储量的飞速发展,但是dotnet战略确实起到了很大的作用,令它能够在更加广泛的开发平台上施展。
dotnet战略领导着微软前进,微软为了dotnet计划也花费了近300亿美元。
为什么?因为微软要它的理念、方式不但在单机软件,甚至在Internet上也被最广泛的认同。
WebService 最早被应用在Sun等对网络先知先觉的平台上,并且在苦苦的期待发展。
而J2EE是最早的成功开发WebService的平台,它的理念就是在网上最广泛的传播、使用,成为一种真正的服务。
当微软的dotnet计划即将实施的时候,微软也开始发掘WebService的潜力。
用Axis2开发Web Service及客户端
用Axis2开发Web Service及客户端在《使用Eclipse的Axis1.4插件开发Web Service及客户端》介绍的Axis是用的Axis1.x,而Axis2是改进版本,进行了重新的设计,应该是Axis的第二代,本文介绍Axis2的使用方法。
/axis2/是Axis2的主页,写这篇文章的时候最新版本是1.5,从/axis2/download/1_5/download.cgi下载axis2-1.5-bin.zip、axis2-1.5-war.zip。
axis2-1.5-war.zip是web发布版本,可以在网页上进行Web Service的动态部署,提供Web Service服务。
解压缩后把axis2.war放到tomcat的webapps下面,启动tomcat,在网页中输入http://localhost:8080/axis2(取决于tomcat的设置)就可以进行操作了。
这方面的资料很多,就不详细介绍了。
下面介绍使用Eclipse插件开发的方法,环境与《使用Eclipse的Axis1.4插件开发Web Service及客户端》的相同。
启动Eclipse后,首先设置Axis2的主目录,需要先解压缩axis2-1.5-bin.zip,然后把解压缩之后的路径填入Eclipse的Window|Preferences|Web Services|Axis2 Preferences的界面上,如下图所示:图1在Eclipse中设置Axis2的runtime建立一个简单的类:package demo.axis; public class User{public String sayHello(String userName){return "hello " + userName;}}把这个类发布为Web Service的步骤与《使用Eclipse 的Axis1.4插件开发Web Service及客户端》中的相同,只是要注意选择Axis2,生成之后的目录结构是:图2生成Web Service后的目录结构但生成之后的项目中缺少.jar文件,可以把%AXIS2-HOME%/lib下的所有文件复制到项目的WEB-INF/lib下面,部署到tomcat就可以运行了,在浏览器中输入http://localhost:8080/Axis2ServerDemo/services/User?wsd l就可以看到发布的Web Service的wsdl了。
axis2_WebService_开发手册
Axis2 WebServiceAxis的简单准备Axis的入门实例Axis复杂对象类型的WebServiceAxis的辅助工具发布、调用WebServiceAxis WebService会话Session的管理Axis用控制台Dos命令发布WebServiceAxis跨多个WebService管理SessionAxis用Spring的JavaBean发布WebServiceAxis异步调用WebServiceAxis 的Module模块Axis使用SoapMonitar监视WebService的请求和响应信息一、准备工作1、开发准备首先需要下载axis2的相关jar包,到axis的官方网站即可获得开发的依赖包。
下载地址:/axis2/java/core/download.cgi现在最高的版本是1.5.4的然后你需要下载官方提供的axis的eclipse插件工具,可以帮助我们打包(aar)及其生产客户端调用代码。
下载页面:/axis2/java/core/tools/index.htmlService Archive Wizard - Eclipse Plug-inCode Generator Wizard - Eclipse Plug-in2、安装eclipse插件如果你的eclipse插件安装成功后,会看到如下效果:3、分析axis2-bin文件目录结构下载下来的axis2的依赖库,其中有一个axis2-1.5.3-bin.zip的库文件,目录结构如下:bin文件夹是axis2的常用工具,其中有将wsdl文件转换成客户端调用的wsdl2java工具及将java转换成wsdl文件的工具conf是axis2的配置文件lib运行所要的依赖库repository是发布过的axis服务和文件sample是示例webapp是web文件和jsp页面等4、我们需要将下载下来的axis2-1.5.3-war.zip中的axis2.war这个文件放在我们的tomcat目录下,启动tomcat就会把war文件转成一个可以跑起来的axis2的项目。
关于使用Axis2webservice处理Fault响应时抛org.apache.axis。。。
关于使⽤Axis2webservice处理Fault响应时抛org.apache.axis。
使⽤Axis2这个框架进⾏webservice协议通讯,期间出了个问题,我(CLIENT)请求后,当服务端返回符合协议的SOAP异常报⽂,例如<soap:fault> ...我的程序直接抛org.apache.axis2.AxisFault异常,导致连服务端给我们的报⽂都没有接收成功。
--请注意,是我连报⽂都没有接收成功,⽽不是接收成功后我解析失败了。
[java]1. try {2. ServiceClient serviceClient = new ServiceClient();3. Options options = new Options();4. //设置超时时间,单位毫秒5. options.setTimeOutInMilliSeconds(this.wsTimeOut);6. options.setTransportInProtocol(Constants.TRANSPORT_HTTP);7. options.setTo(new EndpointReference(this.wsEndpointAddress));8. options.setSoapVersionURI(org.apache.axiom.soap.SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);9. options.setAction(this.wsMethod);10. MessageContext requetMessageContext = new MessageContext();11. SOAPEnvelope env = this.getRequestEnvelope();12. ("version : "+ env.getVersion().getEnvelopeURI());13. requetMessageContext.setEnvelope(env);14.15. OperationClient opClient = serviceClient.createClient(ServiceClient.ANON_OUT_IN_OP);16. opClient.addMessageContext(requetMessageContext);17. opClient.setOptions(options);18. opClient.execute(true);19. MessageContext rspMC = opClient.getMessageContext("In");20. response = rspMC.getEnvelope().getBody().getFirstElement();21. ("应答报⽂: "+ rspMC.getEnvelope());22. } catch (AxisFault e) {23. this.errRspDesc = "xxxxx";24. log.error("soapDispatch AxisFault!");25. throw e;26. } catch (Exception e) {27. this.errRspDesc = "xxxxxxxxxxxxx!";28. log.error("soapDispatch Exception!");29. throw e;30. }try {ServiceClient serviceClient = new ServiceClient();Options options = new Options();//设置超时时间,单位毫秒options.setTimeOutInMilliSeconds(this.wsTimeOut);options.setTransportInProtocol(Constants.TRANSPORT_HTTP);options.setTo(new EndpointReference(this.wsEndpointAddress));options.setSoapVersionURI(org.apache.axiom.soap.SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);options.setAction(this.wsMethod);MessageContext requetMessageContext = new MessageContext();SOAPEnvelope env = this.getRequestEnvelope();("version : "+ env.getVersion().getEnvelopeURI());requetMessageContext.setEnvelope(env);OperationClient opClient = serviceClient.createClient(ServiceClient.ANON_OUT_IN_OP);opClient.addMessageContext(requetMessageContext);opClient.setOptions(options);opClient.execute(true);MessageContext rspMC = opClient.getMessageContext("In");response = rspMC.getEnvelope().getBody().getFirstElement();("应答报⽂: "+ rspMC.getEnvelope());} catch (AxisFault e) {this.errRspDesc = "xxxxx";log.error("soapDispatch AxisFault!");throw e;} catch (Exception e) {this.errRspDesc = "xxxxxxxxxxxxx!";log.error("soapDispatch Exception!");throw e;}当执⾏到发送请求opClient.execute(true);服务端成功返回格式正常的SOAP异常报⽂,此时程序直接抛异常,⾛不到下⾯rspMC的获取,也就拿不到响应报⽂。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
分类:架构师之路目录(?)[+]CSDN学院讲师招募,诚邀您加入!博客Markdown编辑器上线啦PMBOK第五版精讲视频教程火星人敏捷开发1001问通向架构师的道路(第十三天)Axis2 Web Service安全初步2012-08-02 16:1716470人阅读评论(8)收藏举报service web classloader tomcat web服务webservice一、WSSecurity简述安全的Web服务是Web服务成功的必要保证。
但大家都知道,Web服务使用XML来进行数据交换,而XML在默认情况下是明文编码的;同时,大部分Web服务使用HTTP协议作为传输协议,同样,HTTP也是使用明文方式来传输数据的。
这就造成了在不加密的传输协议上传输不加密的信息,从而使信息传输的保密性受到威胁。
作为企业级的应用,以上的方式不能满足安全性基本要求:² 数据在internet上传输的时侯是不应该被第三方能够看到的;² 双方必须能够验定彼此间的来源;² 双方必须能够确定被传送的数据没有被在中途中遭到黑客的修改。
通过使用SSL协议我们可以解决第一个问题即:"不应该被第三方看到";使用数字签名和数字证书可以解决后面的两个问题。
当使用数字证书方法时,Web 服务请求者必须有一个由可信认证中心签署的数字证书。
请求者使用这个证书来表明它们的身份,并对 SOAP 消息进行数字签名。
对方系统接收到消息后,就可对消息做时间戳记并进行日志记录。
此时,数字签名会得到验证。
验证过程将确保消息来自发送方,并且还要验证消息内容在传输过程中没有被篡改。
IBM、Microsoft 和 Verisign 于2002年十二月份联合发布了一个关于 Web 服务安全性(Web ServicesSecurity,WS-Security)的规范,该规范描述如何向 SOAP 消息附加签名和加密报头;另外,它还描述如何向消息附加安全性令牌(包括二进制安全性令牌,如 X.509 证书),提供了一套帮助 Web 服务开发者保护 SOAP消息交换的机制。
根据应用的对安全要求的级别不同,可以采用不同的方式来实现安全性,以下是目前最常用的一些实现方式(从低到高排列):² J2EE Web应用默认的访问控制(数据是明文的);² 使用axis的Handler进行访问控制(数据是明文的);² 使用Servlet过滤器(Filter)进行访问控制(数据是明文的);² 使用SSL/HTTPS协议来传输(加密的数据传输协议);² 使用WS-Security规范对信息进行加密与身份认证(数据被加密传输)。
前三种方式对于安全级别要求不高的应用是可行的,它能够使用Web应用访问认证机制来进行权限验证,从而保护对资源的访问。
但需要注意的是,虽然它们进行了身份验证,但信息的传递还是以明文的方式进行的,不能保证信息在传输过程中不被窃取。
SSL是一个安全的传输协议,使用它传输Web服务能保证信息不被第三方窃取。
但它有个缺点就是对系统资源消耗大。
采用最后一种方式,信息被签名后再加密,然后把加密后的信息网络上传播,这样,即使第三方获得加密后的传输信息,也不能解密。
对于安全级别要求高的系统,应该采用WS-Security规范来作为Web服务安全性解决方案。
二、基于https通信并且使用用户名密码来验证的WS在一般的应用中,我们可以通过https来保护我们传输的明文数据。
关键在于我们需要来验证这个客户端过来的请求,即需要具有基本的用户名,密码才能访问我的Web Service,我们称之为Basic Auth。
2.1 错误做法原创:转载:译文:评论:个人资料红肠啃僵尸访问:积分:等级:排名:文章搜索博客专栏think in javainterview文章:12篇阅读:126217架构师修练之道文章:45篇阅读:1012157文章分类架构师之路随笔面经文章存档2015年03月2015年02月目录视图摘要视图订阅lifetragedy的专栏吾以吾血荐我中华之IT登录 | 注册1212497次10343第539名68篇0篇0篇1954条(36)(1)(12)(1)(3)在很多项目中,有些开发队伍为了图省事,客户对环境的掌控也不好,为了验证一个webservice ,我们往往会采用以下这样的验证手法:第一种:http://xxxx.xxx.xxx/abc.wsdl?username =验证个头&password=验证个头服务端拿到这个url 把username ,password 用request.getParameter 出来后,和数据库一匹配,验证。
第二种:<Request xmlns="http://10.225.106.35"><username>验证个头啊</username><password>不要老是你个头你个头</password><BusinessData>2007-01-01</BusinessData></ Response >服务端拿到后把这个soap request body 中的<username>和<password>拿出来后和数据库一匹配,又验证了!这两种做法,无疑是掩耳盗铃!!!(不要和我说业务实现是最主要的,等你的数据哪天没了,厂长经理的工资被篡改了,如果你愿意被客户做成东方不败,那你尽管去这样做就好了。
)2.2 正确的做法通过上图我们可以看到,如果你的用户名和密码和服务端预设的用户名密码如果不匹配,你的“调用”,根本到达不了具体的Web Service ,直接在Web Server 端已经被打回来了,即你连wsdl 都到达不了。
一、实际例子3.1 Service 端我们编写一个Service 端展开2014年01月2013年12月2013年10月阅读排行通向架构师的道路(第一天Apache 整合Tomcat通向架构师的道路(第四天Tomcat 性能调优-让小猫飞奔5天学会jaxws-webservice 编程第一天通向架构师的道路(第二天apache tomcat https 应用通向架构师的道路(第三天apache 性能调优通向架构师的道路(第五天tomcat 集群-群猫乱舞通向架构师的道路(第六天通向架构师的道路(第七天ThreadLocal 改进你的层次的划分通向架构师的道路(第八天weblogic 与apache 的整合与调优通向架构师的道路(第十天Axis2 Web Service(一)评论排行通向架构师的道路(第一天Apache 整合Tomcat我的架构师历程,其实一切(下)通向架构师的道路(第七天ThreadLocal 改进你的层次的划分通向架构师的道路(第十八Spring(一)通向架构师的道路(第二天apache tomcat https 应用通向架构师的道路(第五天tomcat 集群-群猫乱舞通向架构师的道路(第四天Tomcat 性能调优-让小猫飞奔5天学会jaxws-webservice 编程第一天think in java interview-高级开发人员面试宝典(二)通向架构师的道路(第十四Axis2 Web Service 安全之rampart推荐文章* 【ShaderToy】开篇* FFmpeg源代码简单分析:avio_open2()* 技能树之旅: 从模块分离到测试* Qt5官方demo解析集36——Wiggly Example* Unity3d HDR和Bloom效果(高动态范围图像和泛光)* Android的Google官方设计指南(上)(1)(4)(2)(111488)(66415)(61084)(57202)(52385)(49834)(38355)(33367)(32885)(32750)(211)(135)(119)(99)(94)(75)(73)(71)(62)(55)org.sky.axis2.security.SimpleAuthServicepackage org.sky.axis2.security;public class SimpleAuthService {public double getTax(double salary) {// System.out.println("input salary=====" + salary);if (salary > 10000) {return 2000;} else if (salary > 1000 && salary <= 10000) {return 200;} else {return 0;}}}service.xml文件的内容<service name="SimpleAuthService"><Description>Please Type your service description here</Description><parameter name="ServiceClass" locked="false">org.sky.axis2.security.SimpleAuthService </parameter><messageReceivers><messageReceiver mep="/2004/08/wsdl/in-out"class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" /></messageReceivers><actionMapping>urn:getTax</actionMapping></service>最重要的来了修改web.xml文件,增加以下的内容<security-constraint><web-resource-collection><web-resource-name>Simple Authenticate Web service</web-resource-name> <url-pattern>/services/SimpleAuthService</url-pattern></web-resource-collection><auth-constraint><role-name>bank_member</role-name></auth-constraint></security-constraint><login-config><auth-method>BASIC</auth-method><realm-name>Axis Basic Authentication Area</realm-name></login-config><security-role><role-name>bank_member</role-name></security-role>我们可以看到:l 只有在服务端属于bank_member角色(组)中的人员才被允许访问该web service即:SimplAuthService。