Jaxws学习笔记(一)入门程序之服务接口发布

来源:互联网 发布:园林景观设计软件下载 编辑:程序博客网 时间:2024/06/08 09:45

在Java中一共有三种WebService规范,Jax-WS,JAXM,Jax-RS。

  1. Jax-WS(Java Api for XML-Based WebService)
  2. JAXM支持文件传输,暴露更多底层细节,不建议使用
  3. Jax-RS是针对Restful风格定制的一套Web服务规范(建议重点掌握)
JaxWS是实现例子入门

1.编写SEI

package cn.blueboz.ws;import javax.jws.WebMethod;import javax.jws.WebParam;import javax.jws.WebResult;import javax.jws.WebService;/** * Created by blueboz.chen on 2016/4/21. * 首先是编写SEI(Service Endpoint Interface)服务端点接口 * SEI在WebService中称为PortType */public interface IHelloWebService {    public String sayHello(String username);}

2.编写SEI实现类,此类作为WebService提供服务类

package cn.blueboz.ws.impl;import cn.blueboz.ws.IHelloWebService;import javax.jws.WebService;/** * Created by blueboz.chen on 2016/4/21. */@WebService(        serviceName = "HelloWebServiceImpl")public class HelloWebServiceImpl implements IHelloWebService {    @Override    public String sayHello(String username) {        return "你好"+username+"!欢迎使用WebService!";    }}
3.发布服务(方式一)

这是第一种发布服务端的方式,通过Java内置的Endpoint进行发布WebService服务

package cn.blueboz.ws;import cn.blueboz.ws.impl.HelloWebServiceImpl;import javax.xml.ws.Endpoint;/** * Created by blueboz.chen on 2016/4/21. */public class Server {    public static void main(String[] args) {        Endpoint.publish("http://localhost:8888/Hello",new HelloWebServiceImpl());    }}
发布服务之后,我们可以打开终端,输入
C:\Users\Administrator> netstat -ano|findstr "8888"  TCP    127.0.0.1:8888         0.0.0.0:0              LISTENING       18348

可以看到存在端口8888,因为我们Endpoint发布接口时指定发布端口是8888,所以看到了端口占用,接下来我们用浏览器打开

http://localhost:8888/Hello,只要能看到下面这个,就说明接口发布成功了!

4.发布服务方式二,使用CXF方式发布

要想使用CXF,必须先到Apache CXF下先下载CXF。

http://cxf.apache.org/

也可以在这里下载

http://download.csdn.net/detail/blueboz/9498010

我使用的版本是3.1.6.然后解压,可以看到如下的目录结构

bin文件夹包含需要使用的wsdl2java工具。就是生成客户端代码的工具。等

所以接下来我们需要配置环境变量,否则wsdl2java可能无法使用

新建如下环境变量

  1. CXF_HOME->cxf解压路径
  2. 在path环境变量追加;%CXF_HOME%\bin;
  3. 在ClassPath环境变量追加%CXF_HOME%\lib;

如果使用IDE开发,可以自己手动的把lib文件夹下所有的包导入。

这里之所以导入所有包,是为了教程方便,如果想自己尝试最小导包,可以从cxf-core开始,然后一个一个导入即可。

好了。

回到我们的IDE,新建另外一个类

package cn.blueboz.ws.impl;import org.apache.cxf.endpoint.Server;import org.apache.cxf.jaxws.JaxWsServerFactoryBean;/** * Created by blueboz.chen on 2016/4/21. */public class CxfServer {    /**     * 通过CXF方式发布接口     * @param args     */    public static void main(String[] args) {        JaxWsServerFactoryBean factoryBean=new JaxWsServerFactoryBean();        factoryBean.setAddress("http://localhost:8888/Hello");        factoryBean.setServiceClass(HelloWebServiceImpl.class);        factoryBean.create();    }}
运行之后,访问地址,可以看到步骤三看到的页面就说明接口发布成功了。
至于客户端怎么调用,请看我的下一个博客

1 0
原创粉丝点击