加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

WebService实战(一)——实现第一个CXF

发布时间:2020-12-16 22:35:22 所属栏目:安全 来源:网络整理
导读:? ?? ? ? 一、配置环境 ? ? 1.下载CXF的api,并解压到本地 ? ? 2.添加环境变量:CXF_HOME ? ? 3.Path变量末尾:%CXF_HOME%bin; ? ? 4.ClassPath变量末尾添加:%CXF_HOME%libcxf-manifest.jar; ? ?? ? ? 二、创建服务端 ? ? 1.建立java项目。 ? ? 2.引入cxf依

? ??

? ? 一、配置环境


? ? 1.下载CXF的api,并解压到本地

? ? 2.添加环境变量:CXF_HOME

? ? 3.Path变量末尾:%CXF_HOME%bin;

? ? 4.ClassPath变量末尾添加:%CXF_HOME%libcxf-manifest.jar;

? ??


? ? 二、创建服务端


? ? 1.建立java项目。

? ? 2.引入cxf依赖包。

? ??

? ? 3.创建服务类

package com.tgb.cxf.server;

import javax.jws.WebService;
import javax.xml.ws.BindingType;

@WebService
//使用SOAP2协议
@BindingType(value=javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING)
public class HelloService {
	
	public String sayHello(String name){
		return "hello" +name;
	}
}

? ? 4.发布服务

? ??

? ? ? ? ?用两个不同的类发布应用:

? ? ServerFactoryBean(不需要使用@webservice)生成的文档不规范,不建议使用

? ? JaxWsServerFactoryBean(建议使用此类,需要使用@webservice)生成的文档不规范,可以发SOAP1.1SOAP1.2的协议,当cxf的服务类中没有方法时也可以发布成功,不报错。如果使用SOAP1.2需要用@BindType注解;使用SOAP1.2wsimport命令失效,需要使用cxfwsdl2java

? ? 建议:发布服务的时候使用SOAP1.2,客户端调用的时候使用SOAP1.1

package com.tgb.cxf.server;

import org.apache.cxf.frontend.ServerFactoryBean;
import org.apache.cxf.interceptor.LoggingInInterceptor;
import org.apache.cxf.interceptor.LoggingOutInterceptor;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;

public class MyCXFServer {
	
	public static void main(String[] args) {
		//1.创建服务工厂对象
		//ServerFactoryBean sfBean = new ServerFactoryBean();
	        JaxWsServerFactoryBean sfBean = new JaxWsServerFactoryBean();	    
	        //加入输入输出拦截器
	        sfBean.getInInterceptors().add(new LoggingInInterceptor());
	        sfBean.getOutInterceptors().add(new LoggingOutInterceptor());	    
		//2.指定服务地址
		sfBean.setAddress("http://127.0.0.1:5550/hello");
		//3.设置服务类
		sfBean.setServiceClass(HelloService.class);
		//4.设置服务类的实例对象
		sfBean.setServiceBean(new HelloService());
		//5.发布服务
		sfBean.create();
		System.out.println("server ready...");
	}
}

? ? 发布服务后,在浏览器输入地址:http://127.0.0.1:5550/hello?wsdl,可以看到发布的wsdl文档。


? ? 三、生成代码


? ? 使用wsdl2java命令生成java文件

? ??

? ??

? ? 四、创建客户端


? ? 1.新建java项目

? ? 将新生成的代码拷到客户端文件中。

? ? 2.调用服务? ??

package com.tgb.cxf.client;

import com.tgb.cxf.server.HelloService;
import com.tgb.cxf.server.HelloServiceService;

public class Soap12Client {
	
	public static void main(String[] args) {
		HelloServiceService hsService = new HelloServiceService();
		HelloService hs = hsService.getHelloServicePort();
		String result = hs.sayHello("jiangxiao");
		System.out.println(result);
	}
}

? ? 运行代码:

? ??

? ? 说明调用成功!


? ? 总结:

? ? webservice和我们当初学习过的wcf机制是差不多的,只有我们只要知道远程访问的类的地址和接口,就可以顺利调用到远程类的方法。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读