`
全能骑士
  • 浏览: 67220 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

在Spring中使用Axis开发WebService

    博客分类:
  • JAVA
阅读更多
1.建立工程:名称为AxisWebService,导入spring,axis所需的包(博客中有一篇文章讲解了axis的配置问题)
2.建立接口类 IUserService 代码如下:

package com.gis.service;

public interface IUserService {
	String login(String name) ;
}


3.建立接口实现类 UserService 代码如下:

package com.gis.service.impl;
import com.gis.service.IUserService;

public class UserService implements IUserService {

	public String login(String name) {
		if("liqi".equals(name))
		{
			return "success" ;
		}
		else
		{
			return "fault" ;
		}
	}

}


4.建立继承ServletEndpointSupport并实现IUserService接口的类UserWebService,代码如下

package com.gis.service.webservice;

import javax.xml.rpc.ServiceException;

import org.springframework.remoting.jaxrpc.ServletEndpointSupport;

import com.gis.service.IUserService;

public class UserWebService extends ServletEndpointSupport implements
		IUserService {

	private IUserService userService ;
	protected void onInit() throws ServiceException
	{
		userService = (IUserService)this.getWebApplicationContext().getBean("userService") ;
	}
	
	public String login(String name) {
		return userService.login(name) ;
	}

}


5.配置Web工程的web.xml文件,文件路径为WEB-INF/web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
	xmlns="http://java.sun.com/xml/ns/j2ee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<context-param> 
<param-name>contextConfigLocation</param-name> 
<param-value>/WEB-INF/applicationContext.xml</param-value> 
</context-param> 
<servlet> 
<servlet-name>context</servlet-name> 
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class> 
<load-on-startup>1</load-on-startup> 
</servlet> 
<servlet> 
<servlet-name>axis</servlet-name> 
<servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class> 
<load-on-startup>2</load-on-startup> 
</servlet>

<servlet-mapping> 
<servlet-name>axis</servlet-name>
<url-pattern>/webservices/*</url-pattern> 
</servlet-mapping> 
</web-app>


6.配置bean,即添加spring的配置文件applicationContext.xml,路径为WEB-INF/applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>   
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" 
"http://www.springframework.org/dtd/spring-beans.dtd">     
<beans> 
	<bean id="userService" 
		class="com.gis.service.impl.UserService"> 
	</bean>
</beans> 


7.编写axis使用的WSDD文件,名称为server-config.wsdd,路径为WEB-INF/server-config.wsdd

<deployment xmlns="http://xml.apache.org/axis/wsdd/" 

       xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> 

       <handler name="URLMapper" 

              type="java:org.apache.axis.handlers.http.URLMapper" />    

       <!-- 系统服务 --> 

       <service name="AdminService" provider="java:MSG"> 

              <parameter name="allowedMethods" value="AdminService" /> 

              <parameter name="enableRemoteAdmin" value="false" /> 

              <parameter name="className" value="org.apache.axis.utils.Admin" /> 

              <namespace>http://xml.apache.org/axis/wsdd/</namespace> 

       </service> 

       <service name="Version" provider="java:RPC"> 

              <parameter name="allowedMethods" value="getVersion" /> 

              <parameter name="className" value="org.apache.axis.Version" /> 

       </service>      

       <!-- 自定义服务 --> 

       <service name="userWebService" provider="java:RPC"> 

              <parameter name="className" 

                     value="com.gis.service.webservice.UserWebService" /> 

              <parameter name="allowedMethods" value="*" /> 

       </service> 

       <transport name="http"> 

              <requestFlow> 

                     <handler type="URLMapper" /> 

              </requestFlow> 

       </transport> 

</deployment> 


8.浏览器测试wsdl信息
在浏览器中输入http://localhost:8888/AxisWebService/webservices/userWebService?wsdl测试是否返回webservice描述信息


9.代码测试调用并验证返回,编写测试类

import javax.xml.namespace.QName;
import javax.xml.rpc.Call;

import org.apache.axis.client.Service;

public class Test {

	/**
	 * @param args
	 */
	
	public static void main(String[] args) { 
		// TODO Auto-generated method stub 
		try { 
			String wsdlUrl = "http://localhost:8888/AxisWebService/webservices/userWebService?wsdl"; 
			String nameSpaceUri = "http://localhost:8888/AxisWebService/webservices/userWebService"; 
			// 创建调用对象 
			Service service = new Service(); 
			Call call = null; 
			call = (Call) service.createCall(); 
			// 调用sayHello 
			System.out.println(">>>getMessage"); 
			call.setOperationName(new QName(nameSpaceUri, "login")); 
			call.setTargetEndpointAddress(wsdlUrl); 
			String ret = (String) call.invoke(new Object[] {"liqi"}); 
			System.out.println("return value is " + ret); 
		} 
		catch (Exception e) { 
			e.printStackTrace(); 
		} 
	} 
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics