GWT工程的webService Axis2开发

1、axis2简介

  WebService被应用在很多不同的场景。例如,可以使用WebService来发布服务端 Java类的方法,以便使用不同的客户端进行调用。这样可以有效地集成多种不同的技术来完成应用系统。即异构系统之间的相互访问。WebService还经常被使用在SOA中,用于 SOA各个部分交换数据。
  Axis2是目前比较流行的WebService引擎,该版本是对Axis1.x重新设计的产物。Axis2不仅支持SOAP1.1和SOAP1.2,还集成了非常流行的REST WebService,同时还支持Spring、JSON等技术。
下面将介绍eclipse中web+GWT的java工程的axis2 webservice开发步骤。

2、下载axis2

 下载链接: http://axis.apache.org/axis2/java/core/download.html

3、axis2开发步骤

1
  如上图所示,我们通过Ezone_Explorer工程的去访问PortolSystem 工程,此时Ezone_Explorer为客户端,PortolSystem 为服务端。接下来,我们先配置服务端:

3.1 服务端配置

3.1.1 配置web.xml文件

在web.xml文件中加入axis2的servlet配置:

  <servlet>  
        <servlet-name>AxisServlet</servlet-name>  
        <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>  
        <load-on-startup>3</load-on-startup>  
   </servlet>  
   <servlet-mapping>  
        <servlet-name>AxisServlet</servlet-name>  
        <url-pattern>/services/*</url-pattern>  
   </servlet-mapping>

3.1.2 定义服务类

/**用户信息验证*/
public class PortoalWebServiceImpl{
	public User identifuAndGetUserInfo(String userName, String password) {
		System.out.println("门户系统接收信息,开始进行门户验证:");
		//TODO 获取用户id及权限信息,并赋值
		User u = new User("", userName, password);
		System.out.println("门户验证结束");
		return u;
	}
}
public class User implements IsSerializable {
	private String id;           
	private String name;       //用户的登录用户名
	private String password;   //用户的密码
	public User() {	}	
	public User(String id, String name, String password) {
		super();
		this.id = id;
		this.name = name;
		this.password = password;
	}
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
}

3.1.3 创建services文件

2
在工程的WEB-INF下,创建目录services/conf/META-INF,并在下面新建一个xml文件,文件名为services.xml,文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<service name="explorer2portolService">  
    <description>测试explorer访问门户系统</description>
	<!-- 设置WebService对应的类名--> 
    <parameter name="ServiceClass">
    	 com.net.server.PortoalWebServiceImpl
    </parameter>  
  	<!-- 指定WebService类的方法 -->
    <operation name="identifuAndGetUserInfo">
        <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />  
    </operation> 
</service>

3.1.4 验证配置是否成功

  1. 运行程序:右键工程->run As ->Web Application
  2. 运行成功后,在浏览器输入地址: http://127.0.0.1:8899/services/explorer2portolService?wsdl
    查看结果:出现wsdl标签及内容则成功
    (注意:这里8899是端口号,我这边配置的是8899,可根据实际情况变更)
    4

3.2 客户端配置

3.2.1 配置web.xml文件

在web.xml文件中加入axis2的servlet配置:

  <servlet>  
        <servlet-name>AxisServlet</servlet-name>  
        <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>  
        <load-on-startup>3</load-on-startup>  
   </servlet>  
   <servlet-mapping>  
        <servlet-name>AxisServlet</servlet-name>  
        <url-pattern>/services/*</url-pattern>  
   </servlet-mapping>

3.2.2 开发访问类

/**主工程访问门户系统*/
public class Explorer2PortolWebService {
	public User identifyAndGetUserInfo(String userName, String password,String aixweburl){
		try {
			//指定客户端访问的webservice服务器端地址 
            EndpointReference targetEPR = new EndpointReference(aixweburl);  
            //加载目标服务器
            RPCServiceClient sender = new RPCServiceClient();  
            Options options = sender.getOptions();  
            options.setTimeOutInMilliSeconds(2*20000L);//超时时间20s  
            options.setTo(targetEPR); 
            options.setManageSession(true);   
            options.setProperty(HTTPConstants.REUSE_HTTP_CLIENT,true);  
            // 							指定命名空间,					指定要调用的方法 
            QName qname = new QName("http://server.net.com", "identifuAndGetUserInfo"); 
            //调用方法的参数创建:要传送的object
            Object[] param = new Object[]{userName,password}; 
            // 创建返回的参数类型 
            Class<?>[] types = new Class[]{User.class}; 
            //调用远程服务,得到返回的object数组 
            Object[] response1 = sender.invokeBlocking(qname, param, types); 
            User u = (User)response1[0];
            System.out.println(u.getName()+"-"+u.getPassword());
            return u;
        } catch (AxisFault e) {
        	 System.err.println("接口响应异常:");
            e.printStackTrace();
        }
		return null;
	}
	/***测试main函数/
	public static void main(String[] args) {
		Explorer2PortolWebService service = new Explorer2PortolWebService();
		service.identifyAndGetUserInfo("路飞", "1111", "http://127.0.0.1:8899/services/explorer2portolService");
	}
}

3.2.3 测试连接验证

  1. 运行程序:右键工程->run As ->Web Application
    (两个工程均启动,注意这里两个工程的端口号不能相同)
  2. 运行成功后,在浏览器输入地址:
    http://127.0.0.1:端口port/services/服务名称?webservice函数的方法名
    例:http://127.0.0.1:8899/services/explorer2portolService?identifuAndGetUserInfo
    查看结果:出现标签及内容则成功
  3. 然后运行3.2.2中的main函数,窗口打印:路飞-1111表示成功

4、axis 的https连接

链接: AXIS通过HTTPS(SSL加密)方式访问Web Service

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值