webservice之jax-ws实现方式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36720650/article/details/88667459

1.什么是webservice?

webservice是一种远程资源调用技术,它的实现方式主要分为两种,第一种是jaxws方式,它是面向方法的,它的数据类型是xml是基于soap实现传输;第二种是jaxrs方式,它是面向资源的,它的数据类型是xml或json是基于http协议实现传输。

2.jaxws简单应用

  服务端:

第一步:创建一个简单的web项目,略

  

第二步:添加webService的依赖jar包,配置web.xml

      <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-frontend-jaxws</artifactId>
        <version>3.0.1</version>
    </dependency>
<servlet>
   <servlet-name>CXFService</servlet-name>
   <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
   <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
   <servlet-name>CXFService</servlet-name>
   <url-pattern>/services/*</url-pattern>
</servlet-mapping>     

第三步:编写代码

//接口定义
@WebService
public interface ServiceUI {
	@WebMethod
	String sayHello(String name);
	@WebMethod
	List<Car> fingCarsByUser(User user);
}
//接口实现
@WebService(endpointInterface="cn.linc.cxf.interfaces.ServiceUI",serviceName="userService")
public class ServiceUIImpl implements ServiceUI {
	public String sayHello(String name) {
		return "hello  "+name ;
	}
	public List<Car> fingCarsByUser(User user) {
		if ("xiaoming".equals(user.getUsername())) {
			List<Car> cars = new ArrayList<Car>();
			Car car1 = new Car();
			car1.setId(1);
			car1.setCarName("大众");
			car1.setPrice(200000d);
			cars.add(car1);

			Car car2 = new Car();
			car2.setId(2);
			car2.setCarName("现代");
			car2.setPrice(170000d);
			cars.add(car2);

			return cars;
		} else {
			return null;
		}
	}
}

 第四步:启动项目,查看wsdl说明书

 这里面的路径注意cxf在web中的配置:{在配置tomcat时注意项目名的配置,我这里没有配置}

参数说明:

@WebService:在接口上申明,表示该接口是一个webService服务;
@WebMethod:在接口方法上声明,表示该方法是一个webService服务方法;

@WebService(endpointInterface="cn.linc.cxf.interfaces.ServiceUI",serviceName="userService"):在该接口实现类定义;

endpointInterface:表示接口服务终端接口名;
serviceName:服务名称;
wsdl解读:有五个节点:服务视图,服务协议和参数的描述,服务实现,参数描述,参数类型描述。
客户端:

第一步:根据生成的wsdl文档生成客户端代码,并放置在一个新建的客户端项目中;

生成命令:wsimport -s '存放路径' 'wsdl路径'

第二步:配置webService的客户端

<jaxws:client id="serviceUi" address="http://127.0.0.1:8080/cxf-jax-ws-spring-server/services/serviceUi?wsdl" serviceClass="cn.linc.cxf.interfaces.ServiceUI">
	</jaxws:client>

第三步:编写测试类

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:applicationContext.xml")
public class TestDemo {
	@Autowired
	public ServiceUI serviceUi;

	@Test
	public void demo(){
		String  s = serviceUi.sayHello("凯迪拉克");
		System.out.println(s);
	}

} 
效果展示:

原理解析:
  可以分为三个角色:服务提供者,服务消费者,服务注册中心uddi
  首先由服务提供者发布服务并且在注册中心uddi进行注册
  然后由服务消费者订阅服务,在注册中心uddi上查询到符合条件的服务
  服务注册中心返回服务条件服务的描述文件给服务订阅者
  订阅者根据描述文件进行服务端的服务调用,并返回数据。

 


猜你喜欢

转载自blog.csdn.net/qq_36720650/article/details/88667459