axis2之webservice新手超详细教程
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从入门到精通--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 {
WebService大讲堂之Axis2(8):异步调用WebService
WebService大讲堂之Axis2(8):异步调用WebService在前面几篇文章中都是使用同步方式来调用WebService。
也就是说,如果被调用的WebService方法长时间不返回,客户端将一直被阻塞,直到该方法返回为止。
使用同步方法来调用WebService虽然很直观,但当WebService方法由于各种原因需要很长时间才能返回的话,就会使客户端程序一直处于等待状态,这样用户是无法忍受的。
当然,我们很容易就可以想到解决问题的方法,这就是多线程。
解决问题的基本方法是将访问WebService的任务交由一个或多个线程来完成,而主线程并不负责访问WebService。
这样即使被访问的WebService方法长时间不返回,客户端仍然可以做其他的工作。
我们可以管这种通过多线程访问WebService的方式称为异步访问。
虽然直接使用多线程可以很好地解决这个问题,但比较麻烦。
幸好Axis2的客户端提供了异步访问WebService的功能。
RPCServiceClient类提供了一个invokeNonBlocking方法可以通过异步的方式来访问WebService。
下面先来建立一个WebService。
MyService是一个WebService类,代码如下:package service;public class MyService{public String getName(){try{System.out.println("getName方法正在执行");// 延迟5秒Thread.sleep(5000);}catch (Exception e){}return "火星";}}为了模拟需要一定时间才返回的WebService方法,在getName方法中使用了sleep方法来延迟5秒。
下面是MyService类的配置代码:<!-- services.xml --><service name="myService"><description>异步调用演示</description><parameter name="ServiceClass">service.MyService</parameter><messageReceivers><messageReceiver mep="/2004/08/wsdl/in-out"class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/></messageReceivers></service>从上面的配置代码可以看出,MyService的配置方式与前几章的WebService的配置方式完全一样,也就是说,MyService只是一个普通的WebService。
使用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。
axis2发布服务(WebService)和生成客户端(Client)
一、准备工作1.下载axis2相关jar包目前最新版本为 1.6.2;将axis2-1.6.2-bin.rar,axis2-1.6.2-war.zip一并下载下来,下载地址:/axis2/java/core/download.cgi2.下载axis2插件:axis2-eclipse-codegen-plugin-1.6.2.zip、axis2-eclipse-serv ice-plugin-1.6.2.zip,下载地址:/axis2/jav a/core/tools/index.html3安装Eclipse插件,安装成功如下图:5.新建Web Project(axis2_Serv ice)将axis2-1.6.2-bin\lib下的jar拷贝到axis2_Serv ice\lib下,打开axis2-1.6.2-war.zip\axis2\WEB-INF下的conf、modules、services 解压到项目(axis2_Serv ice)WebRoot\WEB-INF下6.修改web.xml文件,添加如下代码:7.添加两个类:bean类和服务类Bean类:package .zjl.entity;import java.io.Serializable;public class User implements Serializable{/****/private static final long serialVersionUID = 1L;private int id;private String name;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) { = name;}}要发布的服务类:package .zjl.service;import er;public class UserService {public User getUser(User user) {System.out.println("service:"+user.getId());System.out.println("service:"+user.getName());User po2 = new User();po2.setId(1);po2.setName("zjl");return po2;}}8.Axis2插件工具生成aar文件,发布WebService在项目上右击->new->other选择Axis2 Serv ice Archiv er,点击nextClass File Location选择工程路径下的classes文件,点击Next勾选Skip WSDL项,点击next这里没有jar文件,所以默认,点击Next勾选Generate the serv ice xml automatically项,点击NextServ ice Name 随便写记住就行,Class name包名点类名称点击Load会出现这个类下的所有方法名称,点击NextOutput location选择输出文件位置(具体位置根据具体而定),点击Finsh说明成功。
通向架构师的道路(第十天)之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。
使用axis2创建并发布webservice.
点击查看已部署的服务
练习1
部署服务MyService,服务代码为MyService.java 依次访问服务的update方法和echo方法
练习2
部署服务WeatherService,服务类文件为 WeatherService.java
依次访问服务的setWeather方法和getWeather 方法
编写服务代码
服务代码
package samples.quickstart.service.pojo; import java.util.HashMap;
public class StockQuoteService { private HashMap map = new HashMap();//存储(symbol,price)值对 //按照symbol取price
存放部署描述文件的META-INF文件夹
和包名对应的文件夹结构,最底层放编译 后的class文件
文件夹可以直接部署,也可以打包成*.aar部署,部署位置为: tomcat目录\webapps\axis2\WEB-INF\services
启动tomcat
浏览器中输入地址http://localhost:8080/axis2
Axis2应用将充当SOAP服务器,监听SOAP消息,转 发给相应的服务。
创建和部署webservice的方式
Code-first approach: 先写服务代码,再部署服
务(手工编写WSDL或者使用工具生成WSDL)
POJO(Plain Old Java Objects)方式 AXIOM方式
使用Axis2创建和部署web服务
使用Axis2部署服务—环境准备
axis2新手教程实例
Axix2 webservice 开发教程例子简单易懂,很适合初学者。
开发环境:jdk1.6 tomcate5.0 Myeclipse5.0步骤:1.下载axis2所用包axis2-1.4.1-bin.zip 和axis2-1.4.1-war.zip并解压下载地址:/axis2/2.解压axis2-1.4.1-war.zip 将axis2.war 放到%TOME_HOME%\webapps中.启动Tomcate. IE地址输入:http://localhost:<port>/axis2/ .出现以上表示环境搭建成功。
3.下面开始开发自己的axis2 ws:创建web项目:我的项目工程名为axis2demo;将axis2-1.4.1\lib下所有jar导入。
创建一个HelloWorld.java在META-INF下建一个service.xml文件。
<?xml version="1.0" encoding="UTF-8"?><service><parameter name="ServiceClass" locked="false">com.xwx.demo.HelloWorld<poeration name="sayHello"><messageReceiverclass="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/> </poeration></parameter></service>注:关于service.xml的参数配置自己baidu+google4.就开始准备一下axis2的eclispe的插件了。
axis2的eclispe插件分为2个,一个是帮助我们生成aar文件的,另一个是帮我们用wsdl文件生成stub代码的。
Axix2 webservice 开发教程
Axix2 webservice 开发教程
例子简单易懂,很适合初学者。
开发环境:jdk1.6 tomcate5.0 Myeclipse Or Eclipse
步骤:
1.下载axis2所用包axis2-1.4.1-war.zip并解压下载地址:/axis2/
2.解压axis2-1.4.1-war.zip 将axis2.war 放到%TOME_HOME%\webapps中.启动Tomcate. IE地址输入:http://localhost:<port>/axis2/ .
出现以上表示环境搭建成功。
3.下面开始开发自己的axis2 ws:
创建普通项目:
编写一个普通java类
在META-INF下建一个service.xml文件。
注:关于service.xml的更多参数配置可参照axis2的API 4.打包:自己编译一个小小的ant脚本即可
注意打包需要打成.aar的包
脚本示例:
具体war格式可参见附件
然后将生成的.aar文件,放到%TOME_HOME%\webapps\axis2\WEB-INF\services下。
启动服务
IE 输入:http://localhost:8088/axis2/
进入到
发布成功!
5.生成客户端使用插件生成,简单多了
最后刷新你的项目即可看到src下生成的目录了。
报错的话需要引用lib里面的包。
结束的时候自己写个测试类。
如何用Axis2开发WebService服务
如何用Axis2 1.5开发WebService服务目录简要概述Axis2部分优点开发环境文档提纲详述注意事项简要概述WebService 是一种新的web应用程序分支。
Apache Axis是WebService开发平台之一,其核心是一个SOAP处理器,用于开发客户端、服务端等各种应用。
Axis2部分优点:所占用的内存要远小于Axis1所占用的内存。
支持的传输协议:HTTP、SMTP、TCP。
Axis支持三种web service的部署和开发,分别为:1、Dynamic Invocation Interface (DII)2、Dynamic Proxy方式3、Stubs方式本文档主要介绍如何利用Axis2开发Web服务以及如何利用Axis2提供的客户端API进行Web服务的调用。
开发环境MyEclipse 5.5.1 GA、Tomcat6.0(端口8088)、JDK1.5、Axis2文档提纲(即:开发步骤)1、下载war包(可作为部署用的Web工程)、axis2的2进制的包(内有些小samples)及相关lib包。
2、部署axis2.war.至tomcat(可直接部署aar文件到TOMCAT_HOME\webapps\axis2\WEB-INF\services)。
3、安装eclipse插件axis2-eclipse-codegen-wizard.zip、axis2-eclipse-service-archiver-wizard.zip4、利用axis2来发布一个web service 的服务(即生成wsdl文件)。
a)aar文件方式b)配置方式5、客户端访问web服务a)生成stub client访问web服务(用eclipse的axis2的插件来生成stub代码(2个类:**Stub、**CallbackHandler)。
b)request SOAP见文件目录samples\soap下的实例.(前提:发布服务类HelloWorldService 得到wsdl文件)c)RPCServiceClient见文件目录samples\rpcserviceclient下的实例.(前提需要得到wsdl文件)d)其他详述第3步:①【axis2 data】目录中Axis-Plugin-Dir文件夹拷至*\MyEclipse 5.5.1 GA\目录.②Copy axis-eclipse-plugin.link文件至*\MyEclipse 5.5.1 GA\eclipse\links目录.③打开eclipse鼠标焦点定位至Package Explorer试图右键—>New—>Other—看到如下图所示界面,至此插件安装完毕:第4步:A方式(此方式较简单,具体截图步骤略):①aar打包:1)jar cvf **.aar . 注意后面有一个点,演示时打包没成功就缺了这个点。
快速上手指南 - 基于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)和生成客户端(Client)
一、准备工作1.下载axis2相关jar包目前最新版本为 1.6.2;将axis2-1.6.2-bin.rar,axis2-1.6.2-war.zip一并下载下来,下载地址:/axis2/java/core/download.cgi2.下载axis2插件:axis2-eclipse-codegen-plugin-1.6.2.zip、axis2-eclipse-serv ice-plugin-1.6.2.zip,下载地址:/axis2/jav a/core/tools/index.html3安装Eclipse插件,安装成功如下图:5.新建Web Project(axis2_Serv ice)将axis2-1.6.2-bin\lib下的jar拷贝到axis2_Serv ice\lib下,打开axis2-1.6.2-war.zip\axis2\WEB-INF下的conf、modules、services 解压到项目(axis2_Serv ice)WebRoot\WEB-INF下6.修改web.xml文件,添加如下代码:7.添加两个类:bean类和服务类Bean类:package .zjl.entity;import java.io.Serializable;public class User implements Serializable{/****/private static final long serialVersionUID = 1L;private int id;private String name;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) { = name;}}要发布的服务类:package .zjl.service;import er;public class UserService {public User getUser(User user) {System.out.println("service:"+user.getId());System.out.println("service:"+user.getName());User po2 = new User();po2.setId(1);po2.setName("zjl");return po2;}}8.Axis2插件工具生成aar文件,发布WebService在项目上右击->new->other选择Axis2 Serv ice Archiv er,点击nextClass File Location选择工程路径下的classes文件,点击Next勾选Skip WSDL项,点击next这里没有jar文件,所以默认,点击Next勾选Generate the serv ice xml automatically项,点击NextServ ice Name 随便写记住就行,Class name包名点类名称点击Load会出现这个类下的所有方法名称,点击NextOutput location选择输出文件位置(具体位置根据具体而定),点击Finsh说明成功。
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超级实用教程
Axis2超级实用教程老鸟推荐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类中。
用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.
return translatorString;
}
练习
阅读WeatherWS-2.xml,调用服务的getWeatherbyCityName操作 阅读WeatherWS-1.xml ,调用服务的getWeather操作 阅读ValidateCodeWebService.xml,调用cnValidateByte操作
</TranslatorStringResult> </TranslatorStringResponse> </Body >
public class Translation { public static void main(String[] args) { try { ServiceClient client = new ServiceClient(); // 创建ServiceClient对象 // 创建Option对象,该对象包含服务的属性,如地址,soapAction,传输协议等 Options opts = new Options(); // 设置目标服务地址 opts.setTo(new EndpointReference( " /webservices/EnglishChinese.asmx")); // 设置操作的soapAction值 opts.setAction("/TranslatorString"); // 指定soap版本,默认是1.1,这里指定为1.2 opts.setSoapVersionURI(Constants.URI_SOAP12_ENV); client.setOptions(opts); // 为ServiceClient设置option // 发送请求并得到返回结果,请求和响应均是一个OMElement对象 OMElement res = client.sendReceive(createPayLoad()); //输出返回结果,如有进一步需求,只要对返回结果的xml做解析即可 System.out.println(res); } catch (AxisFault e) { e.printStackTrace(); } }
myeclipse10使用axis2开发webservice
1. 下载Axis2插件和部署环境Axis2官方网站:/axis2/java/core/index.html2. 为MyEclipse10安装Axis2开发插件,解压codegen-1.6.2.zip和service-1.6.2.zip,复制解压后的文件到MyEclipse10安装目录的dropins目录下,并新建一个记事本文件,命名为:axis2.link,写入内容:path=D:\\Program Files\\MyEclipse 10.1\\MyEclipse 10\\dropins。
重启MyEclipse10,即可看到Axis2插件已经安装成功3. 配置部署环境。
解压axis2-1.6.2-war.zip文件,把得到的axis2.war文件复制到Tomcat安装目录下的webapp文件夹下,并启动Tomcat。
在浏览器输入网址:http://localhost:8080/axis2/,看到如下界面,表示部署环境配置成功。
4. 开发webservice服务端。
新建web project(不能是java project)。
并添加com.server包,在包下建立两个类:DoubleArith.java和FloatArith.java,并写入以下内容。
生成Axis2服务端部署文件,DoubleArith.aar和FloatArith.aar。
先运行Axis2Server,使程序在classes文件夹下生成DoubleArith.class和FloatArith.class文件,因为这两个文件是生成aar 文件的必备文件这样就在D:\Run目录下生成DoubleArith.aar文件。
同理,可以生成FloatArith.aar。
把DoubleArith.aar和FloatArith.aar文件从D:\Run文件夹复制到Tomcat\webapp\axis2\WEB-INF\services目录下。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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;这么写是错误的。
b)设置CLASSPATH图1设置CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.j ar* 要加.表示当前路径c)设置path设置path=%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin2)tomcat环境配置a)设置CATALINA_HOMECATALINA_HOME=F:\apache-tomcat-6.0.30* F:\apache-tomcat-6.0.30为笔者本机的JDK安装目录,请开发者根据实际安装路径来填写。
b)测试Axis2服务包将axis2服务包(axis2.war)放入F:\apache-tomcat-6.0.30\webapps下点击F:\apache-tomcat-6.0.30\bin下的startup.bat文件在浏览器中输入http://localhost:8080/axis2/若出现图中所示页面,那么说明axis2的服务包已经发布成功了;在F:\apache-tomcat-6.0.30\webapps目录下会自动生成一个axis2文件夹,这个留待后面的说明中一并叙述,下面继续配置。
3)myeclipse环境配置a)配置axis2插件包将axis2插件包下的Axis2_Codegen_Wizard_1.3.0和Axis2_Service_Archiver_1.3.0文件夹拷贝至Myeclipse8.5\dropins 目录下点击File→New→Other若出现图中2个高亮显示的插件名,那么说明Axis2开发插件已经安装成功。
b)myeclipse下的tomcat配置点击Window→Preferences点击MyEclipse→Servers→Tomcat, 选择Configure Tomcat 6.x按照图中所示配置tomcat c)myeclipse下的jre配置点击Java InstalledJREs,点击Search按钮,选择D:\Program Files\Java\jdk1.6.0_10路径(开发者根据实际路径自己调整)如图中所示进行配置,点击OK4)Mysql数据配置a)数据库安装配置实例配置时,笔者选择的是服务器。
服务器字符集选择的是utf-8数据库连接设置为:用户名:root密码:123456b)测试数据库建立笔者采用的是可视化工具建库(mysql-workbench-gpl-5.2.37-win32)打开mysql-workbench点击图中标注的按钮,新建一个库新建库名为webservice新建student表,建表语句如下DROP TABLE IF EXISTS `student`;CREATE TABLE `student` (`id` int(11) NOT NULL AUTO_INCREMENT,双击左侧webservice库名,将其设为默认库,默认库的名字会加粗显示,如果不设置默认库,会影响下面的数据导入。
将建表语句复制进来,执行;数据导入成功。
三、正式开发1)服务端开发a)工程建立打开myeclipse点击New Web Project新建一个Web工程新建工程名为myservice,一直默认执行。
右键点击工程,右键菜单里选择Properties,将工程编码设置为UTF-8b)编写mysql数据库访问功能模块将mysql的连接驱动包(mysql-connector-java-5.1.7-bin.jar)拷贝至WebRoot\WEB-INF\lib下在src目录下新建一个database包,分别录入以下4个类,因为牵涉到jdbc封装类的开发,这里就不详细阐述,仅贴出源代码。
(一)C onnectionFactory.java (连接工厂类)package database;import java.sql.Connection;import java.sql.DriverManager;import java.util.ResourceBundle;/** 类名:ConnectionFactory<br>* 作用:产生数据库连接对象<br>* 属性:<br>* 方法:Connection getConnection()<br>* 作用:返回数据库连接对象<br>* 参数:无<br>* 返回:数据库连接对象<br>* 其它:返回的aConnection不会自动提交JDBC事务<br>* 创建人:陶尚明<br>* */public abstract class ConnectionFactory {/** 数据库系统的属性文件名:*/private static final String propertiesFileName = "using_which_dbms";/** 获取Connection对象** @return Connection对象* @throws Exception SqlException异常*/static synchronized public Connection getConnection() throws Exception {String dbSystem=null;Connection aConnection;ResourceBundle db = ResourceBundle.getBundle("dbsystem"); //读取配置文件dbSystem=db.getString(propertiesFileName);ResourceBundle rb = ResourceBundle.getBundle(dbSystem); //读取配置文件Class.forName(rb.getString("database.driver")).newInstance();aConnection =DriverManager.getConnection(rb.getString("database.url"),rb.getString(" ername"),rb.getString("database.password")); //创建aConnection对象aConnection.setAutoCommit(false); //设置不自动提交事务return aConnection; //返回aConnection对象}/** 当前使用的数据库系统名称** @param echoable 如果启用回显将在控制台输出描述当前数据库系统的信息* @return dbSystem 数据库系统名称*/public static String getCurrentDBMS(boolean echoable) {String dbSystem=null;ResourceBundle rb = ResourceBundle.getBundle("dbsystem"); //读取配置文件dbSystem=rb.getString(propertiesFileName);if (echoable)System.out.println("the database system what you using are "+dbSystem);return dbSystem;}}(二)I OperationCore.java(数据库操作接口)/*** 数据库常用操作封装*/package database;import java.sql.ResultSet;import java.sql.SQLException;import java.util.Collection;/** 类名:IOperationCore<br>** 作用: 该接口封装了数据库操作的大部分方法<br>** 创建人:陶尚明<br>*/public interface IOperationCore {/** sql更新语句** @param queryString 查询语句* @return 返回一个<code>ResultSet</code>结果集** @exception SQLException */ResultSet executeQuery(String queryString) throws SQLException; /*** sql更新语句** @param updateString 数据库更新语句* @return 更新数据库影响行数** @exception SQLException */int executeUpdate(String updateString) throws SQLException;/*** 读取行个数** @param queryString 查询语句* @return Transact-SQL 查询后的虚拟表的行数** @exception SQLException */int getRowCount(String queryString) throws SQLException;/*** 读取列数个数** @param queryString 查询语句* @return Transact-SQL 查询后的虚拟表的列数** @exception SQLException */int getColumnCount(String queryString) throws SQLException;/*** 读取列名** @param columIndex 列索引* @param queryString 提供ResultSet二维表的查询字符串* @return ResultSet表中的指定的列名** @exception SQLException */String getColumnName(int columIndex, String queryString) throws SQLException;/*** 读取queryString查询结果集<code>ResultSet</code>表中的所有列名** @param queryString 用于返回<code>ResultSet</code>结果集的语句* @return 表中的所有列名* @throws SQLException */Collection<String> getColumnNames(String queryString) throws SQLException;/*** 读取queryString查询结果集<code>ResultSet</code>表中的所有字段类型名称** @param queryString 用于返回查询结果集的语句* @return 表中的所有字段类型名称* @throws SQLException */Collection<?> getColumnTypeNames(String queryString) throws SQLException;/*** 获取ResultSet二维表中指定位置的值,目前只支持mysql** @param rowIndex 行索引* @param columnIndex 列索引* @param queryString 产生一个ResultSet结果集的查询语句* @return 指定位置的数据记录** @exception SQLException */Object getValueAt(int rowIndex, int columnIndex, String(三)O perationCoreImpl.java(数据库操作接口实现)* 作用: 该类实现IOperationCore接口的所有方法<br>** 创建人:陶尚明<br>**/public class OperationCoreImpl implements IOperationCore { protected Connection aConnection = null;protected Statement aStatement = null;protected ResultSet aResultSet = null;protected ResultSetMetaData rsmd = null;protected static OperationCoreImpl m_instance = null;/** Singleton 即单例(态)模式,用来生成对象唯一实例的方法** @return OperationCoreImplements的一个实例* @throws Exception */public static OperationCoreImpl createFactory() throws Exception { if(m_instance==null)m_instance=new OperationCoreImpl();return m_instance;}/** @exception Exception */private OperationCoreImpl() throws Exception { init();}/*** 负责初始化Connection连接* @throws Exception*/private void init() throws Exception{aConnection=ConnectionFactory.getConnection(); }/*** 释放系统连接资源*<br>一旦关闭,数据库的操作将全部无效*/public void dispose() {try {if(aResultSet!=null)aResultSet.close();} catch (SQLException e) {e.printStackTrace();}try {if(aStatement!=null)aStatement.close();} catch (SQLException e) {e.printStackTrace();}try {if(aConnection!=null)aConnection.close(); } catch (SQLException e) {e.printStackTrace();}}/** sql更新语句** @param queryString 查询语句* @return 返回一个<code>ResultSet</code>结果集** @exception SQLException */public ResultSet executeQuery(String queryString) {try {aStatement = aConnection.createStatement();aResultSet = aStatement.executeQuery(queryString);} catch (SQLException e) {aResultSet=null;e.printStackTrace();}return aResultSet;}/*** sql更新语句** @param updateString 数据库更新语句* @return 更新数据库影响行数** @exception SQLException */public int executeUpdate(String updateString) {int effectedRows=0;try{aConnection.setAutoCommit(false);aStatement = aConnection.createStatement();effectedRows =aStatement.executeUpdate(updateString);mit();}catch(SQLException ex){System.out.println("数据库写操作失败!");if(aConnection!=null){try {aConnection.rollback();System.out.println("JDBC事务回滚成功");} catch (SQLException e) {System.out.println("JDBC事务回滚失败");e.printStackTrace();}}}return effectedRows;}/*** 读取queryString查询结果集<code>ResultSet</code>表中的所有列名** @param queryString 用于返回<code>ResultSet</code>结果集的语句* @return 表中的所有列名* @throws SQLException */public Collection<String> getColumnNames(String queryString) {ArrayList<String> ColumnNames=new ArrayList<String>();try {aResultSet=executeQuery(queryString);ResultSetMetaData rsmd=aResultSet.getMetaData();int j=rsmd.getColumnCount();for(int k=0;k<j;k++){ColumnNames.add(rsmd.getColumnName(k+1));}} catch (SQLException e) {ColumnNames=null;e.printStackTrace();return ColumnNames;}/*** 读取queryString查询结果集<code>ResultSet</code>表中的所有字段类型名称** @param queryString 用于返回查询结果集的语句* @return 表中的所有字段类型名称* @throws SQLException */public Collection<String> getColumnTypeNames(String queryString) {ArrayList<String> ColumnNames=new ArrayList<String>();try {aResultSet=executeQuery(queryString);ResultSetMetaData rsmd=aResultSet.getMetaData();int j=rsmd.getColumnCount();for(int k=0;k<j;k++){ColumnNames.add(rsmd.getColumnTypeName(k+1));}} catch (SQLException e) {ColumnNames=null;e.printStackTrace();}return ColumnNames;}/*** 读取列名** @param columIndex 列索引* @param queryString 提供ResultSet二维表的查询字符串* @return ResultSet表中的指定的列名** @exception SQLException */public String getColumnName(int columIndex, String queryString) {String columnName=null;try {aResultSet=executeQuery(queryString);rsmd=aResultSet.getMetaData();columnName=rsmd.getColumnName(columIndex + 1);} catch (SQLException e) {e.printStackTrace();}return columnName;}/*** 读取列数个数** @param queryString 查询语句* @return Transact-SQL 查询后的虚拟表的列数** @exception SQLException */public int getColumnCount(String queryString) {int columnCount=0;try {aResultSet=executeQuery(queryString);ResultSetMetaData rsmd=aResultSet.getMetaData();columnCount = rsmd.getColumnCount();} catch (SQLException e) {e.printStackTrace();}return columnCount;}/*** 读取行个数** @param queryString 查询语句* @return Transact-SQL 查询后的虚拟表的行数** @exception SQLException */public int getRowCount(String queryString) { int rowCount=0;try {aResultSet=executeQuery(queryString);while(aResultSet.next())rowCount=aResultSet.getInt(1);} catch (SQLException e) {e.printStackTrace();}return rowCount;}/*** 获取ResultSet二维表中指定位置的值,目前只支持mysql** @param rowIndex 行索引* @param columnIndex 列索引* @param queryString 产生一个ResultSet结果集的查询语句* @return 指定位置的数据记录** @exception SQLException */public Object getValueAt(int rowIndex, int columnIndex, String queryString) {Object values=null;try {aResultSet=executeQuery(queryString);//指针下移一行aResultSet.absolute(rowIndex + 1);values=aResultSet.getObject(columnIndex + 1);} catch (SQLException e) {e.printStackTrace();}return values;}(四)D BOperationAdapter.java (对用户透明的数据库操作类)private static IOperationCore objIOperationCore = null; private static DBOperationAdapter m_instance = null;private DBOperationAdapter() {try {objIOperationCore=OperationCoreImpl.createFactory(); } catch (Exception e) {e.printStackTrace();}}public static DBOperationAdapter getInstance() {if(m_instance==null)m_instance=new DBOperationAdapter();return m_instance;}/** sql更新语句** @param queryString 查询语句* @return 返回一个<code>ResultSet</code>结果集*。