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代码:
package com.eagle.service;
import java.util.ArrayList;
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 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>