In the previous article we’ve seen how build a Jax Web Services with spring. Now it’s time to see how consume it always with spring.
Obviously we can consume every types of web services with this technology, not only the spring web services.
Starting from WSDL definition you can use wsimport tool for generating the code:
wsimport -s c:\src http://localhost:8081/OrderServiceEndpoint?WSDL "-target 2.0 parsing WSDL... Generating code... Compiling code... |
For my purpose, I need only two files: OrderServiceEndpoint.java (rename in OrderService.java) and Order.java.
The first file contains the service interface mapped with Jax annotations.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
package it.springjaxws;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.jws.WebResult;
import javax.xml.ws.RequestWrapper;
import javax.xml.ws.ResponseWrapper;
/** * This class was generated by the JAX-WS RI.
* JAX-WS RI 2.2.4-b01
* Generated source version: 2.2
*
*/
public interface OrderService {
/**
*
* @param order
* @throws Exception_Exception
*/
@WebMethod (operationName = "Check" )
@RequestWrapper (localName = "Check" , targetNamespace = "http://springjaxws.it/" , className = "it.springjaxws.Check" )
@ResponseWrapper (localName = "CheckResponse" , targetNamespace = "http://springjaxws.it/" , className = "it.springjaxws.CheckResponse" )
public void check(
@WebParam (name = "order" , targetNamespace = "" )
Order order)
throws Exception
;
/**
*
* @param order
* @return
* returns it.springjaxws.Order
*/
@WebMethod (operationName = "Process" )
@WebResult (targetNamespace = "" )
@RequestWrapper (localName = "Process" , targetNamespace = "http://springjaxws.it/" , className = "it.springjaxws.Process" )
@ResponseWrapper (localName = "ProcessResponse" , targetNamespace = "http://springjaxws.it/" , className = "it.springjaxws.ProcessResponse" )
public Order process(
@WebParam (name = "order" , targetNamespace = "" )
Order order);
/**
*
* @param order
* @return
* returns it.springjaxws.Order
*/
@WebMethod (operationName = "Shipping" )
@WebResult (targetNamespace = "" )
@RequestWrapper (localName = "Shipping" , targetNamespace = "http://springjaxws.it/" , className = "it.springjaxws.Shipping" )
@ResponseWrapper (localName = "ShippingResponse" , targetNamespace = "http://springjaxws.it/" , className = "it.springjaxws.ShippingResponse" )
public Order shipping(
@WebParam (name = "order" , targetNamespace = "" )
Order order);
} |
The order file class is the same used in server part.
The spring configuration file contains the binding with the Web Service.
1
2
3
4
5
6
7
8
9
|
< bean id = "orderWebService"
class = "org.springframework.remoting.jaxws.JaxWsPortProxyFactoryBean" >
< property name = "serviceInterface" value = "it.springjaxws.OrderService" />
< property name = "wsdlDocumentUrl"
< property name = "serviceName" value = "OrderService" />
< property name = "portName" value = "OrderServiceEndpointPort" />
</ bean >
|
I used Spring Mvc to call the Web Services. This is the controller class.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
package it.consumespringjaxws.controller;
import it.springjaxws.Order;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller public class OrderController {
@Autowired
private it.springjaxws.OrderService orderClient;
Logger log = Logger.getLogger( this .getClass());
@RequestMapping (value= "/order" )
public String getOrder(ModelMap model) {
Order order = new Order();
order.setOrderId( "CK-1244" );
order.setItemNumber( 5 );
try {
orderClient.check(order);
} catch (Exception e) {
log.error(e);
}
log.info( "******************************************" );
order = orderClient.process(order);
log.info( "******************************************" );
order = orderClient.shipping(order);
model.addAttribute( "detail" , order);
return "order" ;
}
} |
The result is in the below screenshot.
Summary
I think that spring is a good implementation of Jax-Ws reference. Personally, this is my prefer approach for building and consuming web services. That’s because you need a very few configuration options and you can expose all Java class file as service.
相关推荐
YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;
JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代
内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。
YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;
系统可以提供信息显示和相应服务,其管理新冠抗原自测平台小程序信息,查看新冠抗原自测平台小程序信息,管理新冠抗原自测平台小程序。 项目包含完整前后端源码和数据库文件 环境说明: 开发语言:Java JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 部署容器:tomcat7 小程序开发工具:hbuildx/微信开发者工具
YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;
内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。
新建 文本文档.docx
hw06
3. Kafka入门-安装与基本命令
燃气管道施工资质和特种设备安装改造维修委托函.docx
AI大模型研究相关报告
lab02
仅供学习使用,其他用途请购买正版资源AVPro Video Core Windows Edition 2.2.3 亲测可用的视频播放插件,能丝滑播放透明视频等.
建设工程消防验收现场指导意见表.docx
MVIMG_20241222_194113.jpg
五相电机双闭环矢量控制模型_采用邻近四矢量SVPWM_MATLAB_Simulink仿真模型包括: (1)原理说明文档(重要):包括扇区判断、矢量作用时间计算、矢量作用顺序及切时间计算、PWM波的生成; (2)输出部分仿真波形及仿真说明文档; (3)完整版仿真模型:包括邻近四矢量SVPWM模型和完整双闭环矢量控制Simulink模型; 资料介绍过程十分详细,零基础手把手教学,资料已经写的很清楚
YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;
项目包含完整前后端源码和数据库文件 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 服务器:tomcat7