选框架犹如选媳妇,选来选去,最后我照旧选了“丑媳妇(CXF)”,为什么是它?因为 CXF 是 Apache 旗下的一款很是优秀的 WS 开源框架,具备轻量级的特性,并且能无缝整合到 Spring 中。
其实 CXF 是两个开源框架的整合,它们别离是:Celtix 与 XFire,前者是一款 ESB 框架,后者是一款 WS 框架。话说早在 2007 年 5 月,当 XFire 成长到了它的壮盛时期(最终版本是 1.2.6),溘然对业界公布了一个令人震惊的动静:“XFire is now CXF”,软件开发,随后 CXF 2.0 降生了,直到 2014 年 5 月,CXF 3.0 来临了。真是 7 年磨一剑啊!CXF 终于长大了,相信在不久的未来,必然会代替 Java 界 WS 龙头老大 Axis 的江湖职位,貌似 Axis 自从 2012 年 4 月今后就没有进级了,这是要辞别 Java 界的节拍吗?照旧后头有更大的行动?
如何利用 CXF 开拓基于 SOAP 的 WS 呢?
这就是我本日要与您分享的内容,重点是在 Web 容器中宣布与挪用 WS,这样也越发贴近我们实际事情的场景。
在 CXF 这个主角正是登台之前,我想先请出本日的副角 Oracle JAX-WS RI,简称:RI(日),全称:Reference Implementation,它是 Java 官方提供的 JAX-WS 类型的详细实现。
先让 RI 来跑跑龙套,先来看看如何利用 RI 宣布 WS 吧!
1. 利用 RI 宣布 WS
第一步:整合 Tomcat 与 RI
这一步稍微有一点点繁琐,不外也很容易做到。首先您需要通过以下地点,下载一份 RI 的措施包:
https://jax-ws.java.net/2.2.8/
下载完毕后,只需解压即可,假设解压到 D:/Tool/jaxws-ri 目次下。随后需要对 Tomcat 的 config/catalina.properties 文件举办设置:
common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar,D:/Tool/jaxws-ri/lib/*.jar
留意:以上设置中的最后一部门,其实就是在 Tomcat 中添加一系列关于 RI 的 jar 包。
看起来并不巨大哦,只是对现有的 Tomcat 有所改革罢了,虽然,您将这些 jar 包全部放入本身应用的 WEB-INF/lib 目次中也是可行的。
第二步:编写 WS 接口及其实现
接口部门:
<!-- lang: java --> package demo.ws.soap_jaxws; import javax.jws.WebService; @WebService public interface HelloService { String say(String name); }
实现部门:
<!-- lang: java --> package demo.ws.soap_jaxws; import javax.jws.WebService; @WebService( serviceName = "HelloService", portName = "HelloServicePort", endpointInterface = "demo.ws.soap_jaxws.HelloService" ) public class HelloServiceImpl implements HelloService { public String say(String name) { return "hello " + name; } }
留意:接口与实现类上都标注 javax.jws.WebService 注解,可在实现类的注解中添加一些关于 WS 的相关信息,譬喻:serviceName、portName 等,劳务派遣管理系统,虽然这是可选的,为了让生成的 WSDL 的可读性越发强罢了。
第三步:在 WEB-INF 下添加 sun-jaxws.xml 文件
就是在这个 sun-jaxws.xml 文件里设置需要宣布的 WS,其内容如下:
<!-- lang: xml --> <?xml version="1.0" encoding="UTF-8"?> <endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0"> <endpoint name="HelloService" implementation="demo.ws.soap_jaxws.HelloServiceImpl" url-pattern="/ws/soap/hello"/> </endpoints>
这里仅宣布一个 endpoint,并设置三个属性:WS 的名称、实现类、URL 模式。正是通过这个“URL 模式”来会见 WSDL 的,顿时您就可以看到。
第四步:陈设应用并启动 Tomcat
当 Tomcat 启动乐成后,会在节制台上看到如下信息:
2014-7-2 13:39:31 com.sun.xml.ws.transport.http.servlet.WSServletDelegate <init> 信息: WSSERVLET14: JAX-WS servlet 正在初始化 2014-7-2 13:39:31 com.sun.xml.ws.transport.http.servlet.WSServletContextListener contextInitialized 信息: WSSERVLET12: JAX-WS 上下文监听措施正在初始化
哎呦,不错哦!照旧中文的。
随后,立马打开您的欣赏器,输入以下地点:
http://localhost:8080/ws/soap/hello
假如不出意外的话,您此刻应该可以看到如下界面了:
看起来这应该是一个 WS 节制台,利便我们查察宣布了哪些 WS,可以点击上面的 WSDL 链接可查察详细信息。