大家好,今天我要介绍的现实 webservice 的一种技术—— CXF
由于本人是一个菜鸟,所以下面所做的都是一些简单的小例子!希望能帮到有需要的同学!好了,废话就不多说了,直接进入正题!
开发环境: myeclipse8.5 + tomcat6.0 + jdk1.6
CXF 版本: apache-cxf-2.3.5.zip (在这里介绍一个下载包的网址给大家: http://www.jar114.com )
把 apache-cxf-2.3.5.zip 解压出来后,如下图所示目录:(不做解析了)
下面所作的小例子都用到 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 能如下显示的,证明服务器已经发布成功!
新建一 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 能如下显示的,证明服务器已经发布成功!
新建一 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 !
到这,就完成了现实 CXF 的 2 种不同方法!!接下来和大家一起完成 CXF 整合 Spring 的小例子!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。