Java cfx exampple

cfx 是 java 平台下非常优秀的WebService框架,今天上手学习了一下,写了一个例子分享给大家。

cfx 官网:http://cxf.apache.org/ 

开发环境:

MyEclipse10+JDK7.0+cfx3.0.3+Win7

1.接口 - CalculatorService

package com.test.service;

import javax.jws.WebService;
import com.test.domain.*;

@WebService
public interface CalculatorService {
	
	public int Add(int x,int y);
	
	public boolean Validate(User user);
	
}

2.实现接口

package com.test.service.impl;
import javax.jws.WebService;

import com.test.domain.User;
import com.test.service.*;

@WebService(endpointInterface="com.test.service.CalculatorService",serviceName="calculator")
public class CalculatorServiceImpl implements CalculatorService {

	public int Add(int x, int y) {
		// TODO Auto-generated method stub
		return x + y;
	}

	public boolean Validate(User user) {
		// TODO Auto-generated method stub
		return user.getId() > 0;
	}
}

3.服务端

import javax.jws.WebService;
import javax.xml.ws.Endpoint;

import com.test.service.*;
import com.test.service.impl.*;

@WebService
public class Server {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("web service start");
		CalculatorService implementor = new CalculatorServiceImpl();
		String address = "http://localhost:8888/calculator"; //这是上面在注解中已经声明过的URL
        Endpoint.publish(address, implementor);
        System.out.println("web service started");
	}

}

4.关于jar包
由于不清楚哪些包会用到,把apache-cxf-3.0.3\lib下面的jar包全部导入到项目中,如果有人清楚这方面的内容,欢迎留言。

5.发布服务

注意:运行前确认服务端口(这里是8888)没有被占用,可以通过如下方式查看并关闭端口。

服务器console输出

访问webservice

6.客户端

我们使用wdsl2java工具帮助生成客户端辅助类。

在E:\MyEclipseProject\software\apache-cxf-3.0.3\bin生成一个com包

把这个com包导入到工程中(红色方框内是com包里面的内容)

import com.test.service.CalculatorService;
import com.test.service.User;

import com.test.service.impl.Calculator;


public class Client  {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		// TODO Auto-generated method stub
		Calculator calc = new Calculator();
        CalculatorService service = calc.getCalculatorServiceImplPort();
        int result = service.add(3, 7);
        System.out.println(result);
        /*
        User user = new User();
        user.setId(100);
        user.setName("justin");
        boolean r = service.validate(user);
        System.out.println("The user is "+ r);
        */
	}
}

7.运行客户端

运行结果正确!

8.总结:

1)如何传递对象还没有实现,有待进一步研究...

2)目前不确定哪些cxf jar 包是需要的.

3)红色输出非错误,是日志信息.

4)cxf 通常与spring 结合使用,还有待研究...

5)cxf 之前的版本都没有通过注解的方式实现,需要配置xml文件,这种方式后来被注解的方式取代(spring3.0出现之后),注解很强大,和.NET 很类似。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值