axis1,xfire,jUnit 測試案列+開Web Service開發指南+axis1.jar下載 程式碼

java的爪哇發表於2013-07-25

axis1,xfire,jUnit 測試案列+Web Service開發指南(中).pdf+axis1.jar下載    程式碼

專案和資源文件+jar 下載:http://download.csdn.net/detail/liangrui1988/5810873


專案內容:


部分主要程式碼:

axis1:

package com.webservice.test;

/**
 * @author liangrui
 * 
	1:把axis-bin-1_4.zip 解壓後的axis檔案拷貝到tomcat webpaas目錄下
	2:直接把java檔案拷貝到axis目錄下 (是配置即時發部)
	3:定時釋出,有包名.
	     需要把編譯好的java檔案 也就是class檔案拷貝到你的axis/WEB-INF/class檔案下;
	  然後在WEB-INF目錄下新建一個deploy.wsdd檔案:
	  
	  <deployment xmlns="http://xml.apache.org/axis/wsdd/" 
          xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
          <!--服務相關配置-->
	    <service name="helloworldWSDD" provider="java:RPC">
		 <parameter name="allowedMethods" value="*"/>
         <parameter name="className" value="com.webservice.service.HelloWorld"/>
		 <parameter name="scope" value="request"/>               
	   </service>
   </deployment>
	****************************這個是我提前做好的檔案****************************
	deploy.wsdd\start_Services.bat檔案拷貝到axis/WEB-INF下( 這個是配置 定時釋出的)
	start_Services.bat //開啟服務 《也可以在cmd下操作》
	***********************************************************************
  4:cmd方式:
	開啟cmd cd到你tomcat目錄下 axis WEB-INF下,輸入命令:
	java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient deploy.wsdd
	//編譯當前資料夾(WEB-INF)下的 deploy.wsdd檔案,會生成一個server-config.wsdd檔案
	
  5:瀏覽器訪問的時候會根據你的請求名字 
	來找這個配製檔案(server-config.wsdd) 裡的service 節點下的name屬性 ,
	再詳細的解析==(也就是deploy.wsdd 檔案	下的 <service name="xx" ....>)
	
	shutDown_Services.bat  //關閉服條 根開啟服務操作一樣
 *
 */

import java.rmi.RemoteException;

import javax.xml.namespace.QName;
import javax.xml.rpc.ServiceException;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

public class Test {
	public static void main(String[] args) {
		
		jwsTest();// 即時發部
		
		deployTest(); //定時釋出 部署,有包名
	
	}
	
	/**
	 * 即時發部
	 */
	public static void jwsTest(){
		try {
			// 訪問的url
			String url="http://localhost:8080/axis/HelloWorld.jws";
			// 建立service
			Service service = new Service();
			// 通過service 建立call
			Call call =(Call) service.createCall();
			// 設定訪問的webservice
			call.setTargetEndpointAddress(url);
			//呼叫指定方法
			call.setOperationName(new QName(url,"sayHello"));
			//傳送引數 並返回結果
			String resource=(String) call.invoke(new Object[]{"accp157"});
			
			System.out.println("返回的資料:"+resource);
			
		} catch (ServiceException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	/**
	 * 定時釋出
	 */
	public static void deployTest(){
		// 訪問的url
		// http://專案路徑 /services/服務名稱(需要和deploy.wsdd 中的service 配置一)
		String url ="http://localhost:8080/axis/services/helloworldWSDD";
		// 建立service
		Service service = new Service();
		try {
			// 建立call
			Call call = (Call) service.createCall();
			// 設定訪問的url
			call.setTargetEndpointAddress(url);
			// 設定呼叫的webservice 的方法
			call.setOperationName(new QName(url,"jia"));
			// 執行
			int result = (Integer) call.invoke(new Object[]{2,3});
			// 執行結果
			System.out.println("結果是:"+result);
			
			call.setOperationName(new QName(url,"jian"));
			
			result = (Integer) call.invoke(new Object[]{2,3});
			
			System.out.println("結果是:"+result);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
}

java檔案

public class HelloWorld {
	public String sayHello(String name){
		System.out.println("hello:"+name);
		return "hello.."+name;
	}

}

有包的java檔案

package com.webservice.service;

/**
 * 加減乘除
 * @author Administrator
 *
 */
public class HelloWorld {
	
	public int jia(int num1,int num2){
		return num1+num2;
	}
	public int jian(int num1,int num2){
		return num1-num2;
	}
	public int chen(int num1,int num2){
		return num1*num2;
	}
	public int chun(int num1,int num2){
		if(num2 > 0){
			return num1/num2;
		}else{
			return 0 ;
		}
	}
	
}

axis1 呼叫天氣預報測試:

package com.webservice.test;

import java.rmi.RemoteException;


import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

import javax.xml.namespace.QName;

import javax.xml.rpc.ServiceException;

public class ForecastTest {
	public static void main(String[] args) {
		
		 // http://WebXml.com.cn/是wsdl中definitions根節點的targetNamespace屬性  
	      
	    // webservice路徑   
	    // 這裡後面加不加 "?wsdl" 效果都一樣的  
	    String endpoint = "http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl";          
	    String[] res = null;   
	      
	    // 查詢城市天氣的介面方法名   
	    String operationName = "getWeather";   
	    // 定義service物件  
	    Service service = new Service();   
	    // 建立一個call物件  
	    Call call = null;
		try {
			call = (Call) service.createCall();
		} catch (ServiceException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}   
	    // 設定目標地址,即webservice路徑   
	    call.setTargetEndpointAddress(endpoint);   
	    // 設定操作名稱,即方法名稱   
	    call.setOperationName(new QName("http://WebXml.com.cn/",operationName));   
	    // 設定方法引數   
	    call.addParameter( new QName("http://WebXml.com.cn/","theCityCode"),  
	    org.apache.axis.encoding.XMLType.XSD_STRING,   
	    javax.xml.rpc.ParameterMode.IN);   
	    call.addParameter( new QName("http://WebXml.com.cn/","theUserID"),  
	            org.apache.axis.encoding.XMLType.XSD_STRING,   
	            javax.xml.rpc.ParameterMode.IN);   
	    // 設定返回值型別   
	    //對於返回是字串陣列的返回型別只有這兩種可行  
	      
	    //call.setReturnType(org.apache.axis.encoding.XMLType.SOAP_VECTOR);  
	    call.setReturnClass(java.lang.String[].class);  
	      
	    call.setUseSOAPAction(true);   
	    call.setSOAPActionURI("http://WebXml.com.cn/"+"getWeather");  
	      
	    String cityCode="廣州";
	    String userId="";
	    try {
			res=(String[]) call.invoke(new Object[]{cityCode,userId});
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}   
	      
	    // 如果返回型別是org.apache.axis.encoding.XMLType.SOAP_VECTOR時用下面的轉型接收  
	    //Vector v=(Vector) call.invoke(new Object[]{cityCode,userId});   
	    for(String str:res)  
	    {  
	        System.out.println(str);  
	    }  
	   // return res;  
	}  
	}




相關文章