WebService CXF學習(進階篇1):自定義對象傳遞(簡單JavaBean對象)

這一節我們就CXF框架簡單的JavaBean對象傳遞進行講解。
 第一步:創建傳輸的JavaBean對象(UserInfo)
package com.ws.model;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;


@XmlRootElement(name="UserInfo")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(propOrder={"userName","userAge"})
public class UserInfo {
	private String userName;
	private Integer userAge;
	
	public UserInfo(String name,Integer age){
		this.userAge = age;
		this.userName = name;
	}
	
	public UserInfo(){		
	}
	
	// 添加geter/seter方法..
	
}

註解:@XmlRootElement-指定XML根元素名稱(可選)
            @XmlAccessorType-控制屬性或方法序列化 , 四種方案:
                       FIELD-對每個非靜態,非瞬變屬性JAXB工具自動綁定成XML,除非註明XmlTransient 
                       NONE-不做任何處理
                       PROPERTY-對具有set/get方法的屬性進行綁定,除非註明XmlTransient
                       PUBLIC_MEMBER -對有set/get方法的屬性或具有共公訪問權限的屬性進行綁定,除非注 明XmlTransient
            @XmlType-映射一個類或一個枚舉類型成一個XML Schema類型

第二步:創建webservices服務端接口和實現類 
   
1、創建服務端接口類

package com.ws.services;

import javax.jws.WebService;
import com.ws.model.UserInfo;

@WebService
public interface IUserServices {
	public UserInfo getUserInfo(String userName, Integer userAge);
}

   2、創建服務端接口實現類

package com.ws.services.impl;

import javax.jws.WebService;
import com.ws.model.UserInfo;
import com.ws.services.IUserServices;

@WebService
public class UserServicesImpl implements IUserServices {
	public UserInfo getUserInfo(String userName, Integer userAge) {
		return new UserInfo(userName,userAge);
	}
}

3、創建服務端,併發布服務

package com.test;

import javax.xml.ws.Endpoint;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
import com.ws.services.impl.UserServicesImpl;

public class ServerTest {
	public ServerTest(){
		// 發佈User服務接口
		Endpoint.publish("http://localhost:8090/userInfoServices", new UserServicesImpl());
	}
	public static void main(String[] args) {
		// 啓動服務
		new ServerTest();
		System.out.println("Server ready...");   
		try {
			Thread.sleep(1000*300);//休眠五分分鐘,便於測試   
		} catch (InterruptedException e) {
			e.printStackTrace();
		}   
		System.out.println("Server exit...");   
		System.exit(0);
	}
}

第三步:創建webservices客戶端,並進行測試(這裏只例舉在客戶端工程中的測試方法) 
    1、將服務端的JavaBean和Services接口類,copy到客戶端工程中,且目錄要一致
    2、在客戶端工程中,新建一個測試類測試

package com.ws.client;

import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import com.ws.model.UserInfo;
import com.ws.server.IUserServices;

public class UserTest {
	public static void main(String[] args) {
		//創建WebService客戶端代理工廠   
		JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();   
		//註冊WebService接口   
		factory.setServiceClass(IUserServices.class);   
		//設置WebService地址   
		factory.setAddress("http://localhost:8090/userInfoServices");        
		IUserServices userServices = (IUserServices)factory.create();   
		System.out.println("invoke userinfo webservice...");
		// 測試返回JavaBean對象的
		UserInfo user = userServices.getUserInfo("vicky", 23);
		System.out.println("UserName: "+user.getUserName());
		System.out.println("UserAge : "+user.getUserAge());
		
		System.exit(0);   
	} 
}

第四步:運行webServices服務,在IE中輸入http://localhost:8090/userInfoServices?wsdl,驗證服務是否成功發佈
第四步:運行客戶端,驗證。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章