O2OA (翱途) o2server 调用 webServices jaxws 样例

本文分两部分介绍如何在 o2server 服务器中调用 webServices(jaxws)服务.

第一部分介绍如何在tomcat上搭建一个webServices(jaxws)服务.

第二部分介绍如何在o2server服务器上来调用上面创建的服务.

O2OA (翱途)官网:http://www.o2oa.net

一、在tomcat上搭建一个webServices服务

介绍如何编写托管在 Apache Tomcat 服务器上运行的 Java XML Web 服务 (JAX-WS) 的 Java Web 应用程序.本教程重点介绍使客户端能够访问部署在 Tomcat 上的 Web 服务的项目配置.

  • 添加 JAX-WS 运行时依赖关系

请将以下依赖项添加到项目的 pom.xml 文件中:

    <dependency><groupId>com.sun.xml.ws</groupId><artifactId>jaxws-rt</artifactId><version>2.3.2</version></dependency>

  • 创建一个简单的 XML/SOAP Web 服务

创建一个简单的 Java XML Web 服务类,如下所示:

package net.o2oa.scratch.tomcat9.jaxws;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
@WebServicepublic class JaxwsEcho {    
@WebMethod@SOAPBinding(style = Style.DOCUMENT)public String sayHello(String name) {        return "Hello, " + name + "!";}
}

配置 webServices 服务点

<?xml version="1.0" encoding="UTF-8"?><endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0"><endpointname="JaxwsEcho"implementation="net.o2oa.scratch.tomcat9.jaxws.JaxwsEcho"url-pattern="/ws/echo"/></endpoints>

  • 配置 JAX-WS 侦听器和 Servlet

