SpringBoot集成axis发布WebService服务

Jack_David 2024-08-02 09:03:01 阅读 56

文章目录

1、使用maven-web项目生成server-config.wsdd文件1.1、新建maven-web项目1.1.1、新建项目1.1.2、添加依赖

1.2、编写服务接口和实现类1.2.1、OrderService接口1.2.2、OrderServiceImpl实现类

1.3、配置deploy.wsdd文件deploy.wsdd文件

1.4、配置tomcat1.4.1、配置tomcat-server1.4.2、配置web.xml 文件

1.5、生成server-config.wsdd文件1.5.1、验证服务是否发布1.5.2、生成server-config.wsdd文件1.5.3、验证server-config.wsdd文件

2、将axis集成到SpringBoot应用中去2.1、新建springboot应用2.2、配置应用2.2.1、复制server-config.wsdd文件2.2.2、新建AxisServiceConfig配置类2.2.3、新建EngineConfigurationFactoryServlet类

2.3、启动并访问

3、验证服务3.1、获取wsdl文件3.2、使用soapUI验证

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

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

1.1、新建maven-web项目

1.1.1、新建项目

新建maven-web项目,archetype这里选择<code>maven-archetype-webapp

在这里插入图片描述

1.1.2、添加依赖

<code>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接口,如下:

package com.iambest.study.axis.service;

public interface OrderService {

/**

* 下单接口

* @param userId 用户ID

* @param token 令牌

* @param orderInfo 订单信息-JSON格式

* @return

*/

String createOrder(String userId, String token, String orderInfo);

/**

* 支付接口

* @param userId 用户ID

* @param token 令牌

* @param paymentInfo 支付信息-JSON格式

* @return

*/

String payment(String userId, String token, String paymentInfo);

}

1.2.2、OrderServiceImpl实现类

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

package com.iambest.study.axis.service.impl;

import com.iambest.study.axis.service.OrderService;

public class OrderServiceImpl implements OrderService {

@Override

public String createOrder(String userId, String token, String orderInfo) {

return "SUCCESS";

}

@Override

public String payment(String userId, String token, String paymentInfo) {

return "SUCCESS";

}

}

1.3、配置deploy.wsdd文件

deploy.wsdd文件

在webapp/WEB-INF目录下新建deploy.wsdd文件,如下:

在这里插入图片描述

<code>

<deployment xmlns="http://xml.apache.org/axis/wsdd/"code>

xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">code>

<!-- name: 服务名随便写。 -->

<service name="OrderService" provider="java:RPC">code>

<parameter name="className" value="com.iambest.study.axis.service.impl.OrderServiceImpl" />code>

<!-- value表示哪些方法需要发布,*表示全部的public方法。 -->

<!-- 如果想指定方法名,方法名与方法名用逗号隔开 -->

<parameter name="allowedMethods" value="*" />code>

<!-- 指定命名空间 -->

<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 文件

<code>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电脑,路径如下:<code>/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,再次访问<code>http://127.0.0.1:8080/axis_study/services ,显示如下表示成功生成server-config.wsdd文件

在这里插入图片描述

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

2.1、新建springboot应用

新建springboot工程,将<code>1.1.2章节的依赖添加到当前的pom.xml文件中,并将接口和实现类复制到当前的工程中,如下:

在这里插入图片描述

2.2、配置应用

2.2.1、复制server-config.wsdd文件

在resources目录下,新建WEB-INF文件夹,将<code>1.5.2章节中生成的server-config.wsdd文件复制到WEB-INF目录下

2.2.2、新建AxisServiceConfig配置类

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

package com.iambest.study.axis.config;

import org.apache.axis.transport.http.AxisServlet;

import org.springframework.boot.web.servlet.ServletRegistrationBean;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

@Configuration

public class AxisServiceConfig {

@Bean

public ServletRegistrationBean<AxisServlet> axisServletServletRegistrationBean() {

ServletRegistrationBean<AxisServlet> axisServletServletRegistrationBean =

new ServletRegistrationBean<>(new AxisServlet(),"/services/*");

axisServletServletRegistrationBean.setName("AxisServlet");

axisServletServletRegistrationBean.setLoadOnStartup(1);

return axisServletServletRegistrationBean;

}

}

2.2.3、新建EngineConfigurationFactoryServlet类

新建EngineConfigurationFactoryServlet类,必须放到org.apache.axis.configuration包路径下,内容入下:

package org.apache.axis.configuration;

import java.io.InputStream;

import javax.servlet.ServletConfig;

import org.apache.axis.AxisProperties;

import org.apache.axis.ConfigurationException;

import org.apache.axis.EngineConfiguration;

import org.apache.axis.EngineConfigurationFactory;

import org.apache.axis.components.logger.LogFactory;

import org.apache.axis.server.AxisServer;

import org.apache.axis.utils.ClassUtils;

import org.apache.axis.utils.Messages;

import org.apache.commons.logging.Log;

public class EngineConfigurationFactoryServlet extends EngineConfigurationFactoryDefault {

protected static Log log =

LogFactory.getLog(EngineConfigurationFactoryServlet.class.getName());

private ServletConfig cfg;

public static EngineConfigurationFactory newFactory(Object param) {

return (param instanceof ServletConfig)

? new EngineConfigurationFactoryServlet((ServletConfig) param)

: null;

}

protected EngineConfigurationFactoryServlet(ServletConfig conf) {

super();

this.cfg = conf;

}

@Override

public EngineConfiguration getServerEngineConfig() {

return getServerEngineConfig(cfg);

}

/**

* Get a default server engine configuration in a servlet environment.

*

* @param cfg a ServletContext

* @return a server EngineConfiguration

*/

private static EngineConfiguration getServerEngineConfig(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 = new FileProvider(iss);

}

if (config == null) {

log.error(Messages.getMessage("servletEngineWebInfError03", ""));

}

if (config == null && realWebInfPath != null) {

try {

config = new FileProvider(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 = new FileProvider(is);

} catch (Exception e) {

log.error(Messages.getMessage("servletEngineWebInfError02"), e);

}

}

return config;

}

}

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

在这里插入图片描述

2.3、启动并访问

启动springboot应用,并访问:<code>http://127.0.0.1:8080/services路径,显示内容如下表示发布服务成功:

在这里插入图片描述

3、验证服务

3.1、获取wsdl文件

通过wget命令获取wsdl文件

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

文件获取成功,如下:

在这里插入图片描述

3.2、使用soapUI验证

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

在这里插入图片描述



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。