webservice-之使用axis+spring開發

1、環境配置 :在 eclipse 中配置引入相應的 spring 框架( core/Remoting/Web )、 axis 包。java

 

2、代碼開發web

一、  在 MyEclipse 中創建一個新的 J2EE 的 Web Project, 新建 Java 包 test 。spring

二、  接口文件 HelloWorldRemote.javaapache

package test;app

//Spring 工程中要使用的接口文件框架

public interface HelloWorldRemoteeclipse

{ide

       public String getMessage(String name);測試

}網站

三、  接口實現文件 HelloWorldBean.java

package test;

//Spring 工程中要使用的接口實現文件

public class HelloWorldBean implements HelloWorldRemote

{    

       private String helloStr; // Spring 中須要注入的字符串       

       public String getHelloStr()

       {

              return helloStr;

       }

       public void setHelloStr(String helloStr)

       {

              this.helloStr = helloStr;

       }

       // 實現接口中的方法

       public String getMessage(String name)

       {

              return helloStr + ":" + name;

       }    

}

四、  在 Spring 中對 Web Service 進行封裝很簡單,僅僅須要繼承

org.springframework.remoting.jaxrpc.ServletEndpointSupport 類,實現裏面的一些方法,包裝一次,將其發佈出來就能夠。 HelloWorldWebService.java

package test;

import javax.xml.rpc.ServiceException;

import org.springframework.remoting.jaxrpc.ServletEndpointSupport;

public class HelloWorldWebService

              extends ServletEndpointSupport

              implements HelloWorldRemote

{

       private HelloWorldRemote helloWorld;

       protected void onInit() throws ServiceException

       {

              // 在 Spring 容器中獲取 Bean 的實例

              helloWorld = (HelloWorldRemote) getApplicationContext()

                            .getBean("myHelloWorldBean");

       }

       public String getMessage(String name) 

       {

              // 執行 Bean 中的相同的方法

              return helloWorld.getMessage(name);

       }

}

 

3、配置文件 (所有放在 /WEB-INF/ 目錄下 

一、  web.xml 爲 web 加載 spring 和 axis 配置

<!--Spring 框架須要引入的配置文件及相關類 -->

       <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>

       <!--axis 須要引入的 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>/services/*</url-pattern>

       </servlet-mapping>

       <!--axis 的 Web Service 的 Web 發佈路徑 -->

二、  applicationContext.xml 爲 spring 的配置

<?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="myHelloWorldBean" class="test.HelloWorldBean">

              <property name="helloStr">

                     <value>Say Hello to :</value>

              </property>

       </bean>

</beans>

三、  server-config.wsdd 爲 axis 服務配置

<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="myWebService" provider="java:RPC">

              <parameter name="className"

                     value="test.HelloWorldWebService" />

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

       </service>

       <transport name="http">

              <requestFlow>

                     <handler type="URLMapper" />

              </requestFlow>

       </transport>

</deployment>

 

4、測試 客戶端 TestWebServiceClient.java

package test;

import javax.xml.namespace.QName;

import org.apache.axis.client.Call;

import org.apache.axis.client.Service;

public class TestWebServiceClient

{    

       public static void main(String[] args)

       {    

              try

              {

                     String wsdlUrl

= "http://localhost:8080/spring-axis/services/myWebService?wsdl";

                     String nameSpaceUri

= "http://localhost:8080/spring-axis/services/myWebService";

                     // 建立調用對象

                     Service service = new Service();

                     Call call = null;

                     call = (Call) service.createCall();

                     // 調用 getMessage

                     System.out.println(">>>getMessage");

                     call.setOperationName(new QName(nameSpaceUri, "getMessage"));

                     call.setTargetEndpointAddress(new java.net.URL(wsdlUrl));

                     String ret = (String) call.invoke(new Object[] { "ABC" });

                     System.out.println("return value is " + ret);

              }

              catch (Exception e)

              {

                     e.printStackTrace();

              }

       }

關注流行國外網站

facebook:http://www.fb-on.com

facebook官網:http://www.facebookzh.com

facebook:http://www.cn-face-book.com

youtube:http://www.youtubezh.com

twitter:http://www.twitterzh.com

相關文章
相關標籤/搜索