【原創】WebService大講堂之Axis2(7):將Spring的裝配JavaBean釋出成WebService

銀河使者發表於2009-02-13

本文為原創,如需轉載,請註明作者和出處,謝謝!

   在現今的Web應用中經常使用Spring框架來裝載JavaBean。如果要想將某些在Spring中裝配的JavaBean釋出成WebService,使用Axis2Spring感知功能是非常容易做到的。
    在本文的例子中,除了安裝目錄>\webapps\axis2目錄及該目錄中的相關庫外,還需要Spring框架中的spring.jar檔案,將該檔案複製到安裝目錄>\webapps\axis2\WEB-INF\lib目錄中。
    下面先建立一個JavaBean(該JavaBean最終要被髮布成WebService),程式碼如下:

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gtpackage service;
import entity.Person;
public class SpringService
{
    
private String name;
    
private String job;
    
public void setName(String name)
    {
        
this.name = name;
    }
    
public void setJob(String job)
    {
        
this.job = job;
    }
    
public Person getPerson()
    {
        Person person 
= new Person();
        person.setName(name);
        person.setJob(job);
        
return person;
    }
    
public String getGreeting(String name)
    {
        
return "hello " + name;
    }
}

    其中Person也是一個JavaBean,程式碼如下:

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gtpackage entity;
public class Person
{
    
private String name;
    
private String job;
    
public String getName()
    {
        
return name;
    }
    
public void setName(String name)
    {
        
this.name = name;
    }
    
public String getJob()
    {
        
return job;
    }
    
public void setJob(String job)
    {
        
this.job = job;
    }
}

    將上面兩個Java原始檔編譯後,放到安裝目錄>\webapps\axis2\WEB-INF\classes目錄中。

    安裝目錄>\webapps\axis2\WEB-INF目錄中建立一個applicationContext.xml檔案,該檔案是Spring框架用於裝配JavaBean的配置檔案,內容如下:

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gtxml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:aop
="http://www.springframework.org/schema/aop"
        xmlns:tx
="http://www.springframework.org/schema/tx"
        xsi:schemaLocation
="
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
>
  
<bean id="springService" class="service.SpringService">
     
<property name="name" value="姚明" />
     
<property name="job" value="職業男籃" /> 
  
bean>   
beans>

    applicationContext.xml檔案中裝配了service.SpringService類,並被始化了namejob屬性。在配置完SpringService類後,就可以直接在程式中FileSystemXmlApplicationContext類或其他類似功能的類讀取applicationContext.xml檔案中的內容,並獲得SpringService類的物件例項。但現在我們並不這樣做,而是將SpringService類釋出成WebService

    安裝目錄>\webapps\axis2\WEB-INF\lib目錄中有一個axis2-spring-1.4.1.jar檔案,該檔案用於將被裝配JavaBean的釋出成WebService。在D盤建立一個axi2-spring-ws目錄,並在該目錄中建立一個META-INF子目錄。在META-INF目錄中建立一個services.xml檔案,內容如下:

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt<service name="springService">
    
<description>
        Spring aware
    
description>
    
<parameter name="ServiceObjectSupplier">
        org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier
    
parameter>
    
<parameter name="SpringBeanName">
        springService
    
parameter>
    
<messageReceivers>
        
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
            class
="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
    
messageReceivers>
service>    

    Windows控制檯進入axi2-spring-ws目錄,並使用jar命令將axi2-spring-ws目錄中的內容打包成axi2-spring-ws.aar,然後將該檔案複製到安裝目錄>\webapps\axis2\WEB-INF\services目錄中,啟動Tomcat後,就可以訪問該WebService了,訪問方式與前面幾篇文章的訪問方式相同。獲得wsdl內容的URL如下:

http://localhost:8080/axis2/services/springService?wsdl

    在將Spring中的裝配JavaBean釋出成WebService需要注意以下幾點:

    1. JavaBean編譯生成的.class檔案需要放在WEB-INF"classes目錄中,或打成.jar包後放在WEB-INF\lib目錄中,而WEB-INF\services目錄中的.aar包中不需要包含.class檔案,而只需要包含一個META-INF目錄,並在該目錄中包含一個services.xml檔案即可。

    2. services.xml的配置方法與前幾篇文章的配置方法類似,只是並不需要使用ServiceClass引數指定要釋出成WebServiceJava類,而是要指定在applicationContext.xml檔案中的裝配JavaBean的名稱(SpringBeanName引數)。

    3. services.xml檔案中需要通過ServiceObjectSupplier引數指定SpringServletContextObjectSupplier類來獲得SpringApplicationContext物件。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12921506/viewspace-550354/,如需轉載,請註明出處,否則將追究法律責任。

相關文章