Axis创建自己的WebService--Step by Step 续

MoveIt! PlanningScene核心原理与C++工程实践 PlanningScene是ROS机器人运动规划系统的物理世界镜像与状态验证中枢,其本质是融合机器人运动学模型、实时关节状态与动态环境障碍物的统一场景表示。它通过分层碰撞检测(自碰撞、分组检测、接触点分析)、可编程免检矩阵(ACM)和多级约束验证(位置/朝向/可行性),实现对机器人姿态合法性的毫秒级判定。技术价值在于 bridging 算法理想与产线现实——支撑实时避障、力控闭环、多传感器融合等关键能力。典型应用场景包括工业机械臂精密装配、协作焊接、传送带动态抓取等强实时、高可靠性需求系统。本教程聚焦C++ 阅读详情

      使用工具自动生成代码,虽然比较快捷,但是产生的代码一大堆,一般人很难看懂里面的原理。而且根本不需要那么多东西在里面。只需要很简单的一个Service类,然后配置一下server-config.xml文件就可以了。
    后面将根据一个例子简单说明一下过程。

  • 1.编写WS服务接口,实现类,并根据需要编写作为参数的类。

服务接口:

package  com.lucas.busin.qdii.webservice;

public   interface  IQDIIWebService  {
    
public java.lang.String[] getTickers();

    
public String updatePoolDetail(QDIIStockPoolDetail detail);

    
public String updatePoolDetails(QDIIStockPoolDetail[] details);
}

服务实现类:

package  com.lucas.busin.qdii.webservice;

import  org.apache.log4j.Logger;

/**
 * Author:Lucas
 * Date: 2008-3-21
 * Time: 23:22:56
 
*/

public   class  QDIIWebServiceImpl  implements  IQDIIWebService  {
    
private static final Logger LOGGER = Logger.getLogger(QDIIWebServiceImpl.class);

    
public String[] getTickers(){
        
// 在这里实现业务逻辑        

        LOGGER.info(
"***************************************");
        LOGGER.info(
"QDIIWebService: getTickers() successful!!!");
        LOGGER.info(
"ticker[] size:" + tickers.length);
        LOGGER.info(
"***************************************");

        
return tickers;
    }


    
public String updatePoolDetail(QDIIStockPoolDetail detail) {        
        
// 在这里实现业务逻辑

        LOGGER.info(
"***************************************");
        LOGGER.info(
"QDIIWebService: updatePoolDetail(QDIIStockPoolDetail) successful!!!");
        LOGGER.info(
"Ticker:" + detail.getLocalTicker());
        LOGGER.info(
"***************************************");

        
return "updatePoolDetail successful!!!";
    }


    
public String updatePoolDetails(QDIIStockPoolDetail[] details) {
        
for(QDIIStockPoolDetail detail : details) {
            updatePoolDetail(detail);
        }

        LOGGER.info(
"***************************************");
        LOGGER.info(
"QDIIWebService: updatePoolDetails(QDIIStockPoolDetail[]) successful!!!");
        LOGGER.info(
"Array size:" + details.length);
        LOGGER.info(
"***************************************");

        
return "updatePoolDetails successful!!!";
    }

}

使用到的参数类QDIIStockPoolDetail:

package  com.lucas.busin.qdii.webservice;

import  java.io.Serializable;

