0


SpringBoot集成axis发布WebService服务

文章目录

本文档详细说明了使用SpringBoot集成axis发布WebService服务的步骤,供大家在开发的过程中参考

1、使用maven-web项目生成server-config.wsdd文件

1.1、新建maven-web项目

1.1.1、新建项目

新建maven-web项目,archetype这里选择

maven-archetype-webapp

在这里插入图片描述

1.1.2、添加依赖
pom.xml

的依赖添加如下:

<!-- 引入axis的依赖 BEGIN --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.0</version></dependency><dependency><groupId>axis</groupId><artifactId>axis</artifactId><version>1.4</version></dependency><dependency><groupId>axis</groupId><artifactId>axis-wsdl4j</artifactId><version>1.5.1</version></dependency><dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4.7</version></dependency><!-- 引入axis的依赖 END -->

1.2、编写服务接口和实现类

1.2.1、OrderService接口

新建一个OrderService接口,如下:

packagecom.iambest.study.axis.service;publicinterfaceOrderService{/**
     * 下单接口
     * @param userId 用户ID
     * @param token 令牌
     * @param orderInfo 订单信息-JSON格式
     * @return
     */StringcreateOrder(String userId,String token,String orderInfo);/**
     * 支付接口
     * @param userId 用户ID
     * @param token 令牌
     * @param paymentInfo 支付信息-JSON格式
     * @return
     */Stringpayment(String userId,String token,String paymentInfo);}
1.2.2、OrderServiceImpl实现类

新建接口实现类,这里演示需要,仅对方法做简单实现,如下:

packagecom.iambest.study.axis.service.impl;importcom.iambest.study.axis.service.OrderService;publicclassOrderServiceImplimplementsOrderService{@OverridepublicStringcreateOrder(String userId,String token,String orderInfo){return"SUCCESS";}@OverridepublicStringpayment(String userId,String token,String paymentInfo){return"SUCCESS";}}

1.3、配置deploy.wsdd文件

deploy.wsdd文件

在webapp/WEB-INF目录下新建

deploy.wsdd

文件,如下:

在这里插入图片描述

<deploymentxmlns="http://xml.apache.org/axis/wsdd/"xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"><!-- name: 服务名随便写。 --><servicename="OrderService"provider="java:RPC"><parametername="className"value="com.iambest.study.axis.service.impl.OrderServiceImpl"/><!-- value表示哪些方法需要发布,*表示全部的public方法。 --><!-- 如果想指定方法名,方法名与方法名用逗号隔开 --><parametername="allowedMethods"value="*"/><!-- 指定命名空间 --><namespace>http://com.iambest.study.axis.service/OrderServiceHttpSoap11Endpoint</namespace></service></deployment>

1.4、配置tomcat

1.4.1、配置tomcat-server

菜单栏:Edit Configurations , 点击+号,选择Tomcat Server --> Local, 如下:

在这里插入图片描述

在Server标签页下,Application server: 点击Configure,选择你本地的Tomcat 服务器的路径,如下:

在这里插入图片描述

然后选择Deploymen标签页,点击+号,选择当前的项目即可

在这里插入图片描述

1.4.2、配置web.xml 文件
web.xml

文件新增如下的内容:

