文档章节

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

iLinx
 iLinx
发布于 2016/08/16 14:19
字数 341
阅读 75
收藏 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

没有更多内容

加载失败,请刷新页面

加载更多

下一页

python3.6 取整除法

python3.6 中取整除法运算逻辑如下: d 非零,那么商 q 满足这样的关系: a = qd + r ,且0 ≤ r n1=7//3#7 = 3*2 +1n2=-6.1//3#-7 = 3*(-3)+2'{},{}'.format(n1,n2) 从运行结果可以...

colinux
33分钟前
3
0
阶段总结——用虚拟机搭建一个高可用负载均衡集群架构

[toc] linux基本知识已经介绍完,现有一个业务需要操作,通过对这个项目的操作,可以复习、总结、巩固之前的知识点; ** 用13台虚拟机搭建一个高可用负载均衡集群架构出来,并运行三个站点,...

feng-01
36分钟前
0
0
mysql 设置utf8字符集 (CentOS)

1.查看数据库及mysql应用目前使用的编码方式 (1)链接mysql 客户端 (2)执行:status 结果: 2.修改mysql 应用的字符编码(server characterset ) (1)打开配置文件:vim /etc/mysql/my...

qimh
36分钟前
0
0
windows无法格式化u盘解决方法

1。点开始-运行-输入cmd-format f: /fs: fat32 (这里f:是指U盘所在盘符) 这个格式化会很慢 请耐心等待

大灰狼wow
48分钟前
0
0
MySql 8.0连接失败

原来,MySql 8.0.11 换了新的身份验证插件(caching_sha2_password), 原来的身份验证插件为(mysql_native_password)。而客户端工具Navicat Premium12 中找不到新的身份验证插件(caching_s...

放飞E梦想O
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部