微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

WebService-03-使用CXF开发服务端和客户端

写在前面的话


前面两节说了使用Java提供的包开发服务端和客户端,现在使用CXF来开发,CXF提供了两个类发而服务,一个是Serverfactorybean,另一个是JaxWsServerfactorybean,我们将分别使用这两个类发而一个简单的服务,并提供与JaxWsServerfactorybean类发布的服务的客户端。

JaxWsServerfactorybean方式

服务接口


package com.wds.ws.server.cxf;

import javax.jws.WebService;

/**
 * 此处必须添加@WebServer注解,若不添加,则发布的服务当中无任何方法
 * @author wds
 *
 */
@WebService
public interface HelloService {
	public String sayHello(String name);
}

服务实现


package com.wds.ws.server.cxf;

import java.util.Date;

/**
 * 服务实现类
 * @author wds
 *
 */
public class HelloServiceImpl implements HelloService {

	@Override
	public String sayHello(String name) {
		String s = new Date() + " " + name;
		System.out.println("Server:" + s);
		return s;
	}


}

发布类


package com.wds.ws.server.cxf;

import org.apache.cxf.jaxws.JaxWsServerfactorybean;

/**
 * 使用CXF的Serverfactorybean发布服务
 * @author wds
 *
 */
public class JaxWsServerfactorybeanPublish {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		//实例化Serverfactorybean
		JaxWsServerfactorybean factory = new JaxWsServerfactorybean();
		
		//发布服务的地址
		factory.setAddress("http://localhost:567/JaxWsServerfactorybeanHelloworld");
		
		//提供服务类的类型(接口类型)
		factory.setServiceClass(HelloService.class);
		
		//提供服务的实例
		factory.setServiceBean(new HelloServiceImpl());
		
		//发布服务
		factory.create();
	}

}

客户端


使用以下命令
wsdl2java -p com.wds.client.jaxws http://localhost:567/JaxWsServerfactorybeanHelloworld?wsdl
关于wsdl2java的命令在WebService-02中也有说过,此处增加了一p参数,此参数说明指定包结构,复制到客户端的工程中,测试类如下:

package com.wds.client.jaxws;


public class JaxWsClientTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		HelloServiceService factory = new HelloServiceService();
		HelloService hs = factory.getHelloServicePort();
		System.out.println(hs.sayHello("wds"));
	}

}


Serverfactorybean

服务的接口和实现与JaxWsServerfactorybean无特别大区别,只是无须写@WebService注解,发布类代码如下:

package com.wds.ws.server.cxf;

import org.apache.cxf.frontend.Serverfactorybean;

/**
 * 使用CXF的Serverfactorybean发布服务
 * @author wds
 *
 */
public class ServerfactorybeanPublish {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		//实例化Serverfactorybean
		Serverfactorybean factory = new Serverfactorybean();
		
		//发布服务的地址
		factory.setAddress("http://localhost:5678/ServerfactorybeanHelloworld");
		
		//提供服务类的类型
		factory.setServiceClass(HelloServiceImpl.class);
		
		//提供服务的实例
		factory.setServiceBean(new HelloServiceImpl());
		
		//发布服务
		factory.create();
	}

}

其与JaxWsServerfactorybean发布也很类似,只是在提供服务类的类型时,此处指定了实现类。

客户端的编写方式与JaxWsServerfactorybean方式相同,不在详细列出。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