文章目录

  • 一、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 服务相关推荐

  1. java - springmvc整合cxf发布webservice

    1.jar包已上传百度云盘,在jar包目录下 2.web.xml配置 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-inst ...

  2. Spring和CXF整合发布WebService(服务端、客户端)

    参考Spring和CXF整合发布WebService(服务端.客户端) 转载于:https://www.cnblogs.com/timspace/p/11113576.html

  3. Spring4.x整合Axis1.4发布WebService服务

    Spring4.x整合Axis1.4发布WebService服务 文章目录 一.服务端部署 1. 在web.xml文件中添加映射路径和spring监听 2. 添加spring-axis.xml配置文件 ...

  4. 用XFire发布WebService

    WebService的概念就不多说了,直接进入主题:如何用XFire发布WebService.比较流行的发布WebService的框架有XFire.CXF.AXIS等等.到目前为止接触过的有XFire ...

  5. 使用CXF发布WebService服务简单实例

    一.说明: 前面介绍了使用axis2来发布Webservice服务,现在介绍一种更popular,更高效的Webservice服务发布技术:CXF Apache CXF = Celtix + XFir ...

  6. CXF框架发布WebService服务的例子

    1.CXF框架概念介绍 Apache CXF 是一个开源的 WebService 框架,CXF可以用来构建和开发 WebService,这些服务可以支持多种协议,比如:SOAP.POST/HTTP.H ...

  7. Aixs2发布webservice服务

    http://www.blogjava.net/pzxsheng/archive/2012/12/21/393319.html 开发前准备:     1.Eclipse Java EE IDE(Jun ...

  8. dubbo发布webservice服务

    dubbo发布webservice服务 学习了:https://blog.csdn.net/zhangyunpengchang/article/details/51567127 https://blo ...

  9. 基于jws发布webservice服务

    基于jws发布webservice服务 用途 用于验证基于jws搭建的webservice服务端与客户端. WebService服务端 1.目录结构 D:. │ pom.xml # maven配置 │ ...

最新文章

  1. 通用求根算法zeroin_Modern Robotics运动学数值解法及SVD算法(C matlab)
  2. ”该证书已被签发机构吊销“错误解决方案
  3. 《数据分析变革:大数据时代精准决策之道》一第1章 了解运营型分析
  4. [Python_6] Python 配置 MySQL 访问
  5. Python中基础数据类型(List、Tuple、Dict)的概念和用法
  6. Spring学习笔记之Design of DispatcherServlet
  7. 分布式作业 Elastic-Job 快速上手指南
  8. Erlang库 -- 有意思的库汇总
  9. kafka入门(一)简介
  10. 转为字符数组_py字符打印照片
  11. 关于dijistra算法的理解
  12. 解决SVN Cleanup时遇到错误信息:Cleanup failed to process the following paths的错误
  13. 虚拟机红帽子php,virtualbox新建redhat9.0(红帽子linux)系统
  14. HTML+CSS 图片翻转
  15. 移动通信发展历程见解(从1G到5G发展历程)
  16. 【操作系统】线程栈如何分配
  17. java改变数据库配置文件信息_JAVA应用修改数据库链接信息一般在哪个配置文件中?...
  18. P2P UDP NAT 原理 穿透
  19. web前端开发学什么,JavaScript逻辑运算符与赋值运算符
  20. 搭档之家:其次,构建积极的自我实现预言

热门文章

  1. id 重启event_windows 2003 R2 系统自动重启了. event ID 6008
  2. MySQL 数据恢复
  3. MyBatis之输入(parameterType)与输出(resultType、resultMap)映射
  4. Flink ProcessFunction 介绍使用
  5. Nacos2.0的K8s服务发现生态应用及规划
  6. 为什么DevOps的必然趋势是BizDevOps
  7. 看阿里云如何用云上技术创新,帮助哈啰单车实现智能数据收治
  8. 如何选择适合你的企业数据管理类产品
  9. 使用Istio进行多集群部署管理(2):单控制平面Gateway连接拓扑
  10. 从校招生到核心架构师,支付宝研究员李俊奎谈如何成为一名优秀的程序员