1 使用 CXF 实现一个简单的 WEB SERVICE
首先介绍如何用 CXF 实现一个基本的 hello world
首先到 apache 官网去下载 CXF 的开发 jar 包
创建 cxf webservice 服务器端普通 java 项目,叫做 HelloCxfServer,把必须用到的 jar 文件通过构建路径引入,为了省事,可以直接把所有的 jar 引入
此处注意:如果是 jdk1.6 启动服务器会发生如下错误
JAXB 2.1 API is being loaded from the bootstrap classloader, but this RI (from
jar:file:/E:/javaLib/cxf_all_jar/jaxb‐impl‐2.2.1.1.jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class)
needs 2.2 API. Use the endorsed directory mechanism to place jaxb‐api.jar in the bootstrap classloader.
这是由于 jdk1.6 的 jar 包和 cxf 的 jar 包冲突造成的,需要把 cxf lib 中的 endorsed 目录拷入到 D:\Program Files\Java\jdk1.6.0\jre\lib 目录下创建一个接口 HelloWorld 和一个实现类 HelloWorldImpl,只提供一个成员方法,叫做 sayHello,给接口和实现类添加注解@WebService,这是最基本的注解
/test/HellWorld.java 源码 package test; import javax.jws.WebService; @WebService public interface HelloWorld { String sayHello(String name); } /test/HelloWorldImpl.java 源码 package test; import javax.jws.WebService; @WebService public class HelloWorldImpl implements HelloWorld { @Override public String sayHello(String name) { System.out.println("sayHello方法被调用..."); return "hello," + name; } }
CXF 自带了一个 Web Service 容器 Jetty,这是一个 WEB 容器,类似于 tomcat,能够直接发布 web service,下面创建一个发布服务类 MainServer,执行这个类就会运行服务器,看到控制台输出日志信息,表示启动服务成功
/test/MainServier.java 源码 package test; import org.apache.cxf.endpoint.Server; import org.apache.cxf.jaxws.JaxWsServerFactoryBean; public class MainServer { public static void main(String[] args) { //创建一个JaxWs服务器工厂 JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean(); //设置发布类 factory.setServiceClass(HelloWorldImpl.class); //设置服务发布的地址 factory.setAddress("http://localhost:6666/MyCxfService"); //根据设置创建一个服务器 Server server = factory.create(); //启动服务器 server.start(); } }
发布成功以后,可以通过浏览器去查看生成的 WSDL,在浏览器地址栏输入 http://localhost:6666/MyCxfService?wsdl ,效果如下:
下面创建访问 WebService 的客户端,可以重新创建一个项目,也可以就在这个项目里实现,我下面在同一个项目中创建一个类 HelloWorldCient
/test/HelloWorldClient.java 源码 package test; import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; import org.springframework.remoting.jaxws.JaxWsPortProxyFactoryBean; public class HelloWorldClient { public static void main(String[] args) { //创建一个JaxWs的代理工厂 JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); //设置访问地址 factory.setAddress("http://localhost:6666/MyCxfService"); //设置接口类型 factory.setServiceClass(HelloWorld.class); //获得代理类实例 HelloWorld helloWorld = (HelloWorld) factory.create(); //调用方法 String str = helloWorld.sayHello("张三"); System.out.println(str); } }
运行客户端,会看到控制台,输出:hello,张三
2 WSDL 结构分析
主要通过上一章生成的 WSDL,来对 WSDL 语言的标签进行解释Web Services Description Language 的缩写,是一个用来描述 Web 服务和说明如何与 Web 服务通信的 XML语言。为用户提供详细的接口说明书。查看刚才生成的 WSDL,可以分析出以下的知识点:
wsdl:definitions:根标签
属性 name="HelloWorldImplService":服务名称设置,HelloWorldImplService 系统自动按照类名生成的,
当然这个名字可以通过注解设置进行自定义
属性 targetNamespace="http://test/" :名称空间设置,默认会用反写包名作为名称空间,例如,包名是
com.icss.test,那么名称空间就是 http://test.icss.com/,通过注解设置也可以自定义
wsdl:types 元素: 使用某种语法(如 XML 模式)的数据类型定义(string、int),描述了接口中方法的参
数(输入参数)和返回值(输出参数)名称和类型
可以通过注解来给输入参数的名字和输出参数的名字进行自定义,默认是输出参数是 return 和第一个输
入参数是 arg0,被修改为 sayHelloResult 和 name
@WebService
public interface HelloWorld {
@WebResult(name="sayHelloResult")String sayHello(@WebParam(name="name")String name);
}
wsdl:message 元素:描述要传递的数据,web service 是把请求和响应都包装成一个 message 来传递,客户端把请求封装成 message 传递给服务器,而服务器把响应封装成 message 发送回客户端part 元素:消息参数
wsdl:portType/ Interface 元素:一个或多个端点支持的操作的抽象集。此名称已更改,因此可能会遇到两者中的任何一个。这个元素其实就是对应我们的接口。接口中的每一个方法被映射为一个 Operation元素
wsdl:binding 元素:特定端口类型的具体协议和数据格式规范,设置协议,一般都是 soap 协议
wsdl:service 元素:一个接口就是一个 portType,如果我们有很多接口,那么就组成一个 service,包含很多访问地址
【下载地址】
百度网盘链接:https://pan.baidu.com/s/1fXCkqeO8kMr1kbeewfh_EA
提取码:eb25
相关文章
使用-JFreeChart来创建基于web的图表
XStream使用文档
WebService发布过程及常见问题
webpack实战入门进阶调优分享
weblogic调优参数及监控指标
weblogic节点管理
weblogic管理控制台概述
weblogic-部署和启动
WebLogic-Server-性能及调优-调优-Java-虚拟机
Java 虚拟机(Java virtual machine,简称 JVM)是一种虚拟“执行引擎”实例,可在微处理器上执行 Java 类文件中的字节码。调整 JVM 的方式会影响 Weblogic Server 和应用程序的性能。
Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。
Velocity 用户手册是帮助页面设计者和内容提供者认识 Velocity 和其简单而功能强大的脚本语言――Velocity 模板语言(VTL)。在手册上的许多例子,都是用 Velocity 插入动态的内容到网页上,但是所有的 VLT 例子都能应用到其他的页面和模板中。
FlashFXP绿色版网盘下载,附激活教程 1782
FlashFxp百度网盘下载链接:https://pan.baidu.com/s/1MBQ5gkZY1TCFY8A7fnZCfQ。FlashFxp是功能强大的FTP工具
Adobe Fireworks CS6 Ansifa绿色精简版网盘下载 1565
firework可以制作精美或是可以闪瞎眼的gif,这在广告领域是需要常用的,还有firework制作下logo,一些原创的图片还是很便捷的,而且fireworks用法简单,配合dw在做网站这一块往往会发挥出很强大的效果。百度网盘下载链接:https://pan.baidu.com/s/1fzIZszfy8VX6VzQBM_bdZQ
navicat for mysql中文绿色版网盘下载 1623
Navicat for Mysql是用于Mysql数据库管理的一款图形化管理软件,非常的便捷和好用,可以方便的增删改查数据库、数据表、字段、支持mysql命令,视图等等。百度网盘下载链接:https://pan.baidu.com/s/1T_tlgxzdQLtDr9TzptoWQw 提取码:y2yq
火车头采集器(旗舰版)绿色版网盘下载 1707
火车头采集器是站长常用的工具,相比于八爪鱼,简洁好用,易于配置。火车头能够轻松的抓取网页内容,并通过自带的工具对内容进行处理。站长圈想要做网站,火车头采集器是必不可少的。百度网盘链接:https://pan.baidu.com/s/1u8wUqS901HgOmucMBBOvEA
Photoshop(CS-2015-2023)绿色中文版软件下载 1824
安装文件清单(共46G)包含Window和Mac OS各个版本的安装包,从cs到cc,从绿色版到破解版,从安装文件激活工具,应有尽有,一次性打包。 Photoshop CC绿色精简版 Photoshop CS6 Mac版 Photoshop CC 2015 32位 Photoshop CC 2015 64位 Photoshop CC 2015 MAC版 Photoshop CC 2017 64位 Adobe Photoshop CC 2018 Adobe_Photoshop_CC_2018 Photoshop CC 2018 Win32 Photoshop CC 2018 Win64