Axis支持三种web service的部署和开发
2009-03-09 16:24
399 查看
WebService更多是一种标准,而不是一种具体的技术。不同的平台,不同的语言大都提供WebService的开发实现。在Java领域,WebService的一个成熟实现是Axis。
q Axis是Apache的一个开源WebService引擎,它是目前最为成熟的开源WebService引擎之一。
q Apache Axis是符合W3C的SOAP协议的实现。
q 该项目是属于Apache SOAP协议的子项目。
14.6.1.1 Axis的下载
登陆http://www.apache.org/dyn/closer.cgi/ws/axis/1_4站点,Axis的最新版本是1.4,笔者的示例程序都是基于该版本完成。下载到axis-bin-1_4.zip文件,解压缩该文件,发现如下的文件结构:
q docs:存放Axis的说明文档。
q lib:存放Axis的二进制发布包。
q samples:存放利用Axis发布WebService的示例代码。
q webapps:存放安装Axis的基础应用。
q xmls:存放相关配置文档。
q 还有LICENSE等相关说明文档。
14.6.1.2 Axis的安装
安装Axis,首先必须保证系统已经正确安装了Web服务器,笔者使用Tomcat5.0.28。也可使用其他应用服务器,例如WebLogic。webapps下的axis路径全部复制到Tomcat的webapps路径下。然后打开浏览器,输入:http://localhost:8888/axis/。
如果出现如图14.3所示界面表示Axis的基本类库已经安装成功,地址中的8888是笔者的Tomcat的端口。单击如图14.3所示页面的左上方“Validation”链接,出现如图14.4所示界面:
图14.3 Axis安装成功界面 图14.4 Axis校验界面
该页面显示Axis的必需组件还缺少一个没有安装,两个可选组件也没有安装,单击上面的提示链接,分别登陆:
q http://java.sun.com/products/javabeans/glasgow/jaf.html
q http://java.sun.com/products/javamail/
q http://xml.apache.org/security/
依次下载如下三个压缩文件:
q jaf-1_1-fr.zip 下载: https://sdlc1a.sun.com/ECom/EComActionServlet;jsessionid=A45E3E2265BF823B4399BB95F59DD152
q javamail-1_4.zip 下载:
https://sdlc1a.sun.com/ECom/EComActionServlet;jsessionid=503F19F1D96612179D16E4CC7436893F
q xml-security-bin-1_2_1.zip 下载: http://xml.apache.org/security/dist/java-library/
将这三个压缩文件解压缩。
将jaf-1_1-fr.zip压缩包中的activation.jar文件,复制到axis应用的WEB-INF"lib下;
将javamail-1_4.zip压缩包中的mail.jar文件,复制到axis应用的WEB-INF/lib下;
再将xml-security-bin-1_2_1.zip的lib下xmlsec-1.2.1.jar和xalan.jar文件,复制到WEB-INF/lib下。再次校验Axis,看到页面提示全部安装成功。
Axis支持三种web service的部署和开发,分别为:
1、Dynamic Invocation Interface ( DII)
2、Dynamic Proxy方式
3、Stubs方式
[align=left]Dynamic Invocation Interface ( DII)开发方式[/align]
对于前两种Web Service的发布基本一样,客户端的访问也很类似,第一种发布就是直接将.java后缀改为.jws,并将生成的.class文件拷贝到WEB- INF/jwsclasses下面,非常简单,但它也有缺陷,就是不适合程序部署和大型项目开发,而且不支持包(package)的形式.
1. 在Eclipse里新建一个Tomcat Project取名为AxisTest ,将axis-1_4"webapps"axis中几个必须的文件拷贝到你的AxisTest工程文件下,一个是WEB-INF"lib下的所有文件及 mail.jar,activation.jar,xmlsec-1.4.1.jar,xalan.jar,一个是WEB-INF下面的web.xml文件,我们来简单看一下web.xml这个文件
<servlet>
<servlet-name>AxisServlet</servlet-name>
<display-name>Apache-Axis Servlet</display-name>
<servlet-class>
org.apache.axis.transport.http.AxisServlet
</servlet-class>
</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/AxisServlet、*.jws、/services/*这几种映射会引起调用AxisServlet这个类,我们要用的就这几行,其他的可以直接删掉。
2.在WEB-INF/src下面新建一个myService.java文件,如下
public class myService {
public String getusername(String name){
return "Hello "+name+",this is an Axis DII Web Service";
}
}
注意这个java文件是不属于任何package的,如果你要将其放入某个package那么Axis会提示你找不到它生成的class文件从而不能将其转换为wsdl文件。
将myService.java拷贝到AxisTest根目录下,将其后缀改为jws。
启动Tomcat输入http://localhost:8080/AxisTest/myService.jws,
[align=left]3.点击Click to see the WSDL,这时候你会在WEB-INF下面看到Axis会自动生成一个jwsClasses文件夹,jwsClasses下面会有一个myService.class文件[/align]
4.客户端
com.axistest包下新建一个myServiceTestorByjws.java,选中public static void main(),
代码如下:
package com.client;
import java.net.MalformedURLException;
import java.rmi.RemoteException;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.ServiceException;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
public class MyServiceClient {
public static void main(String[] args) throws ServiceException, MalformedURLException, RemoteException {
String endpoint="http://localhost:8080/AxisTest/MyService.jws";
String name=" 张三";
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(endpoint));
call.addParameter("param1",XMLType.XSD_STRING,ParameterMode.IN);
call.setOperationName( "sayHello" );
call.setReturnType( XMLType.XSD_STRING );
String ret = (String) call.invoke( new Object[] { name } );
System.out.println("返回结果:" + ret);
}
[align=left]}[/align]
q Axis是Apache的一个开源WebService引擎,它是目前最为成熟的开源WebService引擎之一。
q Apache Axis是符合W3C的SOAP协议的实现。
q 该项目是属于Apache SOAP协议的子项目。
14.6.1.1 Axis的下载
登陆http://www.apache.org/dyn/closer.cgi/ws/axis/1_4站点,Axis的最新版本是1.4,笔者的示例程序都是基于该版本完成。下载到axis-bin-1_4.zip文件,解压缩该文件,发现如下的文件结构:
q docs:存放Axis的说明文档。
q lib:存放Axis的二进制发布包。
q samples:存放利用Axis发布WebService的示例代码。
q webapps:存放安装Axis的基础应用。
q xmls:存放相关配置文档。
q 还有LICENSE等相关说明文档。
14.6.1.2 Axis的安装
安装Axis,首先必须保证系统已经正确安装了Web服务器,笔者使用Tomcat5.0.28。也可使用其他应用服务器,例如WebLogic。webapps下的axis路径全部复制到Tomcat的webapps路径下。然后打开浏览器,输入:http://localhost:8888/axis/。
如果出现如图14.3所示界面表示Axis的基本类库已经安装成功,地址中的8888是笔者的Tomcat的端口。单击如图14.3所示页面的左上方“Validation”链接,出现如图14.4所示界面:
图14.3 Axis安装成功界面 图14.4 Axis校验界面
该页面显示Axis的必需组件还缺少一个没有安装,两个可选组件也没有安装,单击上面的提示链接,分别登陆:
q http://java.sun.com/products/javabeans/glasgow/jaf.html
q http://java.sun.com/products/javamail/
q http://xml.apache.org/security/
依次下载如下三个压缩文件:
q jaf-1_1-fr.zip 下载: https://sdlc1a.sun.com/ECom/EComActionServlet;jsessionid=A45E3E2265BF823B4399BB95F59DD152
q javamail-1_4.zip 下载:
https://sdlc1a.sun.com/ECom/EComActionServlet;jsessionid=503F19F1D96612179D16E4CC7436893F
q xml-security-bin-1_2_1.zip 下载: http://xml.apache.org/security/dist/java-library/
将这三个压缩文件解压缩。
将jaf-1_1-fr.zip压缩包中的activation.jar文件,复制到axis应用的WEB-INF"lib下;
将javamail-1_4.zip压缩包中的mail.jar文件,复制到axis应用的WEB-INF/lib下;
再将xml-security-bin-1_2_1.zip的lib下xmlsec-1.2.1.jar和xalan.jar文件,复制到WEB-INF/lib下。再次校验Axis,看到页面提示全部安装成功。
Axis支持三种web service的部署和开发,分别为:
1、Dynamic Invocation Interface ( DII)
2、Dynamic Proxy方式
3、Stubs方式
[align=left]Dynamic Invocation Interface ( DII)开发方式[/align]
对于前两种Web Service的发布基本一样,客户端的访问也很类似,第一种发布就是直接将.java后缀改为.jws,并将生成的.class文件拷贝到WEB- INF/jwsclasses下面,非常简单,但它也有缺陷,就是不适合程序部署和大型项目开发,而且不支持包(package)的形式.
1. 在Eclipse里新建一个Tomcat Project取名为AxisTest ,将axis-1_4"webapps"axis中几个必须的文件拷贝到你的AxisTest工程文件下,一个是WEB-INF"lib下的所有文件及 mail.jar,activation.jar,xmlsec-1.4.1.jar,xalan.jar,一个是WEB-INF下面的web.xml文件,我们来简单看一下web.xml这个文件
<servlet>
<servlet-name>AxisServlet</servlet-name>
<display-name>Apache-Axis Servlet</display-name>
<servlet-class>
org.apache.axis.transport.http.AxisServlet
</servlet-class>
</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/AxisServlet、*.jws、/services/*这几种映射会引起调用AxisServlet这个类,我们要用的就这几行,其他的可以直接删掉。
2.在WEB-INF/src下面新建一个myService.java文件,如下
public class myService {
public String getusername(String name){
return "Hello "+name+",this is an Axis DII Web Service";
}
}
注意这个java文件是不属于任何package的,如果你要将其放入某个package那么Axis会提示你找不到它生成的class文件从而不能将其转换为wsdl文件。
将myService.java拷贝到AxisTest根目录下,将其后缀改为jws。
启动Tomcat输入http://localhost:8080/AxisTest/myService.jws,
[align=left]3.点击Click to see the WSDL,这时候你会在WEB-INF下面看到Axis会自动生成一个jwsClasses文件夹,jwsClasses下面会有一个myService.class文件[/align]
4.客户端
com.axistest包下新建一个myServiceTestorByjws.java,选中public static void main(),
代码如下:
package com.client;
import java.net.MalformedURLException;
import java.rmi.RemoteException;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.ServiceException;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
public class MyServiceClient {
public static void main(String[] args) throws ServiceException, MalformedURLException, RemoteException {
String endpoint="http://localhost:8080/AxisTest/MyService.jws";
String name=" 张三";
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(endpoint));
call.addParameter("param1",XMLType.XSD_STRING,ParameterMode.IN);
call.setOperationName( "sayHello" );
call.setReturnType( XMLType.XSD_STRING );
String ret = (String) call.invoke( new Object[] { name } );
System.out.println("返回结果:" + ret);
}
[align=left]}[/align]
相关文章推荐
- axis支持三种web service的部署和开发
- Axis的三种Web Service的部署和开发实例【转】
- Axis部署和开发web service支持的三种方式
- 用Axis开发Web Service的三种部署方式测试
- Axis开发Web Service实例 三种方式
- Axis部署开发webservice (三种方式全)
- Axis开发Web Service实例(三种方式)
- Axis开发Web Service实例(三种方式)
- Axis开发Web Service实例(三种方式)
- Axis通过wsdd部署Web Service
- MyEclipse下开发Web Service(3)部署Web Service Project
- 在项目中集成Axis 1.x来开发Web Service
- 使用Axis开发Web Service程序
- MyEclipse下开发Web Service(Axis)3
- Java Web开发Tomcat中三种部署项目的方法
- 使用Axis开发Web Service程序
- Win10 IoT C#开发 2 - 创建基于XAML的UI程序 及 应用的三种部署方法
- Java Web开发Tomcat中三种部署项目的方法
- Axis Web Service开发之旅 (六) --会话(Session)管理
- 【转载保存】Ubuntu14.04安装pycharm用于Python开发环境部署,并且支持pycharm使用中文输入