public   class  QDIIStockPoolDetail   implements  Serializable  {
    
private java.lang.Double priceLocal;

    
private java.lang.Double mktCap;

    
public Double getPriceLocal() {
        
return priceLocal;
    }


    
public void setPriceLocal(Double priceLocal) {
        
this.priceLocal=priceLocal;
    }


    
public Double getMktCap() {
        
return mktCap;
    }


    
public void setMktCap(Double mktCap) {
        
this.mktCap=mktCap;
    }

}
  • 2.编写server-config.wsdd文件
    <? xml version="1.0" encoding="UTF-8" ?>

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

      
    < globalConfiguration >

        
    < parameter  name ="sendMultiRefs"  value ="true" />

        
    < parameter  name ="disablePrettyXML"  value ="true" />

        
    < parameter  name ="dotNetSoapEncFix"  value ="true" />

        
    < parameter  name ="enableNamespacePrefixOptimization"  value ="false" />

        
    < parameter  name ="sendXMLDeclaration"  value ="true" />

        
    < parameter  name ="sendXsiTypes"  value ="true" />

      
    </ globalConfiguration >

      
    < handler  name ="LocalResponder"  type ="java:org.apache.axis.transport.local.LocalResponder" />

      
    < transport  name ="http" >

        
    < requestFlow >

          
    < handler  type ="java:org.apache.axis.handlers.http.URLMapper" />

          
    < handler  type ="java:org.apache.axis.handlers.http.HTTPAuthHandler" />

        
    </ requestFlow >

        
    < parameter  name ="qs:list"  value ="org.apache.axis.transport.http.QSListHandler" />

        
    < parameter  name ="qs:wsdl"  value ="org.apache.axis.transport.http.QSWSDLHandler" />

        
    < parameter  name ="qs.method"  value ="org.apache.axis.transport.http.QSMethodHandler" />

      
    </ transport >

      
    < transport  name ="local" >

            
    < responseFlow >

                
    < handler  type ="LocalResponder" />

            
    </ responseFlow >

      
    </ transport >

      
    < service  name ="QDIIWebService"  provider ="java:RPC" >

        
    < parameter  name ="className"  value ="com.sinitek.busin.qdii.webservice.QDIIWebServiceImpl" />

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

        
    < parameter  name ="wsdlServiceElement"  value ="QDIIWebService" />

        
    < parameter  name ="wsdlTargetNamespace"  value ="urn:QDIIWebService" />

        
    < beanMapping

            
    languageSpecificType ="java:com.sinitek.busin.qdii.webservice.QDIIStockPoolDetail"

            qname
    ="ns1:QDIIStockPoolDetail"

            xmlns:ns1
    ="urn:QDIIWebService" />

      
    </ service >

    </ deployment >
  • className:对应服务实现类
  • allowedMethods:*表示允许服务类的所有方法暴露给客户端
  • wsdlServiceElement:对应客户端看到的服务类名--比如EXCEL中用Web Service References引入WebService后看到的服务类名称
  • wsdlServicePort:
  • wsdlPortType:
  • wsdlTargetNamespace:对应用户的命名空间
  • scope:比如Session

对于自己定义的参数类,需要序列化:比如上面的beanMapping:

  • languageSpecificType:参数类的全路径
  • qname:xml 命名空间:类名
  • xmlns:定义xml的命名空间

下面还有几个序列化的例子:

< typeMapping 
      
      
deserializer ="org.apache.axis.encoding.ser.BeanDeserializerFactory"  
      
      encodingStyle
="http://schemas.xmlsoap.org/soap/encoding/"  

      serializer
="org.apache.axis.encoding.ser.BeanSerializerFactory"  

      type
="java:com.sinitek.busin.qdii.webservice.QDIIStockPoolDetail"  

      qname
="ns1:QDIIStockPoolDetail"  

      xmlns:ns1
="urn:QDIIWebService" />

< arrayMapping 
   
      
innerType ="ns2:QDIIStockPoolDetail"  
    
      languageSpecificType
="java:com.sinitek.busin.qdii.webservice.QDIIStockPoolDetail[]"  

      qname
="ns2:ArrayOfQDIIStockPoolDetail"

      xmlns:ns2
="urn:QDIIWebService" />

< arrayMapping 

       
innerType ="soapenc:string"

       languageSpecificType
="java:java.lang.String[]"  

       qname
="ns3:ArrayOf_soapenc_string"  

       xmlns:ns3
="urn:QDIIWebService"

       xmlns:soapenc
="http://schemas.xmlsoap.org/soap/encoding/" />

 

  • 3.以上文件准备好以后,启动web服务器。通过网址http://localhost:port/services查看发布的web服务。
  • 4.访问web service
  • 4.1使用vb访问:通过web service references找到服务
  • 4.2使用java访问:如上一篇所讲,通过wsdl文件自动生成然后使用。
N皇后问题的遗传算法Python实战:从编码到收敛分析 遗传算法(GA)是一种基于自然选择原理的通用优化框架,其核心在于染色体编码、适应度评估、选择与变异机制的协同作用。在组合优化问题中,如何设计符合约束结构的编码方式、避免无效解生成,并构建具备区分度与数值稳定性的适应度函数,直接决定算法能否高效收敛。本文以经典N皇后问题为载体,深入剖析纯变异策略的有效性、行号数组编码的约束内嵌优势,以及1/(q+0.001)型适应度函数在梯度敏感性与数值鲁棒性上的工程权衡。内容覆盖种群初始化优化、收敛行为诊断、参数调优实践及向量化加速等真实项目环节,适用于算法工程师、智能优化 阅读详情

相关推荐

