`
zhhxxx
  • 浏览: 30359 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

WebService Axis 快速开发

阅读更多
WebService Axis 快速开发

一、开发环境
  •Myeclipse8.0
  •Tomcat6.0
  •Axis1.4
  •Jdk1.6
Axis下载:
  Google:”Axis”,很容易找到Apache Axis的链接地址:http://ws.apache.org/axis/,下载最新的1.4Final。
(好了准备工作做好了,现在我们来开发WebService!)

二、用Java 开发 WebService Axis简单实例
Axis支持三种WebService 的部署和开发,分别为:
    1、Dynamic Invocation Interface(DII)方式
    2、Dynamic Proxy方式
    3、Stubs方式
Stubs方式是最通用的做法,又因其灵活的特点,所以我建议使用这种方式。下面,我主要讲述这种方式的开发。
1)创建Web工程
    1、在Myeclipse上创建web工程,名为Test;
    2、将jar包拷贝到WEB-INF/lib目录下;
2)编写wsdd发布web服务
    1、在src目录下创建服务端程序HelloDateServer.java,包名为:
src/mypackage.server/HelloDateServer.java

package mypackage.server;
	
import java.util.Date;
	
//WebService服务端类
public class HelloDateServer {
   /**
    * 服务方法
     * @param yourName
    * @return
    */
    public String helloDate(String yourName){
        String rtStr = "Hello ,"+yourName+" ,it's: " + new Date();
        return rtStr;
    }

    //Add method here......

}


在Tomact环境发布一个WebService 只需要写两个配置文件:
web.xml 、 server-config.wsdd
web.xml文件是用来声明Webserver的,即声明server-config.wsdd文件(我个人的理解)。
server-config.wsdd是Web服务的发布配置文件

web.xml文件很容易配置,拷贝axis包里面的WebService示例的web.xml配置到我们的工程中的web.xml中就可以了。


WEB-INF/web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  
  	<!-- =============== Axis Webservice =============-->
	<servlet>
		<servlet-name>AxisServlet</servlet-name>
		<servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
	</servlet>
	<servlet>
		<servlet-name>AdminServlet</servlet-name>
		<servlet-class>org.apache.axis.transport.http.AdminServlet</servlet-class>
		<load-on-startup>100</load-on-startup>
	</servlet>
	<servlet>
		<servlet-name>SOAPMonitorService</servlet-name>
		<servlet-class>org.apache.axis.monitor.SOAPMonitorService</servlet-class>
		<init-param>
			<param-name>SOAPMonitorPort</param-name>
			<param-value>5001</param-value>
		</init-param>
		<load-on-startup>100</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>AxisServlet</servlet-name>
		<url-pattern>/servlet/AxisServlet</url-pattern>
	</servlet-mapping>
	<servlet-mapping>
		<servlet-name>AxisServlet</servlet-name>
		<url-pattern>*.jws</url-pattern>
	</servlet-mapping>
	<servlet-mapping>
		<servlet-name>AxisServlet</servlet-name>
		<url-pattern>/services/*</url-pattern>
	</servlet-mapping>
	<servlet-mapping>
		<servlet-name>SOAPMonitorService</servlet-name>
		<url-pattern>/SOAPMonitor</url-pattern>
	</servlet-mapping>
	<mime-mapping>
		<extension>wsdl</extension>
		<mime-type>text/xml</mime-type>
	</mime-mapping>
	<mime-mapping>
		<extension>xsd</extension>
		<mime-type>text/xml</mime-type>
	</mime-mapping>
  
</web-app>


server-config.wsdd 文件是WebService的核心配置文件。Web服务能否发布,很大程度上取决于次文件的配置。可以说有了此文件,就有了Web服务。
有两种方式可以配置此文件:
   1、手写;
    2、用Axis工具生成。
我采用Axis工具生成(偷懒是其次,主要原因是不容易出错,也很容易开发)
用Axis的工具,我们必须为Axis搭建一个环境,因为刚才我们下载下来的都是jar包,在windows下要想应用这下jar包,必须将其添加到系统的CLASSPATH中。否则系统无法找到这些功能。

将所有的jar包都添加到CLASSPATH;
创建环境变量,设置AXIS的环境变量.


变量名:AXIS_LIB
变量值:C:\axis-1_4\lib[color=red](我是直接将下载下来的包解压到C盘)[/color]
将以下变量值加入CLASSPATH
%AXIS_LIB%\axis.jar;
%AXIS_LIB%\axis-ant.jar;
%AXIS_LIB%\commons-discovery-0.2.jar;
%AXIS_LIB%\commons-logging-1.0.4.jar;
%AXIS_LIB%\jaxrpc.jar;
%AXIS_LIB%\log4j-1.2.8.jar;
%AXIS_LIB%\saaj.jar;
%AXIS_LIB%\wsdl4j-1.5.1.jar;


编写deploy.wsdd文件
在任意路径下创建。我是在myeclipse工程中WEB-INF下创建的。部署时便于生成server-config.wsdd同时也便于工程修改时,修改此文件。

<deployment xmlns="http://xml.apache.org/axis/wsdd/"
	xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
	<!-- 这里的stubs为wsdd描述符中的ServiceNamespace  -->
	<service name="stubs" provider="java:RPC">
		<!-- 这里的ClassName就是我的服务类了,
		这个服务主要功能就是传递一个自定义的对象  -->
		<parameter name="className" alue="mypackage.server.HelloDateServer " />
		<!-- 这里描术的意思是,此服务类中的方法全部享出来. value值为*号
		如果你只想让你的客户端只能调用其中一个方法时,value值改为方法名就可以了. -->
		<parameter name="allowedMethods" value="*" />
	</service>
</deployment>

(简单吧!)
接下来就是生成server-config.wsdd文件!
生成server-config.wsdd配置文件
第一步:用Myeclipse部署Test工程并运行Tomcat


第二步:(关键的一步)打开命令与提示符,进入Test工程目录的WebRoot/WEB-INF目录下。
C:\>cd C:\apache-tomcat-6.0.20\webapps\Test\WEB-INF (我的Tomcat直接解压到c盘)
>java org.apache.axis.client.AdminClient –l http://localhost:8080/Test/services/stubs deploy.wsdd (这句话就是生成server-config.wsdd文件的命令,记住,保持Tomact是运行的,不然会报错!)
运行结果:
- Unable to find required classes (javax.activation.DataHandler and javax.mail.i
nternet.MimeMultipart). Attachment support is disabled.
Processing file deploy.wsdd
<Admin>Done processing</Admin>

(Activation.jar 和 mail.jar这两个包我们没有加入到CLASSPATH中,但是不影响我们的开发。)在此路径下就生成了server-config.wsdd文件了。(哈,这就是我们想要的文件)
将其拷贝到我们的eclipse工程中,以便我们以后部署。
好了大功告成!WebService发布了。重启Tomcat
我们来测试一下,发布是否成功。
Myeclipse给我们提供了Soap工具。打开SOAP Web Services Explorer

然后点击WSDL Page

点击WSDL Main
输入URL:http://localhost:8080/Test/services/stubs?wsdl
接下来就可以测试了! 我按照刚刚写的代码,没有问题。

3)生成客户端client stub文件打开浏览器,输入http://localhost:8080/Test/services/stubs?wsdl点击文件->另存为。存到任何目录。我是存在C:\apache-tomcat-6.0.20\webapps\Test\WEB-INF 这样,我的命令提示符就不用换路径了。

stubs.xml重命名为stubs.wsdl

在命令提示符输入如下命令:
java org.apache.axis.wsdl.WSDL2Java –o ./ -p mypackage.client stubs.wsdl
解释一下此命令:
java org.apache.axis.wsdl.WSDL2Java –o %Output_Path% -p %Package% stubs.wsdl

%Output_Path%是客户端文件输出路径,%Package%是包名。

将生成的client文件拷贝到myeclipse中。



接下来,在mypackage.client中添加客户端测试代码。

src/mypackage/StubsClient.java

package mypackage.client;

import java.net.URL;

public class StubsClient {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 定义的service和stub
		HelloDateServerService service = null;
		HelloDateServer stub = null;
		try {
			System.out.println("connect......");
			String StrPortAddress = "http://localhost:8080/Test/services/stubs";
			URL portAddress = new URL(StrPortAddress);
			// 得到客户端服务
			service = new HelloDateServerServiceLocator();
			// 得到客户端stub
			stub = service.getstubs(portAddress);
			// 测试服务方法
			String resultStr = stub.helloDate("Google");
			System.out.println(resultStr);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			System.out.println("End.");
		}
	}
}


现在所有的都做完了。试试看吧。一定成功!

用Axis发布Web服务就这么简单。
我这个简单的Web服务的服务类方法的参数是简单的String类型。如果你的工程要求服务类方法传递自定义参数比如UserInfo等等,就需要你研究一下怎么传递自定义类型参数。其实也不难。可以参考http://blog.csdn.net/kay5804/archive/2008/05/04/2382428.aspx。这个人写的很不错!

刚打球回来,又做电脑旁边这么久,脖子疼,感觉自己得颈椎病了。

我要讲的就这么多,旨在,帮助大家快速入手Web Service。如果有什么问题,可以给我留言,有什么错误请指出。谢谢!
  • 大小: 15.7 KB
  • 大小: 31.4 KB
  • 大小: 2.9 KB
  • 大小: 2.3 KB
  • 大小: 18.1 KB
分享到:
评论
5 楼 hubowei1 2012-06-04  
C:\Tomcat 5.5\webapps\StateWorkSend\WEB-INF>java org.apache.axis.client.AdminCli
ent –l http://localhost:8080/StateWorkSend/services/StateWorkSendStu deploy.wsd
d
Processing file –l
Exception: –l (系统找不到指定的文件。)

我也出现这个错呢
麻烦帮我看哈哦,或者加我qq:398193056交流哈,很急哦。谢谢哦
4 楼 qiudan 2012-05-15  
我怎么报错了哦
C:\Tomcat 5.5\webapps\StateWorkSend\WEB-INF>java org.apache.axis.client.AdminCli
ent –l http://localhost:8080/StateWorkSend/services/StateWorkSendStu deploy.wsd
d
Processing file –l
Exception: –l (系统找不到指定的文件。)

麻烦帮我看哈哦,或者加我qq:26657918交流哈,很急哦。谢谢哦
3 楼 ycq__110 2012-04-29  
故意的吧,你代码里面的某些字符被恶意篡改了,害人啊。
2 楼 Java_Fan 2012-02-10  
你好,我按着你的做法
生成server-congig.wsdd的时候

在命令行如入命令,出现以下问题:

C:\Documents and Settings\hsy>cd X:\dev_env\server\tomcat-5.0.28\webapps\test\WE
B-INF

C:\Documents and Settings\hsy>java org.apache.axis.client.AdminClient –l http:/
/localhost:8080/test/services/stubs deploy.wsdd
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/axis/clien
t/AdminClient

C:\Documents and Settings\hsy>java org.apache.axis.client.AdminClient –lhttp://
localhost:8080/test/services/stubs deploy.wsdd
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/axis/clien
t/AdminClient

请问这是怎么回事?环境变量也配置了
1 楼 kissme 2010-10-15  
写的很好,辛苦了。

相关推荐

    WebService Axis 搭建开发

    在使用Axis开发Web服务时,有三种主要的方法: 1. **Dynamic Invocation Interface (DII)方式** - 动态调用接口,允许直接调用Web服务方法。 2. **Dynamic Proxy方式** - 动态代理,通过代理对象调用Web服务。 3. **...

    WebService Axis初学者

    总结:了解和掌握WebService Axis,对于Java开发者来说至关重要,因为它能帮助你在项目中快速实现服务化,提高代码复用性和系统扩展性。通过学习和实践,你将能够自如地创建、部署和调用SOAP Web服务,进一步提升你...

    webservice axis开发示例

    本示例将围绕“webservice axis开发”展开,详细介绍如何利用Apache Axis进行Web服务开发。 标题中的“webservice axis开发示例”是指使用Apache Axis框架创建和使用Web服务的实践案例。Apache Axis提供了一套工具...

    SpringBoot开发WebService之Axis示例

    总的来说,SpringBoot和Axis的结合为Java开发者提供了一种快速开发Web服务的方法。通过理解这两个工具的核心功能以及如何将它们集成在一起,我们可以更好地利用它们的特性来满足项目需求,同时享受到SpringBoot带来...

    webservice axis1.4 开发资料

    2. **开发指南**:《Axis1.4开发指南》是理解Axis1.4的入门资料,通常会涵盖安装配置、创建服务、发布服务、调用服务等步骤,还会讲解如何处理各种错误和异常,以及如何调试Web服务。 3. **jar包**:在开发过程中,...

    eclipse axis webservice 开发

    eclipse axis webservice 开发 eclipse下使用axis2 开发webservice系统

    基于axis2实现的webservice简单实现(客户端+服务端)。

    Apache Axis2是Apache软件基金会开发的一个Web服务引擎,它提供了高效且灵活的Web服务解决方案。 **Web服务**是一种在互联网上不同系统间交换数据的方式,它允许应用程序之间通过标准协议进行通信。Web服务通常使用...

    axis2开发webservice(二)

    资源包含了:axis2-1.7.4-bin.zip、axis2-1.7.4-war.zip、axis2-eclipse-...备注:资源超过了70M 分成了3部分 见axis2方式开发webservice(一)和 axis2方式开发webservice(二)、 axis2方式开发webservice(三)

    用Java 开发 WebService Axis简单实例

    在开发之前, 先了解一下AXIS,axis目前出现的2版本以其灵活性,快速开发工具的集成高于xfire而使用者居其上.用Eclipse开发,一开始就会想到xfire,它是集成与Eclipse的.所以 开发起来非常方便,现在我们来看看axis的开发...

    Webservice接口快速开发指导

    - WebService开发组件是实现Web Service接口的关键工具。常见的有Axis2、XFire和Apache CXF等。 - Axis2是Apache软件基金会的下一代Web Service引擎,提供了高性能、模块化和易用的特性,支持SOAP 1.1/1.2、WS-*...

    axis webservice开发所需jar包

    总的来说,这个资源集合对那些想要使用Apache Axis开发Web服务的Java开发者来说非常宝贵。通过理解和掌握这些jar包的作用,开发者可以更高效地构建、调试和维护Web服务,从而提升开发效率和应用的互操作性。

    java axis webservice 开发实例

    Java Axis WebService 开发实例详解 在Java世界中,开发Web服务时,Axis是一个非常流行的开源工具,它允许开发者创建、部署和使用Web服务。本实例将深入探讨如何使用Axis来构建一个简单的Web服务,并进行调用。这个...

    axis2发布webservice和调用axis2服务接口

    1. **创建WebService**:在Axis2中,可以通过编写一个简单的Java类并暴露其方法作为Web服务接口。这个类通常会遵循SOAP协议,定义服务操作。例如,你可以创建一个名为`HelloWorldService`的类,包含一个`sayHello`...

    axis2开发webservice

    标题 "Axis2 开发 WebService" 指的是使用 Apache Axis2 框架在 Eclipse 集成开发环境中创建和部署 WebService 的过程。Apache Axis2 是一个强大的 WebService 引擎,它提供了高性能、灵活且可扩展的架构,支持多种...

    webService axis2 demo

    Web服务的核心技术之一是Axis2,它是Apache软件基金会开发的一个强大的Web服务引擎,用于处理SOAP(简单对象访问协议)消息。本示例项目“webService axis2 demo”旨在展示如何使用Axis2来创建、部署和调用Web服务。...

    Axis2开发webservice总结

    Axis2开发webservice总结,资源一般,希望对大家有用

    Axis实现webservice完整实例

    Axis 是 Apache 组织开发的 Java WebService 工具包,它简化了 WebService 的开发过程。Axis 支持 SOAP 1.1 和 1.2,以及 WSDL 1.1 标准,允许开发者快速创建服务端和客户端代码。 ### 3. Axis 服务端实现 - **...

    axis2+spring webservice

    标题中的“axis2+spring webservice”指的是使用Apache Axis2框架与Spring框架集成来开发Web服务。Apache Axis2是Java环境中广泛使用的Web服务引擎,它提供了高性能、灵活且可扩展的架构。Spring框架则是一个全面的...

    WebService axis1.4接口服务序列/反序列复杂项目实例

    在这个"WebService Axis1.4接口服务序列/反序列复杂项目实例"中,我们将深入探讨如何在 Axis1.4 中处理复杂的参数、自定义实体对象的序列化与反序列化,以及客户端的复杂调用。 首先,让我们理解序列化和反序列化的...

Global site tag (gtag.js) - Google Analytics