简单的两个webservice之间的通信

1、分别创建两个Maven project,结构如下:

简单的两个webservice之间的通信_第1张图片

2、webservice_client_demo项目中的pom.xml内容如下:


	4.0.0

	com.baidu.webservice_client_demo
	webservice_client_demo
	0.0.1-SNAPSHOT
	jar

	webservice_client_demo
	http://maven.apache.org

	
		UTF-8
	

	
		
		
			org.apache.cxf
			cxf-rt-frontend-jaxws
			3.0.10
		

		
		
			org.apache.cxf
			cxf-rt-transports-http-jetty
			3.0.10
		

		
			org.glassfish.main.javaee-api
			javax.jws
			3.1.2
		


		
			junit
			junit
			3.8.1
			test
		
	
	
		
			
				
					org.apache.maven.plugins
					maven-compiler-plugin
					3.2
					
						1.8
						1.8
						UTF-8
						true
					
				
			
		
	

3、webservice_demo项目中的pom.xml内容如下:


	4.0.0

	com.baidu.webservice_demo
	webservice_demo
	0.0.1-SNAPSHOT
	jar

	webservice_demo
	http://maven.apache.org

	
		UTF-8
	

	
		
		
			org.apache.cxf
			cxf-rt-frontend-jaxws
			3.0.10
		

		
		
			org.apache.cxf
			cxf-rt-transports-http-jetty
			3.0.10
		


    org.glassfish.main.javaee-api
    javax.jws
    3.1.2



		
			junit
			junit
			3.8.1
			test
		
	
	
		
			
				
					org.apache.maven.plugins
					maven-compiler-plugin
					3.2
					
						1.8
						1.8
						UTF-8
						true
					
				
			
		
	

4、在webservice_demo创建一个接口供外部调用,HelloService、HelloServiceImpl、Server内容分别如下:

简单的两个webservice之间的通信_第2张图片

package com.baidu.service;

import javax.jws.WebService;

//对外发布服务的接口
@WebService
public interface HelloService {
//对外部服务的接口的方法
	public String say(String name);
}
package com.baidu.service.impl;

import com.baidu.service.HelloService;

public class HelloServiceImpl implements HelloService{

	public String say(String name) {
		return name+",How are you .";
	}

}
package com.test;

import org.apache.cxf.jaxws.JaxWsServerFactoryBean;

import com.baidu.service.impl.HelloServiceImpl;

public class Server {
	public static void main(String[] args) {
		//发布服务的工厂
		JaxWsServerFactoryBean factory =new JaxWsServerFactoryBean();
		//设置服务地址(访问方式:http://localhost:8000/baidu/hello?wsdl)
		factory.setAddress("http://localhost:8000/baidu/hello");
		
		//设置服务类
		factory.setServiceBean(new HelloServiceImpl());
		
		//发布服务
		factory.create();
		
		System.out.println("发布服务成功,服务启动了等待调用……");
		
	}
}

 

5、webservice_client_demo单独作为一个项目来调用webservice_demo提供的一个接口,HelloService、Client内容如下:

简单的两个webservice之间的通信_第3张图片

package com.baidu.service;

import javax.jws.WebService;

//对外发布服务的接口
@WebService
public interface HelloService {
//对外部服务的接口的方法
	public String say(String name);
}
package com.baidu.client;

import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;

import com.baidu.service.HelloService;

public class Client {
	public static void main(String[] args) {
		//创建cxf代理工厂
		JaxWsProxyFactoryBean factory =new JaxWsProxyFactoryBean();
		
		//设置远程访问服务端地址
		factory.setAddress("http://localhost:8000/baidu/hello");
		
		//设置接口类型
		factory.setServiceClass(HelloService.class);
		
		//对接口生成代理对象
		HelloService helloService = factory.create(HelloService.class);
		
		//代理对象
		System.out.println(helloService.getClass());
		
		//远程访问服务端方法
		String content = helloService.say("Tom");
		
		System.out.println(content);
		
	}
}

6、代码完成了,接下来开始启动测试,先启动webservice_demo中Server类,然后运行我们刚才定义的服务地址:http://localhost:8000/baidu/hello?wsdl

简单的两个webservice之间的通信_第4张图片

7、启动webservice_client_demo中的Client类,此时看eclipse控制台信息。

简单的两个webservice之间的通信_第5张图片

需要注意的细节:

1、本案例采用Apache CXF框架,需要引入相关依赖;

2、接口调用方需要定义被调用接口的全部信息,包括接口路径,这些信息要与被调用方的接口信息一致;

3、验证服务端接口是否发布成功需要在浏览器地址栏输入发布路径测试,注意链接后面接上?wsdl。

你可能感兴趣的:(webservice,soa,webservice,面向服务编程,soap,Apache,CXF,SOA)