程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> WebService大講堂之Axis2(7):將Spring的裝配JavaBean發布成WebService

WebService大講堂之Axis2(7):將Spring的裝配JavaBean發布成WebService

編輯:關於JAVA

在現今的Web應用中經常使用Spring框架來裝載JavaBean。如果要想將某些在Spring中裝配的JavaBean 發布成WebService,使用Axis2的Spring感知功能是非常容易做到的。

在本文的例子中,除了<Tomcat安裝目錄>\webapps\axis2目錄及該目錄中的相關庫外,還需要 Spring框架中的spring.jar文件,將該文件復制到<Tomcat安裝目錄>\webapps\axis2\WEB-INF\lib 目錄中。

下面先建立一個JavaBean(該JavaBean最終要被發布成WebService),代碼如下:

package 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,代碼如下:

package 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源文件編譯後,放到<Tomcat安裝目錄>\webapps\axis2\WEB-INF\classes目錄 中。

在<Tomcat安裝目錄>\webapps\axis2\WEB-INF\web.xml文件中加入下面的內容:

<listener>
        <listener-

class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>

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

<?xml 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類,並被始化了name和job屬性。在 配置完SpringService類後,就可以直接在程序中FileSystemXmlApplicationContext類或其他類似功能的 類讀取applicationContext.xml文件中的內容,並獲得SpringService類的對象實例。但現在我們並不這 樣做,而是將SpringService類發布成WebService。

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

<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,然後將該文件復制到<Tomcat安裝目錄>\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參數指定 要發布成WebService的Java類,而是要指定在applicationContext.xml文件中的裝配JavaBean的名稱 (SpringBeanName參數)。

3.在services.xml文件中需要通過ServiceObjectSupplier參數指定 SpringServletContextObjectSupplier類來獲得Spring的ApplicationContext對象。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved