WebService之XFire+Spring集成(使用注解)

WebService之XFire+Spring集成(使用注解)

分类: 新的征程 253人阅读 评论(0) 收藏 举报

        本文只是介绍XFire+Spring使用注解的集成,版本为Xfire 1.2.6+Spring 3.0.5,测试环境为Tomcat6.0。

        1.首先建一个Web工程,引入相应的jar包,这一步不再多说。

        2.修改web.xml,加入以下代码:

  1. <context-param>  
  2.     <param-name>contextConfigLocation</param-name>  
  3.     <param-value>classpath:applicationContext.xml</param-value>  
  4. </context-param>  
  5.   
  6. <listener>  
  7.     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  8. </listener>  
  9.   
  10. <servlet>  
  11.     <servlet-name>xfireServlet</servlet-name>  
  12.     <servlet-class>org.codehaus.xfire.spring.XFireSpringServlet</servlet-class>  
  13. </servlet>  
  14. <servlet-mapping>  
  15.     <servlet-name>xfireServlet</servlet-name>  
  16.     <url-pattern>/service/*</url-pattern>  
  17. </servlet-mapping>  
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:applicationContext.xml</param-value>
	</context-param>

	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<servlet>
		<servlet-name>xfireServlet</servlet-name>
		<servlet-class>org.codehaus.xfire.spring.XFireSpringServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>xfireServlet</servlet-name>
		<url-pattern>/service/*</url-pattern>
	</servlet-mapping>
        3.在classpath下加入Spring配置文件applicationContext.xml,加入以下代码:

  1. <context:component-scan base-package="my.webservice" />  
  2.   
  3. <!-- XFire start -->  
  4. <import resource="classpath:org/codehaus/xfire/spring/xfire.xml" />  
  5. <bean id="webAnnotations" class="org.codehaus.xfire.annotations.jsr181.Jsr181WebAnnotations" />  
  6. <bean id="jsr181HandlerMapping"  class="org.codehaus.xfire.spring.remoting.Jsr181HandlerMapping">  
  7.     <property name="xfire" ref="xfire" />  
  8.     <property name="webAnnotations" ref="webAnnotations" />  
  9. </bean>  
  10. <!-- XFire end -->  
	<context:component-scan base-package="my.webservice" />
	
	<!-- XFire start -->
	<import resource="classpath:org/codehaus/xfire/spring/xfire.xml" />
	<bean id="webAnnotations" class="org.codehaus.xfire.annotations.jsr181.Jsr181WebAnnotations" />
	<bean id="jsr181HandlerMapping"	class="org.codehaus.xfire.spring.remoting.Jsr181HandlerMapping">
		<property name="xfire" ref="xfire" />
		<property name="webAnnotations" ref="webAnnotations" />
	</bean>
	<!-- XFire end -->
        4.定义WebService接口,添加相应注解:

  1. @WebService  
  2. public interface IBookService {  
  3.   
  4.     @WebMethod  
  5.     public Book getBook();  
  6. }  
@WebService
public interface IBookService {

	@WebMethod
	public Book getBook();
}
        5.接口实现类,注解中serviceName定义发布的服务名,endpointInterface定义实现的接口:

  1. @Component  
  2. @WebService(serviceName="BookService",  
  3.         endpointInterface = "my.webservice.IBookService")  
  4. public class BookServiceImpl implements IBookService {  
  5.   
  6.     @Override  
  7.     public Book getBook() {  
  8.           
  9.         Book b = new Book(1"Java核心思想"100);  
  10.           
  11.         System.out.println(">>>>>>Server: " + b);  
  12.           
  13.         return b;  
  14.     }  
  15. }  
@Component
@WebService(serviceName="BookService",
		endpointInterface = "my.webservice.IBookService")
public class BookServiceImpl implements IBookService {

	@Override
	public Book getBook() {
		
		Book b = new Book(1, "Java核心思想", 100);
		
		System.out.println(">>>>>>Server: " + b);
		
		return b;
	}
}

        6.以上便是服务端的配置及实现,是不是很简单。把工程发布到Tomcat并启动,在浏览器中输入:http://127.0.0.1:8080/XFireTest/service/BookService?wsdl(BookService为上面serviceName定义的名称),如果浏览器中显示BookService相关xml信息,则表示WebService发布成功。

        7.客户端调用服务端方法:

  1. @Test  
  2. public void testBookService() {  
  3.     Service serviceModel = new ObjectServiceFactory().create(IBookService.class);  
  4.     String url = "http://127.0.0.1:8080/XFireTest/service/BookService";  
  5.     IBookService service = null;  
  6.       
  7.     try {  
  8.         service = (IBookService) new XFireProxyFactory().create(serviceModel, url);  
  9.         Book b = service.getBook();  
  10.         System.out.println(">>>>>>>>Client: " + b);  
  11.     } catch (Exception e) {  
  12.         e.printStackTrace();  
  13.     }  
  14. }  

 

 

下面来讲客户端调用。===================

1. 加入跟server端一样的library。参考上面的第1点

2. 将serviceClass对应的接口加入客户端中。

3. 书写调用代码: PS:代码太简单,不另外注释了。

private String url = "http://10.4.1.16:8080/eccn/services/exCommService";
    public String checkLicenseByOB(String obno) throws Exception{
        Service serviceModel = new ObjectServiceFactory().create(IExCommService.class);
        IExCommService service = (IExCommService)
        new XFireProxyFactory().create(serviceModel, url);
       
        return service.checkLicenseByOB(obno);
    }

在生成接口对应的service后,用户就可以像调用本地方法一样调用远程的方法了。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值