CXF 简单实例

最近学习了点webservice相关知识,为了以后可以及时参考,写个简单实例放着:
服务端:

现建立一个接口:
import javax.jws.WebParam;
import javax.jws.WebService;

/**
 *
 * @author hjglddok
 */
@WebService
public interface ServerInterface {

    public Person getPerson();

    public void setPerson(Person person);

//当然这里可以不用@WebParam,但是,当转换成wsdl文件时,是以arg[0..]命名
    public Person show(@WebParam(name="name") String name,@WebParam(name="pass") String pass,@WebParam(name="count") int count);

}

接着实现:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.hjglddok.service;

import javax.jws.WebService;

/**
 *
 * @author hjglddok
 */
@WebService(endpointInterface="com.hjglddok.service.ServerInterface",serviceName="serv")
public class WebServer implements ServerInterface{

    private Person person;

    @Override
    public Person getPerson() {
        return person;
    }

    @Override
    public void setPerson(Person person) {
        this.person = person;
    }

    @Override
    public Person show(String name, String pass, int count) {
        this.person = new Person();
        person.setName(name);
        person.setPass(pass);
        person.setCount(count);
        return person;
    }

}

还有一个Person类:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.hjglddok.service;

/**
 *
 * @author hjglddok
 */
/**
* 这里为普通类不需要注入@WebService信息,CXF会自动处理。
*/
public class Person {

    private String name;
    private String pass;
    private int count;

    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPass() {
        return pass;
    }

    public void setPass(String pass) {
        this.pass = pass;
    }
}

最后当然要发布了:
package com.hjglddok.service;

import javax.xml.ws.Endpoint;

/**
 *
 * @author hjglddok
 */
public class Main {

    public Main() {
    }

//还有一种更灵活的配置方法,当这个最简单
    public static void main(String[] args){
        System.out.println("Server start...");
        WebServer server = new WebServer();
        Endpoint.publish("http://localhost:8080/show", server);       
    }

}

客户端如下:
package com.hjglddok.client;

import com.hjglddok.web.Person;
import com.hjglddok.web.ServerInterface;
import java.util.logging.Level;
import java.util.logging.Logger;

import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;

/**
 *
 * @author hjglddok
 */
public class ClientMain {

    public static void main(String[] args){
        try {
        JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
        factory.setServiceClass(ServerInterface.class);
        factory.setAddress("http://localhost:8080/show");

        ServerInterface client = (ServerInterface)factory.create();

        Person p = new Person();
        p.setName("liu");
        p.setPass("dan");
        p.setCount(1);
        client.setPerson(p);

     //下面两句我是想试试webservice是否是有状态。事实上是有状态请求
        Person per = client.getPerson();
        System.out.println(per.getName());

        Person person = client.show("aguang","liudan",56);
        System.out.println(person.getName());
        System.out.println(person.getPass());
        System.out.println(person.getCount());

        } catch (Exception ex) {
            Logger.getLogger(ClientMain.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

}

以上cxf应用还是相对简单。当然也可以集成到spring环境中,还有一点以上应用可以在非web容器中运行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值