XFire确实比Axis简单了不少

方法一,使用向导步骤如下:
1. File --> new --> Web Service Project (Optional Maven Support) -->
?? 输入xfireServer-->选择XFire-->next-->选择所需jar包(第一二个就行了)
图解:
???



2. 定义一个实体类Person,一个接口PersonService,一个PersonService的实现类PersonServiceImpl
Person代码:
package com.eagle.bean;
import java.io.Serializable;
import java.util.Date;
/**
*TODO 实体类
*date:Jan 14,2010
*time:2:29:49 PM
*author:wxj
*email:jxauwxj@126.com
*/
public class Person implements Serializable{
private int id;
private String name;
private int age;
private Date birthday;
public int getId() {
?? return id;
}
public void setId(int id) {
?? this.id = id;
}
public String getName() {
?? return name;
}
public void setName(String name) {
?? this.name = name;
}
public int getAge() {
?? return age;
}
public void setAge(int age) {
?? this.age = age;
}
public Date getBirthday() {
?? return birthday;
}
public void setBirthday(Date birthday) {
?? this.birthday = birthday;
}
public String toString(){
?? return "id:" + id + ",name:" + name + ",age:" + age + "birthday: " + birthday;
}
}
PersonService代码:
package com.eagle.service;
import java.util.Date;
import java.util.List;
import com.eagle.bean.Person;
/**
*TODO web服务接口
*date:Jan 14,2010
*time:2:29:49 PM
*author:wxj
*email:jxauwxj@126.com
*/
public interface PersonService {
/**
* 返回一个String类型
* @param name
* @return
*/
public String sayHello(String name);
/**
* 返回一个int类型
* @return
*/
public int getAge();
/**
* 返回一个Date类型
* @return
*/
public Date getBirthday();
/**
* 返回一个自定义类型
* @return
*/
public Person getPerson();
/**
* 返回一个复杂类型
* @return
*/
public List<Person> getPersons();
}
PersonServiceImpl代码:
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
*TODO web服务接口实现类
*date:Jan 14,2010
*time:2:29:49 PM
*author:wxj
*email:jxauwxj@126.com
*/
public class PersonServiceImpl implements PersonService{
public int getAge() {
?? return (int) (Math.random() * 100);
}
public Date getBirthday() {
?? return new Date();
}
public Person getPerson() {
?? Person person = new Person();
?? person.setId(1);
?? person.setAge(60);
?? person.setName("china");
?? person.setBirthday(new Date());
?? return person;
}
public List<Person> getPersons() {
?? List<Person> persons = new ArrayList<Person>();
??
?? Person person1 = new Person();
?? person1.setId(1);
?? person1.setAge(60);
?? person1.setName("ls");
?? person1.setBirthday(new Date());
?? persons.add(person1);
??
?? Person person2 = new Person();
?? person2.setId(2);
?? person2.setAge(50);
?? person2.setName("bj");
?? person2.setBirthday(new Date());
?? persons.add(person2);
??
?? Person person3 = new Person();
?? person3.setId(3);
?? person3.setAge(56);
?? person3.setName("ww");
?? person3.setBirthday(new Date());
?? persons.add(person3);
??
?? return persons;
}
public String sayHello(String name) {
?? return "hello," + name + ",welcome to xfire";
}
}
3. 注册web 服务,File --> new --> other --> MyEclipse --> Web Services --> 选择XFire,选择
?? create web service from Java bean(Bottom-up scenario) --> next --> 输入服务名
--> 选择Service interface,Service impl. class --> fininsh
在services.xml中生成:
<service>
?? <name>personService</name>
?? <serviceClass>com.eagle.service.PersonService</serviceClass>
?? <implementationClass>
??? com.eagle.service.PersonServiceImpl
?? </implementationClass>
?? <style>wrapped</style>
?? <use>literal</use>
?? <scope>application</scope>
</service>
4. 部署到tomcat,并启动服务器,在浏览器输入http://localhost:9999/xfire/services,出现
Available Services:
?? *personService [wsdl]
?? 点击其可看到描述服务的xml,复制其url,可以MyEclipse中的Web Service Explorer中测试

-----------------------------------------------------------------
也可以不使用向导,
方法二:步骤如下:
1.创建一个普通的web工程,加入xfire相关jar包
2.在web.xml中加入
????????? <servlet>
???? <servlet-name>XFireServlet</servlet-name>
???? <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
???? <load-on-startup>0</load-on-startup>
????????? </servlet>
?? <servlet-mapping>
????? <servlet-name>XFireServlet</servlet-name>
????? <url-pattern>/services/*</url-pattern>
?? </servlet-mapping>
3.在src下新建META-INF/xfire/文件夹,再新建一个services.xml
放在src/META-INF/xfire/文件夹下
4.写一个接口HelloService,和一个接口的实现类HelloServiceImpl
5.注册web服务,在services.xml中加入
<service>
?? <name>helloService</name>
?? <serviceClass>com.eagle.service.HelloService</serviceClass>
<implementationClass>
??? com.eagle.service.HelloServiceImpl
?? </implementationClass>
?? <style>wrapped</style>
?? <use>literal</use>
?? <scope>application</scope>
</service>
6.访问:http://localhost:9999/xfiretest/services即可