根据wsdl文件搭建webService服务

  1. 环境介绍:
  2.     jdk 1.8_u221(jdk1.8的其他版本没试过)
  3.     apache cxf 2.7.11
  4.     idea 企业版(开源版功能不全)
  5. 搭建过程
  6. 准备好需要的wsdl文件(如果是.xml文件,将后缀名改为wsdl)
  7. 安装jdk,并且配置环境变量,下载apache cxf,解压后,配置环境变量。完成上述步骤后,打开cmd,或者powershell,执行如下命令:

idea 生成java文件的插件 idea生成wsdl_生成服务端源码

 

    如果有报错内容为无法创建jvm,请降低jdk版本(至少是jdk1.7),或使用我上述的版本,如果还是不行,请降低apache cxf的版本。

 

3.完成了上述步骤后,打开idea,创建webService项目

idea 生成java文件的插件 idea生成wsdl_apache_02

 

version中看不到cxf的选项,没关系,随便选一个,然后libraries选择稍后设置。

 

创建好的目录结构如下图所示:

idea 生成java文件的插件 idea生成wsdl_wsdl_03

 

打开project structure

idea 生成java文件的插件 idea生成wsdl_wsdl_04

 

找到modules,取消src的源码文件标记,在src中新建java文件,并打上源码标记。

 

 

idea 生成java文件的插件 idea生成wsdl_idea 生成java文件的插件_05

 

然后打开setting

idea 生成java文件的插件 idea生成wsdl_web service_06

 

找到web service设置,在cxf一栏填上cxf解压后的文件所在位置。

idea 生成java文件的插件 idea生成wsdl_apache_07

 

右键项目名,从wsdl文件生成源码。

idea 生成java文件的插件 idea生成wsdl_apache_08

 

在弹出的对话框中,选择wsdl文件,输出路径到src下的java文件夹下,使用JAXB2.0,输出模式为server,点击OK开始生成。

idea 生成java文件的插件 idea生成wsdl_生成服务端源码_09

 

然后就会报错:

idea 生成java文件的插件 idea生成wsdl_idea 生成java文件的插件_10

如果是上述的报错,可以打开jdk目录下的jre文件夹,再打开lib文件夹,修改jaxp.properties文件(如果没有这个文件就创建一个),添加一行:javax.xml.accessExternalSchema = all

然后在idea中删除掉生成失败创建的包(就是生成源码时填入的package prefix),重新生成源码。

idea 生成java文件的插件 idea生成wsdl_idea 生成java文件的插件_11

 

生成完成后目录如下图:

      

idea 生成java文件的插件 idea生成wsdl_wsdl_12

       注意红框中的接口类,生成源码时是不会有这个类的实现的,所以还需要我们自己来实现,该类下面是一个带有main函数的主程序入口,可以看到如下内容:

idea 生成java文件的插件 idea生成wsdl_web service_13

因此我们创建的实现类的名字就是接口类 + Impl。

 

新建实现类(记得加上@WebService的注解,否则会出错),去实现接口类中的所有接口,逻辑根据需要自己决定。如下图:

idea 生成java文件的插件 idea生成wsdl_apache_14

 

全部实现完成之后,就可以执行main函数了,main函数中 address的值就是webservice部署的ip地址,启动后在浏览器打开该ip地址,并在结尾加上 ?wsdl就可以看到wsdl文件,并可以使用soapUI进行测试。(下图是改写为读xml配置文件中的地址来部署服务,ReadXml类是笔者新建的)

idea 生成java文件的插件 idea生成wsdl_生成服务端源码_15

 

4.打包服务。

为了使用方便,可以将整个服务进行打包,步骤如下:

 

添加artifacts,选择从模块生成

idea 生成java文件的插件 idea生成wsdl_apache_16

选择主类和目录,注意,目录一定要包含src下所有的内容,否则可能出错,如下图:

idea 生成java文件的插件 idea生成wsdl_apache_17

 

然后构建artifacts,点击build

idea 生成java文件的插件 idea生成wsdl_apache_18

idea 生成java文件的插件 idea生成wsdl_web service_19

 

此时可以查看out目录下,已经生成了.jar包

idea 生成java文件的插件 idea生成wsdl_wsdl_20