使用CXF开发WebService服务器端和客户端[案例]

Web Servce能解决的问题:

      1、远程调用

      2、跨平台调用

      3、语言调用

Web Servce实际用途:

      1、同意公司的新旧系统整合;

      2、不同公司的业务整合;

      3、内容聚合;

本次使用号称SOA框架的CXF(Xfire + Celtrix ← 具体请找度娘)来写一个Web Service的例子。

预备:

      1、eclipse

      2、apache-cxf-2.1.4(不要在意版本)

Web Service服务器端(PS:CXF内置一个Jetty Web服务器):

      1、创建一个java projact(普通的java项目,由于这只是个例子文件夹结构名字什么的随意就好√),需要添加CXF的jar包↓
       
 

      2、写一个web service接口,该接口要用@WebService修饰

package org.night;

import javax.jws.WebService;

@WebService
public interface HelloWord {
	String sayHi(String name);
}
 

      3、写一个该接口的实现类,同样需要@WebService修饰(serviceName是自定义的,并不是非要和实现类一样名)

package org.night.impl;

import java.util.Date;

import javax.jws.WebService;

import org.night.HelloWord;

@WebService(endpointInterface="org.night.HelloWord", serviceName="HelloWordImpl")
public class HelloWordImpl implements HelloWord{
	@Override
	public String sayHi(String name) {
		return name + " 你好" + " 时间:" + new Date();
	}
}
 

      4、发布,创建一个类,main调用Endpoint.publish(address, implementor),第一个参数是自己的应用地址

package org.night.N;

import javax.xml.ws.Endpoint;

import org.night.HelloWord;
import org.night.impl.HelloWordImpl;

public class ServiceMain {
	public static void main(String[] args) {
		HelloWord hw = new HelloWordImpl();
		//调用Endpoint.publish()发布WebService
		Endpoint.publish("http://192.168.1.101/nightWebService", hw);
		System.out.println("Web Service Run");
	}
}

      运行↓
      

      在浏览器上输入服务器端的绑定的地址+?+wsdl会出现↓↓↓↓↓↓↓↓↓↓↓↓

      
 

Web Service客户端:

      1、新创建一个java projact

      

      2、打开控制台找到客户端的src路径,调用CXF提供的wsdl2java工具(在根目录bin文件夹下面)↓如图

           
            

      3、经过以上步骤,客户端会自动生成代码↓
           

         找到wsdl2java生成的Service接口的实现类,嘛~其实就是对应服务器实现业务借口的实现类,只是因为这里服务器端也是自己开发的,所以很容易知道~

         
          
      4、写一个类调用Service子类的实例的get**Port()(**为实现类名)方法,会返回远程Web Service的代理,则可调用服务器端的方法↓

           

猜你喜欢

转载自reverienight.iteye.com/blog/2202977