<!-- WebService接入配置  BEGIN --><servlet><servlet-name>AxisServlet</servlet-name><servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class></servlet><servlet-mapping><servlet-name>AxisServlet</servlet-name><url-pattern>/services/*</url-pattern></servlet-mapping><!-- WebService接入配置  END -->

1.5、生成server-config.wsdd文件

1.5.1、验证服务是否发布

直接启动tomcat,浏览器访问:

http://127.0.0.1:8080/axis_study/services

,显示如下的内容表示webservice服务发布成功了

在这里插入图片描述

1.5.2、生成server-config.wsdd文件

切换到tomcat的webapps目录下,我的是mac电脑,路径如下:

/Users/david/Developer/apache-tomcat-8.5.98/webapps/axis_study/WEB-INF

, 如果是别的电脑,则根据你的实际路径切换即可

执行如下的命令:

java-Djava.ext.dirs=lib org.apache.axis.client.AdminClient -l http://127.0.0.1:8080/axis_study/services deploy.wsdd

显示如下,表示生成文件成功:

在这里插入图片描述

1.5.3、验证server-config.wsdd文件

将生成好的server-config.wsdd文件,复制到工程文件的WEB-INF目录下,和deploy.wsdd同级即可,然后重启tomcat,再次访问

http://127.0.0.1:8080/axis_study/services

,显示如下表示成功生成server-config.wsdd文件

在这里插入图片描述

2、将axis集成到SpringBoot应用中去

2.1、新建springboot应用

新建springboot工程,将

1.1.2

章节的依赖添加到当前的

pom.xml

文件中,并将接口和实现类复制到当前的工程中,如下:

在这里插入图片描述

2.2、配置应用

2.2.1、复制server-config.wsdd文件

在resources目录下,新建WEB-INF文件夹,将

1.5.2

章节中生成的

server-config.wsdd

文件复制到

WEB-INF

目录下

2.2.2、新建AxisServiceConfig配置类

新建AxisServiceConfig配置类,内容如下:

packagecom.iambest.study.axis.config;importorg.apache.axis.transport.http.AxisServlet;importorg.springframework.boot.web.servlet.ServletRegistrationBean;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;@ConfigurationpublicclassAxisServiceConfig{@BeanpublicServletRegistrationBean<AxisServlet>axisServletServletRegistrationBean(){ServletRegistrationBean<AxisServlet> axisServletServletRegistrationBean =newServletRegistrationBean<>(newAxisServlet(),"/services/*");
        axisServletServletRegistrationBean.setName("AxisServlet");
        axisServletServletRegistrationBean.setLoadOnStartup(1);return axisServletServletRegistrationBean;}}
2.2.3、新建EngineConfigurationFactoryServlet类

新建EngineConfigurationFactoryServlet类,必须放到

org.apache.axis.configuration

包路径下,内容入下:

packageorg.apache.axis.configuration;importjava.io.InputStream;importjavax.servlet.ServletConfig;importorg.apache.axis.AxisProperties;importorg.apache.axis.ConfigurationException;importorg.apache.axis.EngineConfiguration;importorg.apache.axis.EngineConfigurationFactory;importorg.apache.axis.components.logger.LogFactory;importorg.apache.axis.server.AxisServer;importorg.apache.axis.utils.ClassUtils;importorg.apache.axis.utils.Messages;importorg.apache.commons.logging.Log;publicclassEngineConfigurationFactoryServletextendsEngineConfigurationFactoryDefault{protectedstaticLog log =LogFactory.getLog(EngineConfigurationFactoryServlet.class.getName());privateServletConfig cfg;publicstaticEngineConfigurationFactorynewFactory(Object param){return(param instanceofServletConfig)?newEngineConfigurationFactoryServlet((ServletConfig) param):null;}protectedEngineConfigurationFactoryServlet(ServletConfig conf){super();this.cfg = conf;}@OverridepublicEngineConfigurationgetServerEngineConfig(){returngetServerEngineConfig(cfg);}/**
     * Get a default server engine configuration in a servlet environment.
     *
     * @param cfg a ServletContext
     * @return a server EngineConfiguration
     */privatestaticEngineConfigurationgetServerEngineConfig(ServletConfig cfg){String configFile = cfg.getInitParameter(OPTION_SERVER_CONFIG_FILE);if(configFile ==null){
            configFile =AxisProperties.getProperty(OPTION_SERVER_CONFIG_FILE);}if(configFile ==null){
            configFile =SERVER_CONFIG_FILE;}String appWebInfPath ="/WEB-INF";FileProvider config =null;String realWebInfPath =EngineConfigurationFactoryServlet.class.getResource(appWebInfPath).getPath();InputStream iss =ClassUtils.getResourceAsStream(EngineConfigurationFactoryServlet.class, appWebInfPath +"/"+SERVER_CONFIG_FILE);if(iss !=null){
            config =newFileProvider(iss);}if(config ==null){
            log.error(Messages.getMessage("servletEngineWebInfError03",""));}if(config ==null&& realWebInfPath !=null){try{
                config =newFileProvider(realWebInfPath, configFile);}catch(ConfigurationException e){
                log.error(Messages.getMessage("servletEngineWebInfError00"), e);}}/**
         * Fall back to config file packaged with AxisEngine
         */if(config ==null){
            log.warn(Messages.getMessage("servletEngineWebInfWarn00"));try{InputStream is =ClassUtils.getResourceAsStream(AxisServer.class,SERVER_CONFIG_FILE);
                config =newFileProvider(is);}catch(Exception e){
                log.error(Messages.getMessage("servletEngineWebInfError02"), e);}}return config;}}

最终的项目结构如下图所示:

在这里插入图片描述

2.3、启动并访问

启动springboot应用,并访问:

http://127.0.0.1:8080/services

路径,显示内容如下表示发布服务成功:

在这里插入图片描述

3、验证服务

3.1、获取wsdl文件

通过wget命令获取wsdl文件

wget-O OrderService.wsdl http://127.0.0.1:8080/services/OrderService?wsdl

文件获取成功,如下:
在这里插入图片描述

3.2、使用soapUI验证

导入刚才的wsdl文件后,发送请求信息,返回如下的信息,表示成功:

在这里插入图片描述

标签: spring boot 后端 java

本文转载自: https://blog.csdn.net/Jack_David/article/details/136049290
版权归原作者 Jack_David 所有, 如有侵权,请联系我们删除。

“SpringBoot集成axis发布WebService服务”的评论:

还没有评论