将以下 XML 代码添加到 Web 部署描述符文件 (web.xml):

    <listener><listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener    </listener-class></listener><servlet><servlet-name>JAXWSServlet</servlet-name><servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet   </servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>JAXWSServlet</servlet-name><url-pattern>/ws/*</url-pattern></servlet-mapping>

 
  • 查看接口

将以上程序进行打包,打包成scratch_tomcat9.war. 然后将文件复制到Tomcat9的webapps目录下,启动tomcat. 访问http://127.0.0.1:8080/sctatch_tomcat9/ws/echo,可以看到:

port.png

  • tomcat webSerivces 样例 scratch_tomcat9.war

二、o2server调用webServices(jaxws)

2.1 在流程中的"服务调用"活动中调用webService(jaxws)

invoke.png

填入以下参数

WSDL地址:

http://127.0.0.1:8080/scratch_tomcat9/ws/echo?wsdl

调用方法:

sayHello

参数脚本:
this.parameters.add("O2OA");响应脚本:
var txt = "webServices响应:";print(txt + this.response.get()[0]);
这样我们就完成了调用外部webServices(jaxws)的配置.

     流程运行至服务调用活动后服务端可以看到输出日志:

invoke_response.png

这样就正确的调用到了webServices(jaxws).

2.2  在脚本中调用soap(jaxws)方法访问webServices(jaxws)

我们同样可以在脚本中调用webServices(jaxws)服务,系统已经注入了服务对象以方便webServices(jaxws)调用.

在事件中通过调用this.services()对象可以获得调用webServices(jaxws)的封装对象.

scirpt_soap.png

var ObjectArray = Java.type("java.lang.Object[]");
var param = new ObjectArray(1);
param[0] = "O2OA";
var resp = this.service.soap("http://127.0.0.1:8080/scratch_tomcat9/ws/echo?wsdl", "sayHello", param);print("soap响应:" + resp[0])
 

流程运行至脚本所在的事件后可以看到输出日志:

soap_response.png

这样就正确的调用到了webServices(jaxws).

在服务中soap和jaxws这两个方法是等价的.

如果对方的webServices需要一些额外的数据才可以访问,比如需要认证信息,那么可以调用带请求头参数的方法进行访问.

2.3 在脚本中通过发送xml直接调用webServices(jaxws)

特殊使用场景下也可以直接发送xml的方式来调用webServices(jaxws).

soapXml.png

var xml ="<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:jax="http://jaxws.tomcat9.scratch.o2oa.net/">";
xml += "<soapenv:Header/>";
xml += "<soapenv:Body>";
xml += "<jax:sayHello>";
xml += "<arg0>张三</arg0>";
xml += "</jax:sayHello>";
xml += "</soapenv:Body>";
xml += "</soapenv:Envelope>";
var resp = this.service.soapXml("http://127.0.0.1:8080/scratch_tomcat9/ws/echo?wsdl", xml);
print("soap xml 响应:" + resp[0]);

直接向服务地址发送xml报文调用服务:

soapXml_response.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/66154.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TransNetR:用于多中心分布外测试的息肉分割的基于transformer的残差网络

TransNetR Transformer-based Residual Network for Polyp Segmentation with Multi-Center Out-of-Distribution Testing 阅读笔记 1. 论文名称 《TransNetR Transformer-based Residual Network for Polyp Segmentation with Multi-Center Out-of-Distribution Testing》 用…

考虑分布式电源的配电网无功优化问题研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

WebApIs 第五天

window对象 BOM&#xff08;浏览器对象模型&#xff09;定时器-延时函数JS执行机制location对象navigator对象histroy对象 本地存储 一.BOM&#xff08;浏览器对象模型&#xff09; ① BOM是浏览器对象模型 window 对象是一个全局对象&#xff0c;也可以说是JavaScript中的…

LangChain-ChatGLM在WIndows10下的部署

LangChain-ChatGLM在WIndows10下的部署 参考资料 1、LangChain ChatGLM2-6B 搭建个人专属知识库中的LangChain ChatGLM2-6B 构建知识库这一节&#xff1a;基本的逻辑和步骤是对的&#xff0c;但要根据Windows和现状做很多调整。 2、没有动过model_config.py中的“LORA_MOD…

微服务Ribbon-负载均衡策略和饥饿加载

目录 一、负载均衡策略 1.1 负载均衡策略介绍 1.2 自定义负载均衡策略 二、饥饿加载 &#xff08;笔记整理自bilibili黑马程序员课程&#xff09; 一、负载均衡策略 1.1 负载均衡策略介绍 负载均衡的规则都定义在IRule接口中&#xff0c;而IRule有很多不同的实现类&…

2023-arxiv-LLaMA: Open and Efficient Foundation Language Models

开放和高效的基础语言模型 Paper&#xff1a;https://arxiv.org/abs/2302.13971 Code: https://github.com/facebookresearch/llama 摘要 本文介绍了 LLaMA&#xff0c;这是⼀个包含 7B 到 65B 参数的基础语⾔模型的集合。作者在数万亿个令牌上训练模型&#xff0c;并表明可以…

gateway做token校验

本文使用springcloud的gateway做token校验 登录的本质&#xff1a;拿用户名和密码 换 token。 token会返回给浏览器&#xff08;存储&#xff09;&#xff0c;当访问的时候&#xff0c;携带token 发起请求。 token校验图 引入redis依赖 <dependency><groupId>or…

Mac 调试 ios safar

1. 打开Mac的 Safari 浏览器的“开发”菜单 运行 Safari 浏览器&#xff0c;然后依次选取“Safari 浏览器”>“偏好设置”&#xff0c;点按“高级”面板&#xff0c;然后勾选“在菜单栏中显示开发菜单”。 2. 开启IPhone的Safari调试模式 启用 Web 检查 功能&#xff0c;打…

基于chatgpt动手实现一个ai_translator

动手实现一个ai翻译 前言 最近在极客时间学习《AI 大模型应用开发实战营》&#xff0c;自己一边跟着学一边开发了一个进阶版本的 OpenAI-Translator&#xff0c;在这里简单记录下开发过程和心得体会&#xff0c;供有兴趣的同学参考&#xff1b; ai翻译程序 版本迭代 在学习…

ChatGPT: 提升程序员开发效率的秘密武器!

引言 在现代软件开发中&#xff0c;时间和效率显得尤为重要。程序员们需要在尽可能短的时间内编写高质量的代码&#xff0c;并使之处于状态良好的维护周期。为满足这些需求&#xff0c;人工智能技术逐渐成为软件开发的一项核心能力。ChatGPT作为自然语言生成模型中的佼佼者&am…

Spring之事务管理

文章目录 前言一、事务及其参数含义1.事务的四个特性2.事务的传播行为&#xff08;propagation&#xff09;3.事务隔离性4.事务的隔离级别&#xff08;ioslation&#xff09;5.timeout&#xff08;超时&#xff09;6.readOnly&#xff08;是否只读&#xff09;7.rollbackFor&am…

VSCode-Python传参数进行Debug

新建demo.py import argparse def parse_args():description "debug example" parser argparse.ArgumentParser(descriptiondescription) help "The path of address"parser.add_argument(--host,help help) parser.add_ar…