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)型适应度函数在梯度敏感性与数值鲁棒性上的工程权衡。内容覆盖种群初始化优化、收敛行为诊断、参数调优实践及向量化加速等真实项目环节,适用于算法工程师、智能优化 阅读详情

相关推荐

Codex API 直接集成指南:告别中转代理,构建稳定高效的 AI 应用

在 AI 应用开发中,API 集成是连接模型能力与业务逻辑的核心环节。其基本原理是通过 HTTP 协议,按照服务提供商定义的规范发送请求并解析响应,实现远程调用。标准化的 API 设计确保了跨平台和跨语言的互操作性,其技术价值在于提供了稳定、可控且可扩展的服务接入方式,是构建企业级智能应用的基础。在实际应用场景中,开发者常需集成如 Codex 这类聚合了多种大语言模型的平台,以调用诸如 DeepSeek 等先进模型。然而,部分开发者仍依赖过时的第三方中转代理工具,这不仅引入了单点故障和版本锁定的风险,还可能

weixin_28224217的博客 339

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

基于STM32平衡小车设计

随着智能硬件的发展,基于STM32的两轮智能平衡车作为一种新型的智能移动工具,具备较高的应用价值。本文旨在设计并实现一款基于STM32微控制器的智能平衡车系统,提升其稳定性和操控性,探索如何通过传感器数据和控制算法实现精确平衡控制。 本设计基于STM32微控制器,选择了STM32F103系列作为核心控制器,具有足够的处理能力和丰富的外设接口。系统通过MPU6050传感器获取三轴加速度和三轴陀螺仪数据,实现实时姿态检测。电机驱动部分采用合适的驱动模块,能够控制两个直流电机,并支持PWM调速。设计中还包括OL

m0_74026776的博客 2730

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

SC-FDMA

<br />SC-FDMA(Single-carrier Frequency-Division Multiple Access,單載波分頻多工),是LTE的上行鏈路的主流多址。<br />SC-FDMA是單波載(Single-carrier),與OFDMA相比之下具有的較低的PAPR(峰值/平均功率比,peak-to-average power ratio),比多載波的PAPR低1-3dB左右(PAPR是由于多載波在频域叠加引起)。更低的PAPR可以使行動終端(mobile terminal)在發送功效方面

jod的专栏 3299

Openharmony 命令行工具hdc的获取与安装

OpenHarmony实战:命令行工具hdc安装应用指南_hdc工具-优快云博客t=N7T8。

Devlin_的博客 1万+

用Apache AXIS 开发 Web Services Step By Step

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

beckrabbit的专栏 2131

保姆级教程:RK3588部署yolo目标检测模型

RK3588部署yolo目标检测模型非常详细的保姆级教程

ling913的专栏 5487

Eclipse step by step To Create webservice

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

weixin_34174132的博客 428

c# U盘禁用---守护进程(插入,拔出,卸载等操作)

一、简介 传统的对U盘禁用,我们多采用修改注册表的方式,详情参考:https://blog.youkuaiyun.com/qq_25372599/article/details/79815407;本文将介绍一种其他的方式–后台守护程序。其原理非常简单:当守护程序检测到U盘的插入信号,我们自动卸载U盘,致使系统无法识别U盘,达到禁用U盘的效果。 二、程序设计 2.1 变量定义 strin...

星星之火燃亮码空 2846

C++多线程 task--std::promise和std::future

本文主要讲解C++11/14/17中所提供的应用于多线程编程中的Task机制。Task可由如下几部分取得而本文主要讲解std::promise和std::future相关的内容。std::promise和std::future通过一个数据管道进行交流,可以将std::promise看作生产者,std::future看作消费者,其两者形成如下的方式交互std::promise本身是一个模版类,通过std::promise可以像数据管道中设置value,异常和相应的通知信息。std::promise提供了如下接

qls315的博客 1818

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

深度解读 ABAP CDS View 中的 @Analytics.dataCategory: #FACT 注解

注解在 ABAP CDS View 中具有重要意义。它不仅定义了当前视图在数据模型中的角色,还为后续的分析和报告奠定了基础。在实际开发中,通过合理使用这一注解,可以显著提升数据模型的可用性和系统性能。无论是简单的 KPI 展示还是复杂的多维分析,这一注解都能发挥关键作用。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 787

Axis2中文手册

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

偶一二 2434

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

用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

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

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

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的博客 274

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的博客 231

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、付费专栏及课程。

余额充值