首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 企业软件 > 行业软件 >

2种实现CXF步骤例子

2013-11-08 
2种实现CXF方法例子???下面所作的小例子都用到lib文件夹下面的包(不介意的话就全部加进项目里)!?新建一web

2种实现CXF方法例子

?

?

?

下面所作的小例子都用到lib文件夹下面的包(不介意的话就全部加进项目里)!

?

新建一web项目,名称叫HelloWorldCXF

建一包:com.cxf.dao,在该包下新建一接口,命名为:HelloWorld,代码如下:

?

package com.cxf.dao;

?

import javax.jws.WebService;

?

@WebService

public interface HelloWorld {

??

?? public String sayHello(String username);??

???

}

?

建一包:com.cxf.service,在该包下新建一个类,命名为:HelloWorldImpl,代码如下:

?

package com.cxf.service;

?

import javax.jws.WebService;

?

import com.cxf.dao.HelloWorld;

@WebService

public class HelloWorldImpl?implements HelloWorld {

?

?????? public String sayHello(String username) {

??? System.out.println("say hello is called!");

?????? return "Hello" + username;

??????

?????? }

?

}

?

新建一测试包:com.cxf.action,在该包下建一个类,类名为:HelloTest,代码如下:

?

package com.cxf.action;

?

import org.apache.cxf.endpoint.Server;

import org.apache.cxf.jaxws.JaxWsServerFactoryBean;

?

import com.cxf.service.HelloWorldImpl;

?

?

public class HelloTest {

?

??? public static void main(String[] args) {

?

???? JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean();

?????? // Web服务的地址

?????? factoryBean.setAddress("http://localhost:8081/hello");

?????? // Web服务对象调用接口

?????? factoryBean.setServiceClass(HelloWorldImpl.class);

?????? Server server = factoryBean.create();

?????? server.start();

??? }

?

}

?

执行代码后,在浏览器打开:http://localhost:8081/hello?wsdl 能如下显示的,证明服务器已经发布成功!

?

2种实现CXF步骤例子

?

?

新建一web项目,名称叫HelloWorldCXFClient

新建一个包,这个包的名称和服务器包的名称一样的:com.cxf.dao,里面的接口和方法也必须和服务器的一样:

?

package com.cxf.dao;

?

import javax.jws.WebService;

?

@WebService

public interface Hello {

??? //这里的接口方法必须跟服务器接口里面的方法一致

??? ?? public String sayHello(String username);??

???

}

?

?

新建一个测试类:代码如下

?

import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;

?

import com.cxf.dao.Hello;

?

public class ClientTest {

??? public static void main(String []trgs){

?????? JaxWsProxyFactoryBean factoryBean = new JaxWsProxyFactoryBean();

?????? //获取服务器端

?????? factoryBean.setAddress("http://localhost:8081/hello");

?????? //通过客户端的接口获取服务器端的接口

?????? factoryBean.setServiceClass(Hello.class);

??????

?????? Hello hello =(Hello) factoryBean.create();

?????? System.out.println(hello.sayHello("和谐dota"));

??????

??? }

???

}

?

执行代码,控制台能打印出:Hello和谐dota!

到这,一个完整的CXF小例子就完成了!

?

不知道大家有没有注意到,上面的接口和现实类都存在有一个标签:@WebService

这个标签的作用是:指明接口是Web 服务

?

当然你也可以不用这个方式去实现,直接用手动的去进行指明也是可以的!!下面就是用手动这种方式现实功能的,希望大家能找出这2个方法的不同之处!

?

?

?

新建一web项目,名称叫HelloWorldCXF

建一包:com.cxf.dao,在该包下新建一接口,命名为:HelloWorld,代码如下:

?

package com.cxf.dao;

?

import javax.jws.WebService;

?

public interface HelloWorld {

??

?? public String sayHello(String username);??

???

}

?

建一包:com.cxf.service,在该包下新建一个类,命名为:HelloWorldImpl,代码如下:

?

package com.cxf.service;

?

import javax.jws.WebService;

?

import com.cxf.dao.HelloWorld;

?

public class HelloWorldImpl?implements HelloWorld {

?

?????? public String sayHello(String username) {

??? System.out.println("say hello is called!");

?????? return "Hello" + username;

??????

?????? }

?

}

?

新建一测试包:com.cxf.action,在该包下建一个类,类名为:HelloTest,代码如下:

?

package com.cxf.action;

?

import org.apache.cxf.endpoint.Server;

import org.apache.cxf.jaxws.JaxWsServerFactoryBean;

?

import com.cxf.service.HelloWorldImpl;

?

?

public class HelloTest {

?

??? public static void main(String[] args) {

?

?????? //发布服务器

ServerFactoryBean factoryBean = new ServerFactoryBean();

?????? // 获取Web服务的地址

?????? factoryBean.setAddress("http://localhost:8080/hello");

?????? // Web服务对象调用接口

?????? factoryBean.setServiceClass(Hello.class);

?????? // Web服务对象调用实现接口类

?????? HelloImpl hello = new HelloImpl();

?????? factoryBean.setServiceBean(hello);

?????? // 发布web服务器

?????? factoryBean.create();

??? }

?

}

?

执行代码后,在浏览器打开:http://localhost:8081/hello?wsdl 能如下显示的,证明服务器已经发布成功!

2种实现CXF步骤例子

?

?

?

?

新建一web项目,名称叫HelloWorldCXFClient

新建一个包,这个包的名称和服务器包的名称一样的:com.cxf.dao,里面的接口和方法也必须和服务器的一样:

?

package com.cxf.dao;

?

import javax.jws.WebService;

?

public interface Hello {

??? //这里的接口方法必须跟服务器接口里面的方法一致

??? ?? public String sayHello(String username);??

???

}

?

?

新建一个测试类:代码如下

?

import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;

?

import com.cxf.dao.Hello;

?

public class ClientTest {

??? public static void main(String []trgs){

?

//客户端对象

?????? ClientProxyFactoryBean factoryBean = new ClientProxyFactoryBean();

?????? //获取服务器端

?????? factoryBean.setAddress("http://localhost:8080/hello");

?????? //通过客户端的接口获取服务器端的接口

?????? factoryBean.setServiceClass(Hello.class);

??????

?????? Hello hello ;

?????? hello =(Hello) factoryBean.create();

?????? System.out.println(hello.sayHello("和谐dota"));

??????

??? }

???

}

?

执行代码,控制台能打印出:Hello和谐dota!

热点排行