XFire的webservice应用

XFire是很流行的webService框架和其他Web服务引擎相比,XFire的配置非常简单,可以非常容易地和Spring集成。

XFire是codeHaus组织提供的一个开源框架,它构建了POJO和SOA之间的桥梁,主要特性就是支持将POJO通过非常简单的方式发布成Web服务,这种处理方式不仅充分发挥了POJO的作用,简化了Java应用转化为Web服务的步骤和过程,也直接降低了SOA的实现难度,为企业转向SOA架构提供了一种简单可行的方式。

开始建立一个简单的web服务端项目。

1、新建web项目,下载xfire-distribution-1.2.6.zip,百度搜索即可,官网也行。把jar包都导入web项目。
这里写图片描述
建立User类,

package shjh.xfire.domain;

import java.util.Date;

public class User {
    private Long userId;
    private String accountId;
    private String userName;
    private Date lastLogin;

    public Long getUserId() {
        return userId;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    public String getAccountId() {
        return accountId;
    }

    public void setAccountId(String accountId) {
        this.accountId = accountId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public Date getLastLogin() {
        return lastLogin;
    }

    public void setLastLogin(Date lastLogin) {
        this.lastLogin = lastLogin;
    }

}

UserService类,用作对外接口

package shjh.xfire.service;

import shjh.xfire.domain.User;

public interface UserService {
    public User queryUserByAccoutId(String accountId);

    public void createUser(User user);
}

建立UserServiceImpl类,是接口实现类,对外透明。

package shjh.xfire.service.impl;

import java.util.Date;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import shjh.xfire.domain.User;
import shjh.xfire.service.UserService;

public class UserServiceImpl implements UserService {
    private static final Log log = LogFactory.getLog(UserServiceImpl.class);

    @Override
    public User queryUserByAccoutId(String accountId) {
        log.info("accountId=" + accountId);  
        User user = new User();  
        user.setAccountId(accountId);  
        user.setLastLogin(new Date());  
        user.setUserId(new Long(123L));  
        user.setUserName("用户名");  
        return user;  
    }

    @Override
    public void createUser(User user) {
        log.debug("createUser user=" + user);  
        System.out.println("createUser " + user.getAccountId());
    }

}

编写一个services.xml文件,这里写图片描述默认的路径就是这个,不然会报错文件找不到。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
    <name>UserService</name>
    <serviceClass>shjh.xfire.service.UserService</serviceClass>
    <implementationClass>shjh.xfire.service.impl.UserServiceImpl</implementationClass>
</service>
</beans>

web.xml中配置org.codehaus.xfire.transport.http.XFireConfigurableServlet,框架提供的servlet

<servlet>
        <servlet-name>XFireServlet</servlet-name>
        <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>  
    <servlet-mapping>
        <servlet-name>XFireServlet</servlet-name>
        <url-pattern>/services/*</url-pattern>
    </servlet-mapping>

2、tomcat中启动项目,浏览器http://localhost:8080/xfire/services/UserService?wsdl
,就能看到wsdl文件了,说明发布成功。

3、建立客户端Java项目。这里写图片描述
建立和server端一样的接口UserService,
建立调用测试类Main,

package cfireClient.test;

import java.net.MalformedURLException;

import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;

import shjh.xfire.domain.User;
import shjh.xfire.service.UserService;

public class Main {
    public static void main(String[] args) {
        String serviceUrl  = "http://localhost:8080/xfire/services/UserService";
        Service serviceModel = new ObjectServiceFactory().create(UserService.class);
        try {
            UserService userService = (UserService) new XFireProxyFactory().create(serviceModel, serviceUrl);
            User user = new User();
            user.setAccountId("1341");
            userService.createUser(user);
            User query = userService.queryUserByAccoutId("1341");
            System.out.println(query.getAccountId() + " --> " + query.getUserName());
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
    }
}

运行main方法就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值