xfire和ajax有哪些特征,XFire使用详解

2023-05-16

最近一直使用XFire做WebServices方式使用,总结一些相关经验,本文以具体例子进行XFire开发过程分析

1、首先定义一个Interface,具体包含简单类型传值、返回自定义对象、返回集合三个接口方法

import java.util.List;

import com.gresoft.commons.core.exception.BusinessException;

import com.gresoft.sanitation.model.dictionary.Hospital;

public interface WebServicesInterface {

public String savePutXml(int i,String typecode) throws BusinessException;

public Hospital getList(int p);

public List getAll();

}

2、实现上述接口,实现业务逻辑

public class HospitalService extends HibernateEntityDao implements

WebServicesInterface {

private HospitalManager hospitalManager;

public void setHospitalManager(HospitalManager hospitalManager) {

this.hospitalManager = hospitalManager;

}

public String savePutXml(int o, String typecode) throws BusinessException {

// TODO Auto-generated method stub

Hospital h = new Hospital(o, typecode);

super.save(h);

System.out.println("ccccc");

return "gggg";

}

public Hospital getList(int p) {

// TODO Auto-generated method stub

Hospital h = hospitalManager.get(p);

System.out.println("name:" + h.getHospitalName());

return hospitalManager.get(p);

}

@SuppressWarnings("unchecked")

public List getAll() {

List list = hospitalManager.getAll();

System.out.println("size:" + list.size());

return hospitalManager.getAll();

}

}

定义自定义对象Hospital

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.Id;

import javax.persistence.Table;

import org.hibernate.annotations.Cache;

import org.hibernate.annotations.CacheConcurrencyStrategy;

/**

* @author wuxj:

* @version 创建时间:2007-10-15 上午11:31:39

*/

@Entity

@Table(name = "HOSPITAL", schema = "DB2ADMIN")

@Cache(usage = CacheConcurrencyStrategy.READ_ONLY)

public class Hospital implements java.io.Serializable {

private int hospitalId;

private String hospitalName;

public Hospital() {

}

public Hospital(int hospitalId) {

this.hospitalId = hospitalId;

}

public Hospital(int hospitalId, String hospitalName) {

this.hospitalId = hospitalId;

this.hospitalName = hospitalName;

}

@Id

@Column(name = "HOSPITAL_ID", unique = true, nullable = false)

public int getHospitalId() {

return hospitalId;

}

public void setHospitalId(int hospitalId) {

this.hospitalId = hospitalId;

}

@Column(name = "HOSPITAL_NAME", nullable = false, length = 20)

public String getHospitalName() {

return hospitalName;

}

public void setHospitalName(String hospitalName) {

this.hospitalName = hospitalName;

}

}

3、编写XFire的描述文件

描述文件为WebServicesInterface.aegis.xml,一定要与Interface接口类在同一个目录,否则会出错误

只需要描述返回是集合的描述,getAll方法返回是List集合,需要对集合中的元素进行定义,在这里是Hospital对象

componentType="com.gresoft.sanitation.model.dictionary.Hospital" />

4、编写xfire-servlet.xml文件

xfire是跟spring结合一起使用的,所以用到了spring相关内容。

注意:位置一定要在WEB-INF目录下

key="/echo"中的echo为你在客户端访问的地址,具体看client内容

class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

class="org.codehaus.xfire.spring.remoting.XFireExporter">

value="com.gresoft.sanitation.service.WebServicesInterface" />

5、编写客户端测试

import java.net.MalformedURLException;

import org.codehaus.xfire.XFireFactory;

import org.codehaus.xfire.client.XFireProxyFactory;

import org.codehaus.xfire.service.Service;

import org.codehaus.xfire.service.binding.ObjectServiceFactory;

public class HospitalServiceClient {

public static void main(String args[]) {

Service srvcModel = new ObjectServiceFactory()

.create(WebServicesInterface.class);

XFireProxyFactory factory = new XFireProxyFactory(XFireFactory

.newInstance().getXFire());

// XFireProxyFactory factory = new XFireProxyFactory(getXFire());

String helloWorldURL = "http://localhost:8080/sanitation/service/echo";

// String helloWorldURL ="xfire.local://echo";

try {

WebServicesInterface srvc = (WebServicesInterface) factory.create(

srvcModel, helloWorldURL);

Hospital h = new Hospital();

h.setHospitalId(11);

h.setHospitalName("测试");

// System.out.print(srvc.sayHello("wuxj")+"\n");

// RegisterApply apply = new RegisterApply();

// apply.setOperateDate("20071221");

// apply.setRegisterId("1000");

// srvc.savePutXml(apply);

System.out.println(srvc.savePutXml(11, "测试"));

srvc.getList(1);

srvc.getAll();

// System.out.print(((MsdpUser)srvc.getUser().get(0)).getUid());

} catch (MalformedURLException e) {

System.out.println("wrong");

e.printStackTrace();

}

}

}

6、定义web.xml的xfire

红色字体一定要加上,而且是固定格式,这是xfire需要加载的文件

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

contextConfigLocation

classpath*:spring/*.xml,classpath:org/codehaus/xfire/spring/xfire.xml

org.springframework.web.context.ContextLoaderListener

xfire

org.springframework.web.servlet.DispatcherServlet

xfire

/service/*

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

xfire和ajax有哪些特征,XFire使用详解 的相关文章

随机推荐