在Spring中使用Axis开发WebService

1.建立工程:名称为AxisWebService,导入spring,axis所需的包[color=red](博客中有一篇文章讲解了axis的配置问题)[/color]
2.建立接口类 [color=red]IUserService[/color] 代码如下:

package com.gis.service;

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


3.建立接口实现类 [color=red]UserService[/color] 代码如下:

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接口的类[color=red]UserWebService[/color],代码如下

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文件,[color=red]文件路径为WEB-INF/web.xml[/color]

<?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,即添加[color=red]spring的配置文件applicationContext.xml,路径为WEB-INF/applicationContext.xml[/color]

<?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文件,[color=red]名称为server-config.wsdd,路径为WEB-INF/server-config.wsdd[/color]

<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();
}
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值