IDEA快速 实现 SpringMVC 整合xfire 发布 WebService 服务
文章目录
- 一、idea快速搭建web项目
- 二、xfire 服务方搭建
- 1. pom依赖
- 2. web.xml
- 3. 创建一个entity
- 4. 创建一个接口
- 5. 创建接口实现类
- 6. 在WEB-INF创建一个META-INF的目录
- 7. 在META-INF创建一个xfire的目录
- 8. 在xfire创建一个services.xml的目录
- 二、xfire客户端搭建
- 1. 创建xfire客户端(企业版本)
- 2. xfire客户端调用
依赖名称 | 依赖版本 |
---|---|
spring | 4.3.10.RELEASE |
xfire | 1.26 |
一、idea快速搭建web项目
二、xfire 服务方搭建
1. pom依赖
<properties><spring.version>4.3.10.RELEASE</spring.version><xfire-all.version>1.2.6</xfire-all.version></properties><!--spring start--><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>${spring.version}</version></dependency><!--spring end--><dependency><groupId>org.codehaus.xfire</groupId><artifactId>xfire-all</artifactId><version>${xfire-all.version}</version></dependency>
2. web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><!-- webservices 接口 XFire 需要引入的 Servlet Start --><servlet><servlet-name>XFireServlet</servlet-name><servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class></servlet><!-- 区配前缀 Start --><servlet-mapping><servlet-name>XFireServlet</servlet-name><url-pattern>/servlet/XFireServlet/*</url-pattern></servlet-mapping><servlet-mapping><servlet-name>XFireServlet</servlet-name><url-pattern>/xfireUser/services/*</url-pattern></servlet-mapping><!-- 区配前缀 End --><!-- webservices 接口 XFire 需要引入的 Servlet End -->
</web-app>
3. 创建一个entity
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class User implements Serializable {private Long id;private String name;private Integer age;private String email;
}
4. 创建一个接口
package com.gblfy.service;public interface IXfireService {/*** 测试传递json类型 的User对象 类型的信息 获取户信息接口** @param jsonUser* @return*/public String getUser(String jsonUser);}
5. 创建接口实现类
package com.gblfy.service.impl;import com.gblfy.service.IXfireService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;@Service
@Slf4j
public class IXfireServiceImpl implements IXfireService {/*** 测试传递User对象 类型的信息 获取户信息接口*/@Overridepublic String getUser(String jsonUser) {log.info("接收的到 纽约 发送的报文 {}", jsonUser);return jsonUser;}
}
6. 在WEB-INF创建一个META-INF的目录
7. 在META-INF创建一个xfire的目录
8. 在xfire创建一个services.xml的目录
services.xml 配置内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans><service xmlns="http://xfire.codehaus.org/config/1.0"><!--1. 暴露的服务名2. 自定义命名空间3. 接口路径4. 接口实现类路径 --><name>IXfireService</name><namespace>CustomNamespaces</namespace><serviceClass>com.gblfy.service.IXfireService</serviceClass><implementationClass>com.gblfy.service.impl.IXfireServiceImpl</implementationClass></service>
</beans>
项目截图:
启动项目验证测试:
浏览器访问:
http://localhost:8081/XFireTest/services/HelloService?wsdl
注:
格式:http://ip地址:端口号/项目名/区配前缀/暴露的服务名
名称 | 说明 |
---|---|
协议 | http:// |
ip地址 | localhost |
端口号 | 8081 |
项目名 | XFireTest |
区配前缀 | /services/和/servlet/XFireServlet/ |
暴露的服务名 | HelloService |
服务后缀 | ?wsdl |
部署服务器 | tomcat9 |
命名空间和方法名已标注:
浏览器访问:
http://localhost:8081/XFireTest/servlet/XFireServlet/HelloService?wsdl
这样服务端就用哪个xfire发布服务成功了。
二、xfire客户端搭建
1. 创建xfire客户端(企业版本)
package com.gblfy.utils;import lombok.extern.slf4j.Slf4j;
import org.codehaus.xfire.client.Client;
import org.springframework.stereotype.Repository;import java.net.MalformedURLException;
import java.net.URL;@Repository
@Slf4j
public class WSXfireClientUtils {/*** WSXfire 客户端** @param url 代用地址* @param nameSpace 命名空间* @param method 方法名* @param tReqXml 请求报文* @return tResXml 响应报文* @throws MalformedURLException* @throws Exception*/public static String wSXfireClient(String url, String nameSpace, String method, String tReqXml) throws Exception {long forStrTime = 0L;long endToStart = 0L;Client client = new Client(new URL(url));client.setProperty(nameSpace, method);log.info("开始转发请求报文******************************* {}", tReqXml);forStrTime = System.currentTimeMillis();Object[] result = client.invoke(method, new Object[]{tReqXml});log.info("响应报文: {}", result[0]);long forEndTime = System.currentTimeMillis();endToStart = (long) (forEndTime - forStrTime);log.info("转发消耗的时间: {} 毫秒", endToStart);String tResXml = (String) result[0];return tResXml;}
}
2. xfire客户端调用
package utils;import com.fasterxml.jackson.databind.ObjectMapper;
import com.gblfy.entity.User;
import com.gblfy.utils.WSXfireClientUtils;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;@Component
@Slf4j
public class WSXfireClientTest {//引入json工具类private static final ObjectMapper MAPPER = new ObjectMapper();@Autowiredprivate WSXfireClientUtils wsXfireClient;@Testpublic void testXfireStrType() throws Exception {String url = "http://localhost:8080/xfireUser/services/IXfireService?wsdl";String nameSpace = "CustomNamespaces";String method = "getUser";String tReqXml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n" + "<bookstore>\r\n"+ " <book id=\"1\">\r\n" + " <name>方国军</name>\r\n" + " <author>乔治马丁</author>\r\n"+ " <year>2014</year>\r\n" + " <price>89</price>\r\n" + " </book>\r\n"+ " <book id=\"2\">\r\n" + " <name>安徒生童话</name>\r\n" + " <year>2004</year>\r\n"+ " <price>77</price>\r\n" + " <language>English</language>\r\n" + " </book> \r\n"+ "</bookstore>";
// String tReqXml = "Xfire客户端调用成功";String message = wsXfireClient.wSXfireClient(url, nameSpace, method, tReqXml);log.info("返回报文 {}", message);}@Testpublic void testXfireObjToJsonStrType() throws Exception {String url = "http://localhost:8080/xfireUser/services/IXfireService?wsdl";String nameSpace = "CustomNamespaces";String method = "getUser";User user = new User().builder().id(1l).age(2).email("gblfy@163.com").name("gblfy").build();// 1. 数据对象转jsonStr处理 易快速解析处理String tReqXml = MAPPER.writeValueAsString(user);String message = wsXfireClient.wSXfireClient(url, nameSpace, method, tReqXml);log.info("返回报文 {}", message);}
}
本文项目源码:https://gitee.com/gb_90/webserice-column
IDEA快速 实现 SpringMVC 整合xfire 发布 WebService 服务相关推荐
- java - springmvc整合cxf发布webservice
1.jar包已上传百度云盘,在jar包目录下 2.web.xml配置 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-inst ...
- Spring和CXF整合发布WebService(服务端、客户端)
参考Spring和CXF整合发布WebService(服务端.客户端) 转载于:https://www.cnblogs.com/timspace/p/11113576.html
- Spring4.x整合Axis1.4发布WebService服务
Spring4.x整合Axis1.4发布WebService服务 文章目录 一.服务端部署 1. 在web.xml文件中添加映射路径和spring监听 2. 添加spring-axis.xml配置文件 ...
- 用XFire发布WebService
WebService的概念就不多说了,直接进入主题:如何用XFire发布WebService.比较流行的发布WebService的框架有XFire.CXF.AXIS等等.到目前为止接触过的有XFire ...
- 使用CXF发布WebService服务简单实例
一.说明: 前面介绍了使用axis2来发布Webservice服务,现在介绍一种更popular,更高效的Webservice服务发布技术:CXF Apache CXF = Celtix + XFir ...
- CXF框架发布WebService服务的例子
1.CXF框架概念介绍 Apache CXF 是一个开源的 WebService 框架,CXF可以用来构建和开发 WebService,这些服务可以支持多种协议,比如:SOAP.POST/HTTP.H ...
- Aixs2发布webservice服务
http://www.blogjava.net/pzxsheng/archive/2012/12/21/393319.html 开发前准备: 1.Eclipse Java EE IDE(Jun ...
- dubbo发布webservice服务
dubbo发布webservice服务 学习了:https://blog.csdn.net/zhangyunpengchang/article/details/51567127 https://blo ...
- 基于jws发布webservice服务
基于jws发布webservice服务 用途 用于验证基于jws搭建的webservice服务端与客户端. WebService服务端 1.目录结构 D:. │ pom.xml # maven配置 │ ...
最新文章
- 通用求根算法zeroin_Modern Robotics运动学数值解法及SVD算法(C matlab)
- ”该证书已被签发机构吊销“错误解决方案
- 《数据分析变革:大数据时代精准决策之道》一第1章 了解运营型分析
- [Python_6] Python 配置 MySQL 访问
- Python中基础数据类型(List、Tuple、Dict)的概念和用法
- Spring学习笔记之Design of DispatcherServlet
- 分布式作业 Elastic-Job 快速上手指南
- Erlang库 -- 有意思的库汇总
- kafka入门(一)简介
- 转为字符数组_py字符打印照片
- 关于dijistra算法的理解
- 解决SVN Cleanup时遇到错误信息:Cleanup failed to process the following paths的错误
- 虚拟机红帽子php,virtualbox新建redhat9.0(红帽子linux)系统
- HTML+CSS 图片翻转
- 移动通信发展历程见解(从1G到5G发展历程)
- 【操作系统】线程栈如何分配
- java改变数据库配置文件信息_JAVA应用修改数据库链接信息一般在哪个配置文件中?...
- P2P UDP NAT 原理 穿透
- web前端开发学什么,JavaScript逻辑运算符与赋值运算符
- 搭档之家:其次,构建积极的自我实现预言
热门文章
- id 重启event_windows 2003 R2 系统自动重启了. event ID 6008
- MySQL 数据恢复
- MyBatis之输入(parameterType)与输出(resultType、resultMap)映射
- Flink ProcessFunction 介绍使用
- Nacos2.0的K8s服务发现生态应用及规划
- 为什么DevOps的必然趋势是BizDevOps
- 看阿里云如何用云上技术创新,帮助哈啰单车实现智能数据收治
- 如何选择适合你的企业数据管理类产品
- 使用Istio进行多集群部署管理(2):单控制平面Gateway连接拓扑
- 从校招生到核心架构师,支付宝研究员李俊奎谈如何成为一名优秀的程序员