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