WebService一之快速入门

最近工作需要用到webservice,对WebService相关知识进行了搜集整理,总结记录一下。

一.常用的WebService框架

1、JWS是Java语言对WebService服务的一种实现,用来开发和发布服务。而从服务本身的角度来看JWS服务是没有语言界限的。但是Java语言为Java开发者提供便捷发布和调用WebService服务的一种途径。

2、Axis2是Apache下的一个重量级WebService框架,准确说它是一个Web Services / SOAP / WSDL 的引擎,是WebService框架的集大成者,它能不但能制作和发布WebService,而且可以生成Java和其他语言版WebService客户端和服务端代码。这是它的优势所在。但是,这也不可避免的导致了Axis2的复杂性,使用过的开发者都知道,它所依赖的包数量和大小都是很惊人的,打包部署发布都比较麻烦,不能很好的与现有应用整合为一体。但是如果你要开发Java之外别的语言客户端,Axis2提供的丰富工具将是你不二的选择。

3、XFire是一个高性能的WebService框架,在Java6之前,它的知名度甚至超过了Apache的Axis2,XFire的优点是开发方便,与现有的Web整合很好,可以融为一体,并且开发也很方便。但是对Java之外的语言,没有提供相关的代码工具。XFire后来被Apache收购了,原因是它太优秀了,收购后,随着Java6 JWS的兴起,开源的WebService引擎已经不再被看好,渐渐的都败落了。

4、CXF是Apache旗下一个重磅的SOA简易框架,它实现了ESB(企业服务总线)。CXF来自于XFire项目,经过改造后形成的,就像目前的Struts2来自WebWork一样。可以看出XFire的命运会和WebWork的命运一样,最终会淡出人们的视线。CXF不但是一个优秀的Web Services / SOAP / WSDL 引擎,也是一个不错的ESB总线,为SOA的实施提供了一种选择方案,当然他不是最好的,它仅仅实现了SOA架构的一部分。
注:对于Axis2与CXF之间的关系,一个是Axis2出现的时间较早,而CXF的追赶速度快。


如何抉择: 
1、如果应用程序需要多语言的支持,Axis2 应当是首选了; 
2、如果应用程序是遵循 Spring 哲学路线的话,Apache CXF 是一种更好的选择,特别对嵌入式的 Web Services 来说; 
3、如果应用程序没有新的特性需要的话,就仍是用原来项目所用的框架,比如 Axis1,XFire,Celtrix或 BEA 等等厂家自己的 Web Services 实现,就别劳民伤财了。

二.快速搭建WebService服务

在jdk1.6中就自带了WebService的实现,用jdk自带的WebService组件jax-ws搭建WebService服务。

服务端

1.新建一个java 工程

2.定义接口

import javax.jws.WebService;

@WebService
public interface MyService {
	
	String sayHello(String name);

}

3.定义实现类:

import javax.jws.WebService;

@WebService
public class MyServiceImpl implements MyService {

	@Override
	public String sayHello(String name) {
		 return "Hello:"+name;
	}

}

4.服务端发布程序:

import javax.xml.ws.Endpoint;

public class WebServicePublish {
	
	public static void main(String[] args) {
		
		String address = "http://localhost:8989/Service/jdkService";
		Endpoint.publish(address, new MyServiceImpl());
	    System.out.println("Service success!");
		
	}

}

打开浏览器,输入:http://localhost:8989/Service/jdkService?wsdl,可以看到生成的wsdl文件。

客户端

1.再新建一个java工程

2.利用jdk自带的wsimport命令,来生成客服端的WebService代码。

打开cmd,执行命令:

wsimport -s E:\code\java\webservice\JdkClient1\src -p com.cxf.client -keep http://localhost:8989/Service/jdkService?wsdl

这里,“E:\code\java\webservice\JdkClient1\src”为你的java工程的src目录,“com.cxf.client”为要生成的包。

执行后,刷新一下src目录,可以看到新生成了对应的文件。

3.编写测试类:

public class ServiceTest {
	
	public static void main(String[] args) {
		//创建工厂
		MyServiceImplService factory = new MyServiceImplService();
		//工厂生成实例
		MyServiceImpl msImpl =  factory.getMyServiceImplPort();
		//调用实例方法
		String result = msImpl.sayHello("java");
		System.out.println(result);
		
	}

}

运行,可以看到结果:

Hello:java

参考:

https://www.cnblogs.com/zhuyiqizhi/p/6045638.html

https://www.cnblogs.com/fengwenzhee/p/6915606.html

猜你喜欢

转载自blog.csdn.net/w450093854/article/details/84561549