- 浏览: 53089 次
- 性别:
- 来自: 大连
最新评论
Axis实践之Axis入门
第一部分: 安装Axis
第一步: 下载Axis
从Apache网站下载Axis发布包:
http://ws.apache.org/axis/
我下载的是
Axis 1.4 Final 版
第二步: 解压Axis压缩包
把下载的axis-bin-1_4.zip包解压缩到一个文件夹,可以是任意的,但如果文件夹包含中文名时,在中间有些过程需要对中文进行一些处理,否则可能出错;
我把axis-bin-1_4.zip解压到 F:\AXIS_Study,解压后的目录结构是这样的:
F:\AXIS_Study
|
|____axis-bin-1_4
|
|-----docs (文件夹)
|
|-----lib (文件夹)
|
|-----samples (文件夹)
|
|-----webapps (文件夹)
|
|-----xmls (文件夹)
|
|-----LICENSE
|
|-----NOTICES
|
|-----README
|
|-----release-notes.html
第三步:准备Web Server
准备一个Web Server,基本上所有主流的Web Server都可以,为了节省资源,我使用Tomcat5.5.23来讲解这个例子,大家可以自行到Apache网站上下载该版本的Tomcat。
第四步: 配置Tomcat
进入Tomcat目录,在conf/Catalina/localhost目录下新建一个XML文件,命名为axis.xml,然后在文件中输入如下内容:
- <? xml version = "1.0" encoding = "gb2312" ?>
- <!--
- Axis学习工程
- -->
- < Context docBase = "F:/AXIS_Study/axis-bin-1_4/webapps/axis" >
- </ Context >
这个文件是用来在Tomcat中配置一个Web应用的,这不在本次课程的范围,大家可以自行找相关资料来看。注意在文件中
docBase="F:/AXIS_Study/axis-bin-1_4/webapps/axis"
是指向Axis解压目录下面的webapps/axis目录,大家根据自己的目录结构自行修改
第五步:启动Tomcat
进入到Tomcat安装目录下的bin目录,找到startup.bat并执行之,在启动过程中,控制台窗口应该会出现以下信息:
2008-5-15 14:45:55 org.apache.catalina.core.AprLifecycleListener lifecycleEvent
信
息: The Apache Tomcat Native library which allows optimal performance in
production environments was not found on the java.library.path:
D:\JAVATools\jdk1.5.0
_05\bin;.;C:\windows\system32;C:\windows;D:
\tools\系统\UnxUtils\bin;D:\tools\系统\UnxUtils\usr\local\wbin;D:\JAVATools
\jdk1.5.0_05\bin;C:\oracle92\bin;C:\Progra
m
Files\Oracle\jre\1.3.1\bin;C:\Program
Files\Oracle\jre\1.1.8\bin;C:\windows\system32;C:\windows;C:\windows
\System32\Wbem;D:\tools\系统;D:\JAVATools\ant-1.6.2\
bin
2008-5-15 14:45:55 org.apache.coyote.http11.Http11BaseProtocol init
信息: Initializing Coyote HTTP/1.1 on http-80
2008-5-15 14:45:55 org.apache.catalina.startup.Catalina load
信息: Initialization processed in 859 ms
2008-5-15 14:45:55 org.apache.catalina.core.StandardService start
信息: Starting service Catalina
2008-5-15 14:45:55 org.apache.catalina.core.StandardEngine start
信息: Starting Servlet Engine: Apache Tomcat/5.5.23
2008-5-15 14:45:55 org.apache.catalina.core.StandardHost start
信息: XML validation disabled
- Unable to find config file. Creating new servlet engine config file: /WEB-INF/server-config.wsdd
-
Unable to find required classes (javax.activation.DataHandler and
javax.mail.internet.MimeMultipart). Attachment support is disabled.
……
注意,最后面三行指示了Axis 的web app已经启动了,因为在我的Tomcat中发布的应用中,没有其他应用有使用Web Service,现在出现 .wsdd 文件,肯定就是Axis的应用启动了。
我们到
F:\AXIS_Study\axis-bin-1_4\webapps\axis\WEB-INF
目录下查看,发现系统自动生成了一个attachments目录,这与启动日志中的Attachment support is disabled.是对应的。
第六步:查看一下当前Axis中布署了哪些Web Service
打开浏览器,在地址栏输入:
http://localhost/axis/servlet/AxisServlet
浏览器显示结果:
And now... Some Services
AdminService (wsdl)
AdminService
Version (wsdl)
getVersion
这说明在Axis中已经布署了两个WebService,只不过这两个WebService都是Axis自带的,第一个是管理用的WebService,第二个是查看当前Axis版本信息的WebService。
大家可以点击相应的链接“wsdl”来看一下这两个WebService的 wsdl 文件。
结语:
至此,我们已经成功地把Axis 1.4 安装到Tomcat Web 服务器上了,接下来的目标是使用Axis来发布Web Service。
第二部分: 使用Axis发布Web Service
Axis提供两种方式将Java类发布成Web Services,这两种方式分别是:即时快速自动发布 和 通过配置文件进行发布,下面我们按顺序来讲如何使用这两种方式来发布WebService
即时快速自动发布:
第一步: 编写业务类
为了发布一个Web Service,首先必须要有业务类,为了节约时间,我写一个最简单的业务类:
- public class SayHello{
- private String name;
- public String hello(){
- return "Hello, axis Ver1.4 talking to you." ;
- }
- }
注意,采用快速自动发布的Web Service的业务类不能带 package,也不能实现任何接口(Interface),因为Axis自动发布时不支持Package。
第二步:把SayHello发布为Web Service
把SayHello.java复制到 axis目录下的webapps/axis目录下,然后把文件扩展名改为:jws
第三步:访问刚发布的Web Service
打开浏览器,在地址栏里输入:
http://localhost/axis/SayHello.jws
浏览器显示结果如下:
There is a Web Service here
Click to see the WSDL
这表示Web Service已经发布成功了。我们可以点击连接“Click to see the WSDL ”来看看生成的wsdl文件:
- <? xml version = "1.0" encoding = "UTF-8" ?>
- < wsdl:definitions targetNamespace = "http://localhost/axis/SayHello.jws" xmlns:apachesoap = "http://xml.apache.org/xml-soap" xmlns:impl = "http://localhost/axis/SayHello.jws" xmlns:intf = "http://localhost/axis/SayHello.jws" xmlns:soapenc = "http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl = "http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap = "http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd = "http://www.w3.org/2001/XMLSchema" >
- <!--WSDL created by Apache Axis version: 1.4
- Built on Apr 22, 2006 (06:55:48 PDT)-->
- < wsdl:message name = "helloResponse" >
- < wsdl:part name = "helloReturn" type = "xsd:string" />
- </ wsdl:message >
- < wsdl:message name = "helloRequest" >
- </ wsdl:message >
- < wsdl:portType name = "SayHello" >
- < wsdl:operation name = "hello" >
- < wsdl:input message = "impl:helloRequest" name = "helloRequest" />
- < wsdl:output message = "impl:helloResponse" name = "helloResponse" />
- </ wsdl:operation >
- </ wsdl:portType >
- < wsdl:binding name = "SayHelloSoapBinding" type = "impl:SayHello" >
- < wsdlsoap:binding style = "rpc" transport = "http://schemas.xmlsoap.org/soap/http" />
- < wsdl:operation name = "hello" >
- < wsdlsoap:operation soapAction = "" />
- < wsdl:input name = "helloRequest" >
- < wsdlsoap:body encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/" namespace = "http://DefaultNamespace" use = "encoded" />
- </ wsdl:input >
- < wsdl:output name = "helloResponse" >
- < wsdlsoap:body encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/" namespace = "http://localhost/axis/SayHello.jws" use = "encoded" />
- </ wsdl:output >
- </ wsdl:operation >
- </ wsdl:binding >
- < wsdl:service name = "SayHelloService" >
- < wsdl:port binding = "impl:SayHelloSoapBinding" name = "SayHello" >
- < wsdlsoap:address location = "http://localhost/axis/SayHello.jws" />
- </ wsdl:port >
- </ wsdl:service >
- </ wsdl:definitions >
这个文件结构跟我们以前用IDE生成的没什么两样。
我们再访问一下这个Web Service,看看结果对不对,在浏览器地址栏输入:
http://localhost/axis/SayHello.jws?method=hello
浏览器显示服务器返回的结果:
- <? xml version = "1.0" encoding = "UTF-8" ?>
- < soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd = "http://www.w3.org/2001/XMLSchema" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" >
- < soapenv:Body >
- < helloResponse soapenv:encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/" >
- < helloReturn xsi:type = "xsd:string" > Hello, axis Ver1.4 talking to you. </ helloReturn >
- </ helloResponse >
- </ soapenv:Body >
- </ soapenv:Envelope >
这里返回的是整个SOAP数据包
接头我们用Jbuilder来生成该Web Service的客户端代码:
打开Jbuilder,新建一个工程,然后增加Axis Web Service Client支持:
菜单: New --> Web Service(J2EE1.3) --> Axis Web Service Client Configuration
然后在Web Service设计器中选择“Import from URL”,其中的wsdl文件路径就输入“http://localhost/axis/SayHello.jws?wsdl”
Jbuilder
就自动帮我们生成了所有配置。然后再make这个web
service,这时候JBuilder自动生成了所需要的全部代码,还包括一个JUnit测试类
SayHelloServiceTestCase,为了能更直观地看到结果,我们再写一个自己的测试类:
- public class SayHelloTest {
- public void test(){
- SayHelloSoapBindingStub binding;
- try {
- binding = (SayHelloSoapBindingStub) new SayHelloServiceLocator().getSayHello(); //取接口
- binding.setTimeout(60000 ); //设置超时时间
- String helloMsg = binding.hello(); //调用hello方法
- System.out.println(">>>>>>>>>>>>>>>>服务器返回消息:" );
- System.out.println( helloMsg );
- System.out.println("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" );
- }catch (javax.xml.rpc.ServiceException ex) {
- if (ex.getLinkedCause() != null )
- ex.getLinkedCause().printStackTrace();
- System.out.println("JAX-RPC调用出错:" );
- ex.printStackTrace();
- } catch (RemoteException ex) {
- System.out.println("Web Service调用出错:" );
- ex.printStackTrace();
- }
- }
- public static void main(String[] args) {
- SayHelloTest sayhellotest = new SayHelloTest();
- sayhellotest.test();
- }
- }
编译,然后执行该类,得到输出结果是:
>>>>>>>>>>>>>>>>服务器返回消息:
Hello, axis Ver1.4 talking to you.
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
至此,我们通过Axis自动发布的Web Service成功了。
=======================
通过配置文件(WSDD)进行发布:
第一步:先写一个配置文件 server-config.wsdd
- <? xml version = "1.0" encoding = "UTF-8" ?>
- < deployment name = "defaultClientConfig"
- xmlns:java = "http://xml.apache.org/axis/wsdd/providers/java"
- xmlns:handler = "http://xml.apache.org/axis/wsdd/providers/handler" xmlns = "http://xml.apache.org/axis/wsdd/" >
- < globalConfiguration name = "defaultClientConfig" >
- < requestFlow name = "RequestFlow1" type = "" >
- < handler name = "Handler1" type = "java:org.apache.axis.handlers.JWSHandler" >
- < parameter name = "scope" value = "session" />
- </ handler >
- < handler name = "Handler2" type = "java:org.apache.axis.handlers.JWSHandler" >
- < parameter name = "scope" value = "request" />
- < parameter name = "extension" value = ".jwr" />
- </ handler >
- </ requestFlow >
- </ globalConfiguration >
- < handler name = "URLMapper" type = "java:org.apache.axis.handlers.http.URLMapper" />
- < handler name = "LocalResponder" type = "java:org.apache.axis.transport.local.LocalResponder" />
- < handler name = "Authenticate" type = "java:org.apache.axis.handlers.SimpleAuthenticationHandler" />
- < transport name = "http" type = "" >
- < requestFlow name = "RequestFlow1" type = "" >
- < handler name = "Handler1" type = "URLMapper" />
- < handler name = "Handler2" type = "java:org.apache.axis.handlers.http.HTTPAuthHandler" />
- </ requestFlow >
- </ transport >
- < transport name = "local" type = "" >
- < responseFlow name = "ResponseFlow1" type = "" >
- < handler name = "Handler1" type = "LocalResponder" />
- </ responseFlow >
- </ transport >
- <!--这里配置了一个Web Service,如果有多个Web Service,就按这种格式在下面增加即可-->
- < service name = "SayHello2" provider = "java:RPC" >
- < parameter name = "scope" value = "Request" />
- < parameter name = "className" value = "SayHello" />
- < parameter name = "allowedMethods" value = "*" />
- </ service >
- </ deployment >
需要注意的通过配置文件来发布Web Service时,业务类是可以有package的,这里为了利用上面的业务类,所以就没有package
然后把该配置文件放置到WEB-INF目录下。
第二步:编译业务类
把上面写的业务编译成class文件,放到WEB-INF/classes目录下
第三步:重启Tomcat
第四步: 查看新发布的Web Service
打开浏览器,地址栏里输入: http://localhost/axis/servlet/AxisServlet
浏览器返回的结果如下:
And now... Some Services
SayHello2 (wsdl)
hello
这表明我们的新Web Service发布成功了,我们可以进一步看一下wsdl文件:
- <? xml version = "1.0" encoding = "UTF-8" ?>
- < wsdl:definitions targetNamespace = "http://localhost/axis/services/SayHello2" xmlns:apachesoap = "http://xml.apache.org/xml-soap" xmlns:impl = "http://localhost/axis/services/SayHello2" xmlns:intf = "http://localhost/axis/services/SayHello2" xmlns:soapenc = "http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl = "http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap = "http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd = "http://www.w3.org/2001/XMLSchema" >
- <!--WSDL created by Apache Axis version: 1.4
- Built on Apr 22, 2006 (06:55:48 PDT)
- -->
- < wsdl:message name = "helloRequest" >
- </ wsdl:message >
- < wsdl:message name = "helloResponse" >
- < wsdl:part name = "helloReturn" type = "soapenc:string" />
- </ wsdl:message >
- < wsdl:portType name = "SayHello" >
- < wsdl:operation name = "hello" >
- < wsdl:input message = "impl:helloRequest" name = "helloRequest" />
- < wsdl:output message = "impl:helloResponse" name = "helloResponse" />
- </ wsdl:operation >
- </ wsdl:portType >
- < wsdl:binding name = "SayHello2SoapBinding" type = "impl:SayHello" >
- < wsdlsoap:binding style = "rpc" transport = "http://schemas.xmlsoap.org/soap/http" />
- < wsdl:operation name = "hello" >
- < wsdlsoap:operation soapAction = "" />
- < wsdl:input name = "helloRequest" >
- < wsdlsoap:body encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/" namespace = "http://DefaultNamespace" use = "encoded" />
- </ wsdl:input >
- < wsdl:output name = "helloResponse" >
- < wsdlsoap:body encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/" namespace = "http://localhost/axis/services/SayHello2" use = "encoded" />
- </ wsdl:output >
- </ wsdl:operation >
- </ wsdl:binding >
- < wsdl:service name = "SayHelloService" >
- < wsdl:port binding = "impl:SayHello2SoapBinding" name = "SayHello2" >
- < wsdlsoap:address location = "http://localhost/axis/services/SayHello2" />
- </ wsdl:port >
- </ wsdl:service >
- </ wsdl:definitions >
第五步:写测试客户端
在Jbuilder中,刚才的工程里增加一个Web Service客户端,还是在Web
Service设计器中选择“Import from
URL”,其中的wsdl文件路径就输入“http://localhost/axis/services/SayHello2?wsdl”,然后
make这个web service module。同样的,我们也再写一个自己的测试类:
- public class SayHello2Test {
- public void test(){
- SayHello2SoapBindingStub binding;
- try {
- binding = (SayHello2SoapBindingStub) new SayHello2ServiceLocator().getSayHello(); //取接口
- binding.setTimeout(60000 ); //设置超时时间
- String helloMsg = binding.hello(); //调用hello方法
- System.out.println(">>>>>>>>>>>>>>>>服务器返回消息:" );
- System.out.println( helloMsg );
- System.out.println("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" );
- }catch (javax.xml.rpc.ServiceException ex) {
- if (ex.getLinkedCause() != null )
- ex.getLinkedCause().printStackTrace();
- System.out.println("JAX-RPC调用出错:" );
- ex.printStackTrace();
- } catch (RemoteException ex) {
- System.out.println("Web Service调用出错:" );
- ex.printStackTrace();
- }
- }
- public static void main(String[] args) {
- SayHello2Test sayhellotest = new SayHello2Test();
- sayhellotest.test();
- }
- }
运行这个测试类,得到的输出结果是:
>>>>>>>>>>>>>>>>服务器返回消息:
你好,现在是 axis Ver1.4 在与你对话。
相关推荐
总的来说,【Axis入门中文文档】是学习和实践Web服务开发的重要参考资料,涵盖了从基础概念到高级应用的全面内容,对于理解和掌握Web服务技术具有极大的帮助。通过深入学习和实践,开发者可以更加熟练地运用Axis构建...
【AXIS入门指南-webservice】 本指南旨在为初学者提供AXIS框架下开发WebService的详细步骤,涵盖了从获取开发资源、生成 stub、编写服务器端代码到客户端测试的全过程。AXIS是一个开源的Java库,它提供了创建、部署...
通过本教程的学习,学员将全面掌握Axis2的关键技术和应用场景,同时通过实际项目的实践,提升其在不同技术栈下整合和使用Axis2的能力,体验到Java与.NET技术结合带来的优势。此外,课程还提供了完善的教学资源,包括...
标题 "axis 开发webservice经典入门例子" 指向的是使用Apache Axis工具来创建和使用Web服务的基本教程。Apache Axis是开源的Java框架,它允许开发者轻松地在Java应用程序中构建和部署Web服务。本教程可能是为了帮助...
这篇“AXIS 入门测试”可能是一篇介绍如何使用 AXIS 进行 Web 服务开发的博客文章,虽然描述部分没有提供具体信息,但我们可以从标签“源码”和“工具”推断出内容可能涉及编程代码和实际操作。 1. **Web 服务基础*...
【 Axis2 创建 Web Service 入门教程】 Apache Axis2 是一个功能强大的 Web Service 开发框架,它提供了简单、高效的方法来构建和部署 Web Services。本教程将详细介绍如何使用 Axis2 创建 Web Services,从基础...
5. **Axis1入门**:虽然本压缩包主要关注Axis2,但包含的Axis1入门文档也值得一提。Axis1是Axis2的前身,虽然功能相对较弱,但在某些场景下仍被使用。了解Axis1的基本操作有助于对比理解Axis2的改进和优势。 6. **...
**标题:“Axis2入门实例”** 在IT领域,特别是Web服务开发中,Apache Axis2是一个广泛应用的SOAP(简单对象访问协议)...通过深入研究提供的源代码和实践操作,你可以掌握使用Axis2构建和使用Web服务的基本技能。
二、Axis入门 1. 安装与配置:首先,你需要下载并安装Axis,这通常是一个包含所有必要组件的JAR文件集合。配置Axis通常涉及到将其添加到你的Java项目类路径中。 2. 创建服务:使用Axis,你可以通过Java类快速创建...
**WebService之Axis2介绍与入门** 在Web服务领域,Axis2是Apache软件基金会开发的一个开源Web服务框架,它是Axis1.x的升级版本,提供了一种更高效、更灵活的方式来创建和部署Web服务。本篇文章将深入探讨Axis2的...
【Axis2入门教程】是针对想要学习和了解Axis2这一Web服务引擎的基础教程,特别适合初学者。Axis2是广泛使用的Web服务引擎,它在服务导向架构(SOA)中扮演着重要角色,用于发布和调用服务端的Java方法,促进了不同...
AXIS Web Service是一种基于Java的开源工具,用于创建和部署Web服务。它是Apache软件基金会的项目,主要用于简化SOAP(简单对象访问协议...深入学习和实践,你将能够充分利用AXIS的优势,构建高效、可靠的Web服务应用。
【Axis2实用教程入门概述】 Axis2是Apache软件基金会开发的一款强大的WebService引擎,它在WebService技术领域具有广泛的应用。作为一款先进的服务发布和消费平台,Axis2提供了丰富的功能,包括支持SOAP1.1和SOAP...
【WebService大讲堂之Axis2】是针对 Axis2 这个强大的 WebService 框架进行的入门介绍。Axis2 是 Apache 软件基金会开发的 WebService 引擎,它是在 Axis1.x 基础上的重设计,提供对 SOAP1.1 和 SOAP1.2 的支持,...
本入门教程将帮助你理解如何使用AXIS2来创建、发布和调用SOAP Web服务。首先,你需要了解AXIS2的架构,它主要由以下几个部分组成: 1. **Service Archive (AAR)**:这是AXIS2中服务的打包格式,类似于Java的JAR文件...
1. 模块化设计:Axis2的核心特性之一是其模块化的架构,它允许开发者按需选择组件,提高灵活性和可扩展性。模块可以是处理特定任务的服务引擎,如SOAP 1.1或1.2引擎,也可以是数据绑定、传输层等其他功能模块。 2. ...
通过深入学习和实践Axis中文文档,开发者可以有效地利用这个强大的工具来创建、部署和使用Web服务,实现跨平台、跨语言的系统集成。无论是初学者还是经验丰富的开发人员,都应该掌握这些核心知识点,以便在实际工作...
### 使用Axis1开发Web Services入门知识点详解 #### 一、实验背景与目标 在学习如何使用Axis1开发Web Services之前,我们首先需要了解几个基本概念:Web Services是一种平台独立的服务形式,它允许不同应用程序...