文档章节

Java Axis Service 手动调用WebService 入参为NULL

iLinx
 iLinx
发布于 2016/08/16 14:19
字数 341
阅读 89
收藏 0

####环境前提:

  • axis 版本为 1.7
  • ws 采用 jws 发布

ws发布源码

import javax.xml.ws.Endpoint;
/**
 * 服务发布主线程
 */
public class MainPublisher {

	public static void main(String[] args) {
		Endpoint.publish("http://192.168.2.31:9022/services/auth",new HiveWevServer());  
		System.out.println("启动成功");
	}
}

ws服务

import javax.jws.WebService;
/**
 * Webservice Hive查询服务
 * @author linx
 */
@WebService
public class HiveWevServer {
	public String getAuthInfo(String input){
		System.out.println("====== 入参:"+input);
		return "";
	}
}

axis 调用代码

import javax.xml.namespace.QName;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
/**
 * WebService 接口调用
 * @author linx
 */
@org.springframework.stereotype.Service
public class WsHandlerService {
	/**
	 * 调用WebService 
	 */
	public String authPersionalInfo(String qid,String mobile,String name, String idCard){
		String result = "";
		try{			
			Service service = new Service(); 
			Call call = (Call) service.createCall(); 
			call.setTargetEndpointAddress("http://192.168.2.31:9022/services/auth?wsdl"); 
			call.setOperationName(new QName("http://oper.hive.com/", "getAuthInfo"));//
			call.addParameter("in0", org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN);
			call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);//
			result = (String)call.invoke(new Object[]{mobile}); 
		}catch(Exception e){
			e.printStackTrace();
			System.out.println("========Error==========");
		}
		return result;
	}
}

问题

由以上发布的WebService服务,通过axis以上方式调用,ws服务中getAuthInfo的方法始终收到入参为null

解决方法

以下是CSDN查到得有效方案,原贴:CSDN

结合SoapUI分析发现,如果jws通过annotation来发布,或者类似方式,通过axis调用,需要注意两点: 1)在call.setOperationName是必须通过Qname来制定namespaceURI 2)在设定参数时,不使用服务端定义的参数名,而是arg0~argN来定义,也不需制定namespaceURI,上述代码 call.addParameter(new QName(namespace, "TransNo"), XMLType.XSD_STRING, ParameterMode.IN); 修改为 call.addParameter("arg0", XMLType.XSD_STRING, ParameterMode.IN); 有几个参数,即设定几个。 提供参考,可测试试验一下。

© 著作权归作者所有

共有 人打赏支持
iLinx
粉丝 0
博文 13
码字总数 3089
作品 0
成都
程序员
Axis开发webservice的简单实例(转)

本文主要记录Axis开发webservice简单实例的详细过程和步骤: Axis官方网站:http://ws.apache.org/axis/ 可以在官网下载最新1.4的包:axis-bin-14.zip 将解压后的axis-14webapps下的axis目录...

颜建海
2014/03/20
0
0
axis2使用开发Webserver

、使用axis1.4调用webservice方法   前提条件:下载axis1.4包和tomcat服务器 ,并将axis文件夹复制到tomcat服务器的webapp文件夹中   这里我就说一下最简单的方法:   首先建立一个任意...

遇见T就不错过
2014/04/15
0
0
axis1 web Service 环境部署

Axis支持三种web service的部署和开发,分别为: 1、Dynamic Invocation Interface(DII) 2、Dynamic Proxy方式 3、Stubs方式 其中:约定AxisHOME为该TOMCATHOMEwebappsAxis目录 在eclipse环境...

继仕zac
2015/07/29
0
0
使用AXIS生成SOAP Web Service客户端的方法

需要准备的工具: JDK 1.5 或以上 AXIS 1.4 从http://labs.renren.com/apache-mirror//ws/axis/14/axis-bin-14.zip下载axis1.4,解压到某个目录(比如/media/tools/java/axis_1.4). 设置以下......

mj4738
2011/12/08
0
2
利用Apache AXIS 1 发布WebService

最近在论坛遇到很多朋友问AXIS发布webService的问题,这个问题已经回答了很多次了,现在特别发布一文章,说明AXIS 1的基本用法。 //很庆幸,CSDN的发文编辑器已经改版本,不那么难编辑了。 ...

张胜军
2013/03/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

linux 系统的运行级别

运行级别 运行级别 | 含义 0 关机 1 单用户模式,可以想象为windows 的安全模式,主要用于修复系统 2 不完全的命令模式,不含NFS服务 3 完全的命令行模式,就是标准的字符界面 4 系统保留 5 ...

Linux学习笔记
27分钟前
0
0
学习设计模式——命令模式

任何模式的出现,都是为了解决一些特定的场景的耦合问题,以达到对修改封闭,对扩展开放的效果。命令模式也不例外: 命令模式是为了解决命令的请求者和命令的实现者之间的耦合关系。 解决了这...

江左煤郎
34分钟前
2
0
字典树收集(非线程安全,后续做线程安全改进)

将500W个单词放进一个数据结构进行存储,然后进行快速比对,判断一个单词是不是这个500W单词之中的;来了一个单词前缀,给出500w个单词中有多少个单词是该前缀. 1、这个需求首先需要设计好数据结...

算法之名
昨天
8
0
GRASP设计模式

此文参考了这篇博客,建议读者阅读原文。 面向对象(Object-Oriented,OO)是当下软件开发的主流方法。在OO分析与设计中,我们首先从问题领域中抽象出领域模型,在领域模型中以适当的粒度归纳...

克虏伯
昨天
0
0
Coding and Paper Letter(四十)

资源整理。 1 Coding: 1.Tomislav Hengl撰写的非官方作者指南:Michael Gould•Wouter Gerritsma。 UnofficialGuide4Authors 2.R语言包rwrfhydro,社区贡献的工具箱,用于管理,分析和可视化...

胖胖雕
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部