CTF-MISC:BUUCTF练习汇总(1-25题,不包括签到题)

解题思路:该题比较基础,wireshark打开过滤HTTP流量包,追踪HTTP流后可以看到base64密文,解密后得到jpg图片,打开图片即可看到flag,在线OCR识别即可提取出flag值。解题思路:zip压缩包解压需要密码,图片中的盲文为解压的密码,解压后得到MP3音频文件,内容为典型的摩斯密码;解题思路:由题目可以为LSB隐写,使用StegSolve打开图片查看最低有效位得到PNG信息,另存为图片后发现是二维码,扫描后即可得到flag。对应摩斯电码为:-.-. - …-. .-- .–. . …

燕麦葡萄干的博客 1万+

Axis创建自己的WebService--Step by Step

随着SOA的流行,webservice开发也变得相当的热门。许多企业都将自己的网站迁移到soa的架构。今天我们来一起体验一下通过axis来创建、发布和调用webservice的过程。如果大家不太了解SOA请访问下面网址(http://www-900.ibm.com/cn/software/rational/solution/tech/soa_design.shtml)        在开始之前

daniel112的专栏 1163

Haystack框架实战:从零构建企业级智能问答系统

自然语言处理(NLP)技术通过让计算机理解和生成人类语言,正在深刻改变信息检索与交互方式。其核心原理在于将文本转化为机器可处理的向量表示,并通过语义相似度计算实现精准匹配。这一技术价值在于能够从海量非结构化数据中快速提取精准信息,大幅提升知识获取效率。在工程实践中,检索增强生成(RAG)架构结合了密集向量检索与大语言模型生成能力,成为构建智能问答、知识库助手等应用的主流方案。该架构通过将用户查询与文档库进行语义匹配,并为大语言模型提供精准上下文,有效提升了回答的准确性与可追溯性。本文以Haystack这一生

weixin_42521032的博客 577

eclipse 使用axis2 wizards 开发部署webserver step by step

首次使用axis2 wizards,记下部署过程备忘。 1、下载Axis2_Codegen_Wizard_1.3.0安Axis2_Service_Archiver_1.3.02、重启elipse查看aixs2 wizards 安装成功3、编写服务类 4、根据服务类创建wsdl选择Axis2 Code Generator工具,选择Generate a

不精通则死 1060

dxf-viewer 查看器

dxf-viewer SDK 的示例,它是一个基于 Three.js 和 Vue3 构建的基于 WebGL 的 BIM 模型查看器。它用于查看 DWG/DXF/PDF 文件。面积测量 - 角度测量 -标记。

qq_25547755的博客 866

修改注册表导致开机时电脑显示“无法登陆到你的账户”的问题解决方案

1.问题描述:开机电脑显示“无法登陆到你的账户:通常可以通过从你的账户注销,然后重新登陆来解决问题,如果不立即注销,你创建的任何文件或进行的任何更改都将会丢失。” 2.问题原因:想要修改cmd中的用户名(红色部分),修改了注册表,重启时出现问题。 3.问题解决: win+R输入cmd,确定进入注册表界面,将下面的地址复制进地址栏(你也可以自己按目录查找),双击ProfileImage...

qq_33835957的博客 7万+

用Apache AXIS 开发 Web Services Step By Step

说明及约定:    本文主要描述如何使用Apache开源项目Axis提供的API来实现Web Services。本文中的提到的例子只为了方便本文的描述而提出,有不妥之处请见谅。    本文的读者应有JAVA web 应用开发基础。应该具有看过WSDL,SOAP,XML等的基本规范。熟悉Eclipse+MyEclipse开发环境。    本文可以随意转载使用,但是要保留作者的署名。一

beckrabbit的专栏 2131

OpenClaw 开机自启配置:Windows/macOS/Linux 全平台技术指南

OpenClaw 开机自启全平台配置指南 本文提供了在Windows、macOS和Linux系统上配置OpenClaw开机自启的完整技术方案。主要内容包括: Windows配置:提供三种方法(Windows服务、任务计划程序、启动文件夹),详细说明服务脚本创建、服务注册和测试流程 macOS配置:使用LaunchAgent实现开机自启,包含配置文件创建和加载方法 Linux配置:通过systemd服务实现,包括服务单元文件创建和启用步骤 系统要求:明确硬件(64位CPU/4GB内存)和软件(各平台操作系统版

一键难忘的博客 2993

Eclipse step by step To Create webservice

为什么80%的码农都做不了架构师?>>> ...

weixin_34174132的博客 428

TSN新技术,让您的设备网络“更实时、更确定、更安全”

近日,工业和信息化部发布了2022年第23号公告,批准发布行业标准YD/T 4134-2022《工业互联网时间敏感网络需求及场景》。该标准是国内首个时间敏感网络(TSN)技术标准,标志着我国TSN技术标准体系建设迈出了坚实的一步,对构建工业互联网网络标准体系具有重要意义。TSN源于Time-Sensitive Networking的缩写,中文译名为时间敏感网络,因其具备的确定性和微秒级交互特性,受到了对实时性要求较高的工业控制领域的关注。TSN与工业数智化。

创龙,嵌入式一体化解决方案商 771

OpenCV-Python实战(11)——OpenCV轮廓检测相关应用

在计算机视觉领域,轮廓通常指图像中对象边界的一系列点。因此,轮廓通常描述了对象边界的关键信息,包含了有关对象形状的主要信息,该信息可用于形状分析与对象检测和识别。在本文中,我们将学习如何利用获取到的轮廓,进行形状分析以及对象检测和识别。

盼小辉丶的博客 1万+

My Step to install Axis 2

1、jdk 1.5.0_06,tomcat 5.5.23,从http://ws.apache.org 下载 axis2-1.4-bin压缩包 2、解压,将webapp目录下文件copy至tomcat\webapps\axix目录下, 此时axix\WEB-INF\下没有lib目录,建立,并从所下载的axis包中lib下所有jar文件copy至 此lib目录 3、启动tomcat,访问http:/...

stormzhange 124

基于DFT的滤波系列:加窗滤波的 Matlab 实现

在实际应用中,你可以尝试不同类型的窗函数(如汉宁窗、汉明窗等)以及不同的滤波参数来获得所需的滤波效果。此外,还可以进一步了解 DFT 和窗函数的原理,以及其他数字信号处理技术的应用。加窗滤波是一种常用的数字信号处理技术,它通过在频域上应用窗函数来改善信号的频谱特性。我们通过定义输入信号、应用窗函数、进行 DFT 和逆 DFT,实现了滤波过程,并通过绘图进行了可视化。在频域上进行加窗滤波的关键是将窗函数应用于 DFT 的结果。首先,我们需要定义一个输入信号,这里我们使用一个简单的正弦波作为示例。

m0_47037246的博客 463

Axis2中文手册

转自http://tenn.javaeye.com/blog/100736-----------------------------------------以下为转载文章-------------------------------------------------Axis2中文手册 声明:本文可以算作Axis2用户手册的翻译,但是翻译后的文本是经过作者理解写出来的,可能有些偏差,欢

偶一二 2434

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

用axis2+Tomcat5.5+Eclipse3.2部署和访问Web服务

一、环境准备 使用Axis来开发Web services 需要准备 web 服务器,Axis API。本文使用的Web container 是Tomcat5.5, Axis API 的版本为Axis2_1.1.1。 1.1软件下载准备 Tomcat下载地址:http://tomcat.apache.org/download-55.cgi#5.5.20 Axis标准包: http://ap...

java的涟漪 125

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

ws技术

1、生成wsdl文件(参考1:解析Web接口描述语言WSDL,参考2:[王洪伟]用 Eclipse3.2+MyEclipse5.5M1+axis2_1.1.1+tomcat5.5 开发Web Services.doc ),解决办法:可以用myEclipse 生成wsdl文件,在XMLSpy中一样可以。 2、打包(axis2 和 ant):服务端:(直接写个bat文件,粘贴进入就可以)D:...

love2000118的专栏 463

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

web service 小结。

What is SOAP? SOAP is an XML-based communication protocol and encoding format for inter-application communication.  What is Axis? Axis is essentially a SOAP engine -- a framework for co

For that dream 883

攻克机器人导航Sim2Real难题:高保真仿真与强化学习实践指南

在机器人自主导航领域,强化学习(RL)作为一种通过交互试错来学习最优策略的机器学习范式,为解决复杂环境下的路径规划与决策问题提供了强大工具。其核心原理是智能体根据环境状态采取行动,并从环境反馈的奖励信号中学习,最终目标是最大化累积奖励。这项技术的核心价值在于能够处理传统基于规则或模型的方法难以应对的动态、不确定性环境。然而,其成功应用面临一个关键挑战:仿真到现实(Sim2Real)的迁移鸿沟。由于仿真环境中的物理引擎失真和传感器建模理想化,在虚拟世界训练出的策略往往难以适应真实世界的复杂性,如传感器噪声和地

weixin_34174422的博客 430

梯度下降原理与实战:从损失函数到PyTorch优化

梯度下降是机器学习中参数优化的核心算法,本质是在高维非凸损失函数地形中,利用局部梯度信息迭代逼近最优解的数值优化方法。其原理基于微积分中的方向导数与一阶近似,通过负梯度方向更新模型参数,以最小化预测误差。技术价值在于规避了解析解不可行性与暴力搜索的计算灾难,成为深度学习框架(如PyTorch、TensorFlow)的默认优化基石。典型应用场景涵盖线性回归、逻辑回归、神经网络训练等,尤其依赖学习率调度、mini-batch策略与自适应优化器(如Adam)提升收敛稳定性。本文结合NumPy手写实现与PyTorc

weixin_30482181的博客 407

AI如何重塑JIT编译器:从传统启发式到数据驱动的智能优化

编译器优化是提升程序性能的核心技术,其原理是通过分析代码结构并应用一系列变换规则来生成更高效的机器码。传统JIT编译器依赖人工设计的启发式规则进行优化决策,但在编译时间与代码质量的权衡中常面临经济学困境。AI技术通过数据驱动学习改变了这一范式,能够从海量代码模式中自动发现最优优化策略,显著降低性能调优成本。在应用场景上,AI可作为决策器替代传统启发式规则,或作为优化器直接生成高效代码,为编译器带来智能化的自适应能力。本文聚焦于AI在JIT编译中的具体实践,通过构建AI辅助内联决策器的完整流程,展示如何将机器

weixin_30482181的博客 380

InnoDB 内存结构总览:Change Buffer、AHI 与 Log Buffer

本文系统梳理InnoDB内存结构中的ChangeBuffer、Adaptive Hash Index(AHI)与LogBuffer。ChangeBuffer缓存二级索引页不在内存时的变更,减少随机IO,仅在页加载时合并;聚簇索引修改立即执行,因数据本身不可延后。AHI基于高频等值查询自动构建哈希索引,加速定位,仅支持等值操作。LogBuffer为redo log内存缓冲,配合磁盘日志实现崩溃恢复。三者均服务于性能优化,其中ChangeBuffer与AHI共享BufferPool空间,而LogBuffer独立

bksczm的博客 270

Spring AI + GPT-5.5 + Ollama 配置教程:Base URL、超时与流式调用

由于不同 Spring AI、Spring Boot 小版本之间仍可能存在差异,创建项目时应检查 Spring Initializr、Spring AI BOM 和官方兼容矩阵,不要直接复制旧教程中的 Starter 名称和版本号。多人项目最好隔离不同客户端,并在脱敏前提下记录最终 URL、状态码、请求耗时、请求 ID 和模型 ID。Spring AI 接入模型 API,至少要同时确认 Starter、Base URL、请求路径、API Key、模型 ID、连接超时、读取超时和流式客户端这 8 项。

2601_95893075的博客 230

V8 机制、手写核心函数与 TypeScript 类型体操

或固定初始化(如数组先定长、对象先给全字段)保持类型与形状稳定;这些都比"换框架"更基础。只能处理纯数据(丢函数、Date、RegExp、循环引用报错)。生产级深拷贝要处理:原始值短路、循环引用、V8(Chrome / Node 的 JS 引擎)不是"解释一行跑一行"那么简单,它用。图:V8 执行流程——解释执行 + 热点优化,优化失败会 Deopt 回退。JS 内存自动管理,但"自动"不等于"不会漏"。是"固定间隔最多执行一次"。手写 Promise 是"懂异步"的试金石。是"停下后才执行最后一次",

qq_38468358的博客 346

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

要努力去发光,而不是被照亮~ 125

Spring Boot 数据源与 MyBatis(-Plus) 自定义配置详解

本文详解 Spring Boot 中单数据源环境下 HikariCP 与 MyBatis-Plus 的自定义配置。通过手动声明 SqlSessionFactory,实现下划线转驼峰、日志输出、一级缓存策略等精细化控制。结合 HikariCP 核心参数调优(如最大连接数、连接生命周期),确保高性能与稳定性。适用于仅需访问单一数据库的场景,避免多数据源复杂性,兼顾性能与可维护性。

BADAO_LIUMANG_QIZHI的博客 196
上一篇: VB基本语法
下一篇: Cron Expression
daniel112
博客等级 码龄21年 24粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值